⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 untitled-06.txt

📁 mfc 教程
💻 TXT
字号:
的开始即被调用的原因。要注意 WNDCLASS类型窗口类与 C+十中的窗口类不一样。为了
避免混淆,我将在本书中用术语WNDCLASS来指代用RegisterClass注册的类,用术语“窗口
类”指代从 MFC的  CWnd类派生出的  C+十类。
    一旦WNDCLASS被注册,WinMain将调用最重要的Createwindow函数来生成应用程序
的窗口。传递给Createwindow的第1个参数是WNDCLASS的名字,窗口将由此生成窗口。
第2个参数是将在窗口的标题栏中显示的文本。第3个参数指定窗口样式。WS_OVER-
LAPPEDWINDOW是一个常用的样式,它生成一个顶层窗口,该窗口带有可调整大小的边框。
一个标题栏、一个系统菜单及最小化、最大化和关闭窗口按钮。
    接下来的4个参数指定了窗口的初始位置和大小。CW_USEDEFAULT用来告诉
Windows使用默认值。最后4个参数依次指定:该窗口的父窗口的句柄(I]3VND_DESKTOP
用作应用程序的主窗口的父窗口);如果有的话,与窗口关联的菜单的句柄;应用程序的实例
句柄(一个用来让程序员区分是程序自身还是模块DLL的值);以及一个指向特定应用程序
的窗口生成数据的指针。我可以轻松地用本书的一节来讨论Createwindow以及它的参数,
但是稍后您将看到,MFC将许多细节隐藏在类库中了。一个典型的MFC应用程序并不含有
WinMain函数(至少不是您能看到的),它也不调用RegisteIClass或Createwindow函数。
    由于生成时没使用WS.VISIBLE,所以CreatewindOw生成的窗口在屏幕上最初是不可见
的。(如果使用WS.VISIBLE,则它应该在Createwindow函数的调用中与WS_OVERLAPPED.
WINDOW结合应用。)因此在WinMain中,紧随Createwindow后面的是对ShOWWindow和
Updatewindow函数的调用,它们使窗口可见并确保WM_PAINT消息处理程序立刻被调用。
    接下来是消息循环。为了检索并调度消息,WinMain执行一个简单的反复调用GetMes.
sage、TranslateMessage和DlspatchMessage这3个API函数的while循环语句。OtMessage检查
消息队列。如果某个消息是有效的,则它将从队列中被删除并复制到msg,否则,GetMessag6
将停留在消息队列上直到消息有效。msg是结构MSG的一个实例,其字段包含相关的消息
参数,例如消息ID和消息被放置在队列中的时间。TranslateMessage函数将一个指示字符键
的键盘消息转换为更容易使用的WM.CHAR消息,DispatchMessop函数则将消息发送给窗
口过程。消息循环一直执行到 GetMessage函数返回 0值时结束,而此情形只有在 WM—QUry
消息从消息队列中被检索到时才发生。这时WinMain结束,程序终止运行。
    由DispatchMessage函数调度的消息将生成对窗口过程WndProc的调用。图1.2中的示
例程序只是处理了两个消息类型:   WM_PAINT和  WM_DESTROY;所有其他消息被传递给了
DetwindowProc函数进行默认处理。在switch-case块中将检查message参数传递来的消息ID,
并且执行相应的消息处理程序。在绘制开始以前,WM_PAINT处理程序将调用API函数
BeginPaint来获得一个设备环境句柄,当绘制完成后,API函数EndPaint将释放该句柄。在两
函数之间,API函数ElliPse绘制了一个200像素宽、100像素高的椭圆。设备环境句柄是一
个具有奥妙功能的东西,它允许windows应用程序在屏幕上绘图。没有它,像Ellope这样的
函数就不能工作。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -