2024年6月3日发(作者:)
用 API 函数编写最简单的窗口程序
VC++ 6.0 提供的各种工具和编程向导使得程序开发更加快捷。不过“有利必有
弊”,这
些开发工具在带来方便的同时,掩盖了 C++语言的许多基本概念,更让初学者对
MFC
(Microsoft Foundation Classes)的运行机制无法理解。本实例将尽量抛开这
些编程工具,让
读者更深入的理解一些基本概念。
API 的全称是应用程序编程接口(Application Programming Interface)。利
用 Windows 的
API 函数可以实现简单的窗口程序,该窗口只能实现“关闭”操作,运行结果如
图 5.33 所示。
图 5.33 最简单的窗口程序运行界面
1. Windows 中几个常用的结构体变量和 API 函数
Windows 中常用的结构体变量都放在 windows.h 头文件中。
消息结构体 MSG:
typedef struct tagMSG
{ HWND hwnd; //用以检索消息的窗口句柄
UINT message;//消息标号,如实例 23 中自定义消息 WM_THREADEND 消息标号
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
} MSG;
窗口结构体 WNDCLASS:
ypedef struct _WNDCLASS
{UINT style; //窗口的样式,一般设为 0
WNDPROC lpfnWndProc; //指定窗口函数
int cbClsExtra;
int cbWndExtra;
HANDLE hInstance; //应用程序实例句柄
HICON hIcon; //使用的图标
HCURSOR hCursor; //使用的光标
HBRUSH hbrBackground; //背景画刷
LPCTSTR lpszMenuName; //窗口菜单名
LPCTSTR lpszClassName; //窗口类名
} WNDCLASS ;
创建新窗口函数 CreateWindow:
HWND CreateWindow(
LPCTSTR lpClassName, // 注册类名
LPCTSTR lpWindowName, // 窗口名
DWORD dwStyle, // 窗口样式
int x, // 窗口原点 x 水平坐标
int y, // 窗口原点 y 垂直坐标
int nWidth, // 窗宽
int nHeight, // 窗高
HWND hWndParent, // 父窗口句柄
HMENU hMenu, // 菜单句柄
HINSTANCE hInstance, // 当前应用程序句柄
LPVOID lpParam // 窗口创建数据
);
2. WinMain 函数和窗口函数
与控制台程序类似,所有的 Windows 程序的入口点都从 WinMain 函数开始。
WinMain
函数主要包括函数定义、初始化和消息循环三个部分。
WinMain 函数的定义部分如下:
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInst,
LPSTR lpszCmdLine,
int nCmdShow)
初始化则包括窗口类 WNDCLASS 的定义、注册,创建窗口类对象和显示窗口。
消息循环是Windows应用程序的核心。Windows将各种消息放入应用程序的消息
队列中,
新手学 Visual C++ 30 例
而应用程序的 WinMain 函数从消息循环提取队列中的消息,并将其传递给窗口。
获取消息并
将消息放入队列是 Windows 操作系统完成的,不需要编程实现。而提取消息并
传递给窗口则
需要程序员自己完成。在 MFC 中,后面这一步一般通过类向导(ClassWizard)
来实现,在
有特殊需要时也可以按照实例 23 中的方法添加自定义的消息映射。
窗口函数定义应用程序接受到不同消息的响应。窗口函数通过 CreateWindow 的
第一个
参数与创建的窗口建立联系。窗口函数的一般形式如下:
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParaw,LPARAM
lParam)
3. 创建一个基于 Windows 的工程 ex24
(01)打开菜单“File→New”,在弹出的新建(New)对话框左边的工程(Project)
选项卡
中选择“Win32 Application”,在右边的工程名(Project Name)处输入
“ex24”,如图
5.34 所示。单击确认(OK)按钮。
图 5.34 新建一个基于 Windows 的应用程序
(02)在弹出的 MFC 应用程序向导(MFCAppWizard)对话框中选择“An empty
project”,
如图 5.35 所示。单击结束(Finish)按钮。
(03)在弹出对话框中显示所有配置信息,如图 5.36 所示。单击确认(OK)按
发布评论