11.2.2 消息处理函数(4)
试一试:简单的Windows API程序
因为已经编写了WinMain()函数和处理消息的WindowProc()函数,所以现在完全可以创建仅使用Windows API的Windows程序的完整源文件。当然,需要为该程序创建一个项目,但不是像迄今一直所做的那样选择Win32控制台应用程序,而应该使用Win32项目模板创建该项目。应该选择将其创建成一个空项目,然后添加容纳代码的Ex11_01.cpp文件。
- // Ex11_01.cpp Native windows program to display text in a window
- #include <windows.h>
- LRESULT CALLBACK WindowProc(HWND hWnd, UINT message,
- WPARAM wParam, LPARAM lParam);
- // Insert code for WinMain() here (Listing OFWIN_1)
- // Insert code for WindowProc() here (Listing OFWIN_2)
如果编译并执行该示例,则得到如图11-4所示的窗口。

注意,该窗口有许多不需要通过编程(www.cppentry.com)来管理的、由操作系统提供的属性。该窗口的边框可以拖动以改变窗口大小,整个窗口也可以在屏幕上四处移动。最大化和最小化按钮也能工作。当然,所有这些动作都会对该程序产生影响。每当我们改变窗口的位置或大小时,就有一条WM_PAINT消息进入消息队列,程序就必须重画工作区,但所有绘制和改变窗口本身的工作都是由Windows完成的。
由于在WindowClass结构中指定的选项,因此系统菜单和关闭按钮也是本窗口的标准功能,管理它们的工作仍然是由Windows负责的。唯一由此产生的对程序的其他作用是关闭窗口时WM_DESTROY消息的传递-- 在前面已讨论过这一点。