win32程序值窗口程序,以及消息机制 一丶简介
通过上一讲.我们了解了窗口其实是绘制出来的.而且是不断绘制的过程. 所以窗口的本质是绘制. 但是我们现在看到的窗口程序.都可以点击关闭按钮. 使用鼠标点击会有反应.
而我们要怎么实现那.
其实鼠标点击是产生了一个消息. window把这个消息封装成了消息结构体. 发送给了我们的窗口程序. 那么windows怎么知道你点击的那个窗口那?
是这样的. 当我们点击的时候. 会记录点击坐标.消息.等等. windows系统会接受到. 然后遍历内核中的WINOBJ结构. 而这个结构中存储着窗口对象. 窗口对象对应着消息线程.
所以windows一层一层的遍历.则找到了对应的窗口以及窗口对应的线程.然后发送给我们的应用程序.
上面说的我们需要了解. 要知道消息怎么产生的. 怎么传递的.那么下面编程就明白了.
例如下图:
每个应用程序都有一个线程对象. 而这个线程对象如果创建窗口.那么内核中就有这个窗口对象.
如果我们有鼠标点击的消息.键盘消息等等.操作系统都会遍历窗口对象. 而窗口对象也会保存着创建这个窗口对象对应的线程对象. 而这个线程对象中则有消息队列.
这样的话操作系统则会封装消息发送给我们窗口对象.
二丶Wind窗口类结构.创建窗口程序. 1.进行窗口编程需要注意的问题在Windows中进行窗口编程.入口点已经改成WinMain了. 有四个参数.
如以下代码所示
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
//窗口的实例句柄 hinstance代表模块意思 HWND代表窗口意思. HANDLE代表内核对象. HDC 设备上下文.
_In_opt_ HINSTANCE hPrevInstance,
//父窗口句柄.不需要.
_In_ LPWSTR lpCmdLine,
//命令行参数
_In_ int
nCmdShow)
//命令. 最大化命令.还是最小化命令.
{
return 0;
}
wWinMain 因为有UNICODE跟ASCII区别. 所以我是UNICODE使用wWinMain. A版本就是用WinMain