win32程序值窗口程序,以及消息机制

        win32程序值窗口程序,以及消息机制 一丶简介

  通过上一讲.我们了解了窗口其实是绘制出来的.而且是不断绘制的过程. 所以窗口的本质是绘制. 但是我们现在看到的窗口程序.都可以点击关闭按钮. 使用鼠标点击会有反应.

而我们要怎么实现那. 

  其实鼠标点击是产生了一个消息.  window把这个消息封装成了消息结构体. 发送给了我们的窗口程序.  那么windows怎么知道你点击的那个窗口那?

是这样的. 当我们点击的时候. 会记录点击坐标.消息.等等. windows系统会接受到. 然后遍历内核中的WINOBJ结构. 而这个结构中存储着窗口对象. 窗口对象对应着消息线程.

所以windows一层一层的遍历.则找到了对应的窗口以及窗口对应的线程.然后发送给我们的应用程序. 

上面说的我们需要了解. 要知道消息怎么产生的. 怎么传递的.那么下面编程就明白了.

例如下图:

win32程序值窗口程序,以及消息机制

 

每个应用程序都有一个线程对象. 而这个线程对象如果创建窗口.那么内核中就有这个窗口对象.

如果我们有鼠标点击的消息.键盘消息等等.操作系统都会遍历窗口对象. 而窗口对象也会保存着创建这个窗口对象对应的线程对象. 而这个线程对象中则有消息队列.

这样的话操作系统则会封装消息发送给我们窗口对象.

二丶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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyysxj.html