WEB开发网
开发学院软件开发VC Visual C++ MFC简明教程(2) 阅读

Visual C++ MFC简明教程(2)

 2010-03-28 20:34:47 来源:WEB开发网   
核心提示:窗口对象MFC 定义了两个类型的窗口: 1) 框架窗口,它是一个全功能的窗口,Visual C++ MFC简明教程(2)(4),可以改变大小、最小化、最大化等等; 2) 对话框窗口,它不能改变大小,所以它只在窗口中建立了一个静态文本控制,见第35至40行,框架窗口是典型的主应用程序窗口,在下面的代码中

窗口对象

MFC 定义了两个类型的窗口: 1) 框架窗口,它是一个全功能的窗口,可以改变大小、最小化、最大化等等; 2) 对话框窗口,它不能改变大小。框架窗口是典型的主应用程序窗口。

在下面的代码中,从 CFrameWnd 中继承了一个新的类 CHelloWindow:

11 // Declare the main window class
12 class CHelloWindow : public CFrameWnd
13 {
14 CStatic* cs;
15 public:
16 CHelloWindow();
17 };

它包括一个新的构造函数,同时还有一个指向程序中所使用的唯一用户界面控制的数据成员。你多建立的每个应用程序在主窗口中都会有唯一的一组控制。因此,继承类将有一个重载的构造函数以用来建立主窗口所需要的所有控制。典型情况下,该类会包含有一个析构函数以便在窗口关闭时来删除他们。我们这里没有使用析构函数。在第四讲中,我们将会看到继承窗口类也会说明一个消息处理函数来处理这些控制在响应用户事件所产生的消息。

典型地,一个应用程序将有一个主应用程序窗口。因此,CHelloApp 应用程序类定义了一个名为 m_pMainWnd 成员变量来指向主窗口。为了建立该程序的主窗口,InitInstance 函数(第18至26行)建立了一个 CHelloWindow 事例,并使用 m_pMainWnd 来指向一个新的窗口。我们的 CHelloWindow 对象是在第22行建立的:

18 // The InitInstance function is called each
19 // time the application first executes.
20 BOOL CHelloApp::InitInstance()
21 {
22 m_pMainWnd = new CHelloWindow();
23 m_pMainWnd->ShowWindow(m_nCmdShow);
24 m_pMainWnd->UpdateWindow();
25 return TRUE;
26 }

只建立一个简单的框架窗口是不够的。还要确保窗口能正确地出现在屏幕上。首先,代码必须要调用窗口的 ShowWindow 函数以使窗口出现在屏幕上(第23行)。其次,程序必须要调用 UpdateWindow 函数来确保窗口中的每个控制和输出能正确地出现在屏幕上(第24行)。

你可能奇怪,ShowWindow 和 UpdateWindow 函数是在哪儿定义的。例如,如果你要查看以便了解它们,你可能要查看 MFC 的帮助文件中的 CFrameWnd 定义部分。但是 CFrameWnd 中并不包含有这些成员函数。CFrameWnd 是从 CWnd 类继承来的。你可以查看 MFC 文档中的 CWnd,你会发现它包含有200多个不同的成员函数。显然,你不能在几分钟内掌握这些函数,但是你可以掌握其中的几个,如 ShowWindow 和UpdateWindow。

现在让我们花几分钟来看一下 MFC 帮助文件中的 CWnd::ShowWindow 函数。为此,你你可以单击帮助文件中的 Search 按钮,并输入“ShowWindow”。找到后,你会注意到,ShowWindow 只有一个参数,你可以设置不同的参数值。我们把它设置成我们程序中 CHelloApp 的数据成员变量 m_nCmdShow (第23行)。m_nCmdShow 变量是用来初始化应用程序启动的窗口显示方式的。例如,用户可能在程序管理器中启动应用程序,并可通过应用程序属性对话框来告知程序管理器应用程序在启动时要保持最小化状态。m_nCmdShow 变量将被设置成 SW_SHOWMINIMIZED,并且应用程序会以图标的形式来启动,也就是说,程序启动后,是一个代表该程序的图标。m_nCmdShow 变量是一种外界与应用程序通讯的方式。如果你愿意,你可以用不同的 m_nCmdShow 值来试验 ShowWindow 的效果。但要重新编译程序才能看到效果。

第22行是初始化窗口。它为调用 new 函数分配内存。在这一点上,程序在执行时会调用CHelloWindow的构造函数。该构造函数在每次带类的事例被分配时都要调用。在窗口构造函数的内部,窗口必须建立它自己。它是通过调用 CFrameWnd 的 Create 成员函数来实现的(第31行):

27 // The constructor for the window class
28 CHelloWindow::CHelloWindow()
29 {
30 // Create the window itself
31 Create(NULL,
32 "Hello World!",
33 WS_OVERLAPPEDWINDOW,
34 CRect(0,0,200,200));

建立函数共传递了四个参数。通过查看 MFC 文档,你可以了解不同类型。NULL 参数表示使用缺省的类名。第二个参数为出现在窗口标题栏上的标题。第三个参数为窗口的类型属性。该程序使用了正常的、可覆盖类型的窗口。在下一讲中将详细介绍类型属性。第四个参数指出窗口应该放在屏幕上的位置和大小,左上角为(0,0), 初始化大小为 200×200个象素。如果使用了 rectDefault,则 Windows 会为你自动放置窗口及大小。

因为我们的程序太简单了,所以它只在窗口中建立了一个静态文本控制。见第35至40行。下面将详细介绍。

上一页  1 2 3 4 5  下一页

Tags:Visual MFC 简明教程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接