第三讲:Windows 消息机制(1)
Dos 的过程驱动与 Windows 的事件驱动
在讲本程序的消息循环之前,我想先谈一下 Dos 与 Windows 驱动机制的区别:
DOS 程序主要使用顺序的,过程驱动的程序设计方法。顺序的,过程驱动的程序有一个明显的开始,
明显的过程及一个明显的结束,因此程序能直接控制程序事件或过程的顺序。虽然在顺序的过程驱动
的程序中也有很多处理异常的方法,但这样的异常处理也仍然是顺序的,过程驱动的结构。
而 Windows 的驱动方式是事件驱动,就是不由事件的顺序来控制,而是由事件的发生来控制,所有
的事件是无序的,所为一个程序员,在你编写程序时,你并不知道用户先按哪个按纽,也不知道程序
先触发哪个消息。你的任务就是对正在开发的应用程序要发出或要接收的消息进行排序和管理。事件
驱动程序设计是密切围绕消息的产生与处理而展开的,一条消息是关于发生的事件的消息。
Windows 编程的特点:
C 语言编程至少有一个主程序,其名字是 main()。Windows 程序则至少两个主程序,
一个是 WinMain(),
int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow // show state
);
另一个是窗口过程函数 WndProc,它的函数原型为:
long FAR PASCAL WndProc(HWND hWnd,WORD message,WORD wParam,LONG lParam);
Windows 应用程序的编程就围绕这两个部份进行的。其中 WinMain 函数为应用程序
的入口点,它的名字一定要是 WinMain。