第二章 MFC 编程和操作
2.1Windows 编程
2.2MFC 编程
2.3MFC 程序应用
2.4 消息和消息映射
2.5Visual C++ 常用操作
2.1Windows 编程
2.1.1C++ 的 Windows 编程
早期的 Windows 应用程序开发是使用 C/C++ 通过调用 Windows API 所提供的
结构和函数来进行的。对于有些特殊的功能,有时还要借助相应的软件开发工具( S
oftware Development Kit ,简称 SDK )来实现。这种编程方式由于其运行效率高,
因而至今在某些特殊场合中仍旧使用,但它编程繁琐、手工代码量也比较大。下面来
看一个简单的 Windows 应用程序。
[ 例 Ex_HelloMsg] 一个简单的 Windows 应用程序
#include <windows.h>
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MessageBox (NULL, " 你好,我的 Visual C++ 世界! ", " 问候 ", 0) ;
return 0 ;
}
2.1Windows 编程
在 Visual C++ 6.0 运行上述程序需要进行以下步骤:
( 1 )选择“文件”→“新建”菜单命令,显示出“新建”对话框。在“工程”标签页面的
列表框中,选中 Win32 Application ( Win32 应用程序)项。
( 2 )在工程编辑框中键入 Win32 应用程序项目名称 Ex_HelloMsg 。在“位置”
编辑框中直接键入文件夹名称,或单击浏览按钮 选择一个已有的文件夹,这里为
“ D:\Visual C++ 应用 \ 第 2 章”。
( 3 )单击 [ 确定 ] 按钮继续。弹出一个向导对话框,用来询问创建的 Win32
应用程序的项目类型,选中 An empty project 项。单击 [ 完成 ] 按钮,系统将显示该
应用程序向导的创建信息,单击 [ 确定 ] 按钮系统将自动创建此应用程序。
( 4 )再次选择“文件”→“新建”菜单命令,显示出“新建”对话框。在“文件”标签页
面左边的列表框中选择 C++ Source File 项,在右边的文件框中键入 Ex_HelloMsg.c
pp ,单击 [ 确定 ] 按钮。
( 5 )输入上面的代码,运行程序,结果如
图 2.1 所示。
从上面的程序代码可以看出:
图 2.1 Ex_HelloMsg 运行结果
2.1Windows 编程
● C++ 控制台应用程序以 main 函数作为进入程序的初始入口点,但在 Windows
应用程序中, main 主函数被 WinMain 函数取代。 WinMain 函数的原型如下:
int WINAPI WinMain (
HINSTANCE hInstance, // 当前实例句柄
HINSTANCE hPrevInstance, // 前一实例句柄
LPSTR lpCmdLine, // 指向命令行参数的指针
int nCmdShow ) // 窗口的显示状态
● 每一个 C++ Windows 应用程序都需要 Windows.h 头文件,它还包含了其他
的一些 Windows 头文件。这些头文件定义了 Windows 的所有数据类型、函数调用、数
据结构和符号常量。
● 程序中结果的输出已不再是显示在屏幕上,而是通过对话框(如 MessageB
ox )来显示或将结果绘制在用户界面元素上。
● MessageBox 是一个 Win32 API 函数,用来弹出一个消息对话框。该函数第
一个参数用来指定父窗口句柄,即对话框所在的窗口句柄。第二、三个参数分别用来指
定显示的消息内容和对话框窗口的标题,最后一个参数用来指定在对话框中显示的按钮。
下面再看一个比较完整的 Windows 应用程序 Ex_HelloWin 。
2.1Windows 编程
[ 例 Ex_HelloWin] 一个完整的 Windows 应用程序
在 Visual C++ 6.0 创建和运行上述程序的步骤与 Ex_HelloMsg 相同。程序运行后,
单击鼠标左键,就会弹出一个对话框,结果如图 2.2 所示。
与 Ex_HelloMsg 相比,示例 Ex_HelloWin 要复杂的多,但总可以将其分解成是
两个基本函数的程序结构。一个是 WinMain 函数,另一个是用户定义的窗口过程函数
WndProc 。
窗口过程函数 WndProc 用来接收和处理各种不同的消息,而主函数 WinMain 通
常要完成以下几步工作:
图 2.2 Ex_HelloWin 运行结果
( 1 )调用 API 函数 RegisterClass 注册应用
程序的窗口类。
( 2 )调用相关 API 函数创建和显示窗口,并
进行其它必要的初始化处理。其中,函数 CreateWi
ndow 用来创建已注册窗口类的窗口。 Windows 每
一个窗口都有一些基本属性,如窗口标题、窗口位
置和大小、应用程序图标、鼠标指针、菜单和背景
颜色等。窗口类就是充当这些属性的模板。