Win32应用程序可以分成两大类:控制台程序和Windows窗口界面程序。其中控制台程序的入口是main(或_tmain),而窗口界面程序的入口函数是WinMain(或_tWinMain)函数。
首先,我们要明白什么是消息以及消息队列。消息就是Windows系统检测到用户的一些操作(比如鼠标、键盘)并将这些操作的信息进行包装成一个结构体对象传递给应用程序。而消息队列就是Windows保存消息的一个容器,应用程序需要创建消息循环来完成监测该队列并获取处理Windows所捕获到的消息。消息循环即是我们后面会提到的GetMessage/DispatchMessage等函数。
为了创建并显示一个窗口,我们需要以下几步:
1. 定义窗口类WndClass(或WndClassEx),其中包括设置窗口的过程回调函数,鼠标、背景、图标、菜单以及该窗口的类型名称(类似车的品牌)。
2. 注册该窗口类型RegisterClass,就像是向windows注册该类型的使用权。
3. 创建自己的窗口window:CreateWindow,该函数返回所创建窗口的句柄;
4. 最后就是现实我们的窗口了ShowWindow。
5. 为了使窗口能够捕获并处理用户的点击等操作,还需要在我们的主线程里创建消息循环并完成窗口过程函数对消息的处理。
窗口的消息循环就是一个无限循环一直在捕获消息并分发给窗口,另外消息体MSG(详见MSDN)包含了对应的窗口句柄HWND,消息类型(UINT类型,比如WM_COMMAND、WM_DESTROY、WM_KEY等),鼠标位置Point以及消息其他附