第1章 Window s 编程基础 基于Windows 的编程方式有两种。一种是使用Windows 的API(Application Programming Interface,应用程序编程接口)函数,通常用C/C++语言按相应的程序框架进行编程。这些程序框架往往就程序应用提供相应的文档、范例和软件开发工具包(Software Development Kit,SDK),所以这种编程方式有时又称为SDK 方式。另一种是使用“封装”方式,例如 Visual C++的MFC 方式,它是将 SDK 中的绝大多数函数、数据等按C++“类”的形式进行封装,并提供相应的应用程序框架和编程操作。 事实上,无论是哪种编程方式,人们最关心的内容有三个:一是程序入口,二是窗口、资源等的创建和使用,三是键盘、鼠标等所产生的事件或消息的接收和处理。本章就来讨论这些内容。 1.1 从 main 到 WinMain 学习编程往往从简单的例子入手,例如一个 C 程序常有下列简单的框架代码: #include int main() { printf("Hello World!\n"); /* 输出 */ return 0; /* 指定返回值 */ } 事实上,该程序已包括 C 程序中最常用的#include 指令、必须的程序入口main 函数、库函数printf 调用和return 语句。由于此程序是在早期的DOS(Disk Operating System,磁盘操作系统)环境的字符模型下运行的,因而 printf 函数所输出的都是字符流,也就是说,它在屏幕上输出一行文本“Hello World!”。在 Windows 环境下,这里的屏幕就由控制台窗口来兼作,而基于Windows 的上述 C 程序代码框架肯定是有所不同的。特别地,由于目前所在的Windows环境基本上都是32位,所以这里的Windows程序平台就是Win32,Windows编程可直接理解为是Win32 编程。 Visual C++教程(第 2 版) 2 1.1.1 Window s 等价程序 等价的Windows 程序可以写成: HelloMsg.c #include int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int nCmdShow) { MessageBox (NULL, TEXT("Hello, World!"), TEXT("Hello"), 0) ; return 0 ; } 在深入剖析上述程序之前,先来看一看在Visual C++ 6.0 中的编辑、连接和运行的 过程: ① 选择“开始”→“程序”→Microsoft Visual Studio 6.0 →Microsoft Visual C++ 6.0,运行Visual C++ 6.0。第一次运行时,将显示如图1.1 所示的“每日提示”对话框。单击“下一条”按钮,可看到有关...