• / 9
  • 下载费用:10 金币  

窗口机制 消息循环 消息队列.doc

关 键 词:
窗口机制 消息循环 消息队列.doc
资源描述:
注:以下所说 windows 线程是指与调用了与图形用户界面相关的函数的线程,而 windows进程则是包含 windows 线程的进程,以区别于一般的进程和线程一个线程只有一个报文队列,但可以有多个窗口,每个窗口都有 WndProc 函数窗口对象如下:Typedef struct _WINDOW_OBJECT{PW32THREADINFO ti;PDESKTOP Desktop;……UNICODE_STRING WindowName;……RECT WindowRect;……//pointer to the owning thread’s message queuePUSER_MESSAGE_QUEUE MessageQueue; //指向所属进程的消息队列Struct _WINDOW_OBJECT *FirstChild;Struct _WINDOW_OBJECT *LastChild;Struct _WINDOW_OBJECT *NextSibling;Struct _WINDOW_OBJECT *PrevSibling;//ENTRY in the list of thread windowsLIST_ENTRY ThreadListEntry; //Handle to the owner windowHWND hOwner;……WNDPROC WndProc; //消息处理函数PRTHREAD OwnerThread; //指向具体窗口所属线程的 ETHREAD 结构……}WINDOW_OBJECT;当一个线程第一次被建立时,系统假定线程不会被用于任何与用户相关的任务。这样可以减少线程对系统资源的要求。但是,一旦这个线程调用一个与图形用户界面有关的函数(例如检查它的消息队列或建立一个窗口) ,系统就会为该线程分配一些另外的资源,以便它能够执行与用户界面有关的任务。因此进程在建立之初,并没有与用户界面相关的数据结构,只有当进程中某一线程调用 win32k.sys 中的函数时,进程会转化为 windows 进程,调用为 win2k.sys 的线程则转化为 windows 线程。一个进程只要其中有一个线程是windows 线程,则就是 windows 进程。Windows 进程除了 EPROCESS 和 KPROCESS外,还有个 W32PROCESS 结构,即系统为 windows 进程所分配的另外一些资源。且EPROCESS 结构中的指针 Win32Process 指向这个数据结构。当线程转化为 windows 线程时,系统会为线程分配一个 T H R E A D I N F O 结构这个 T H R E A D I N F O 结构包含一组成员变量,利用这组成员,线程可以认为它是在自己独占的环境中运行。T H R E A D I N F O 是一个内部的、未公开的数据结构,用来指定线程的投递消息队列(posted-message queue) 、发送消息队列( send-message queue) 、应答消息队列( r e p l y -message queue) 、虚拟输入队列(virtualized-input queue) 、唤醒标志(wake flag) 、以及用来描述线程局部输入状态的若干变量。这里的登记消息即为投递消息(posted-message)注意:这里的各个消息队列的消息均指的时被投递的消息,被发送的消息……即发送方直接把消息放入接收方的相应消息队列当线程有了与之相联系的 T H R E A D I N F O 结构时,线程就有了自己的消息队列集合。Windows 中有两种类型的消息队列1) 系统消息队列(System Message Queue)这是一个系统唯一的 Queue,设备驱动(mouse, keyboard)会把操作输入转化成消息存在系统队列中,然后系统会把此消息放到目标窗口所在的线程的消息队列(thread-specific message queue)中等待处理2) 线程消息队列(Thread-specific Message Queue)每一个 GUI 线程都会维护这样一个线程消息队列。(这个队列只有在线程调用 GDI 函数时才会创建,默认不创建)。然后线程消息队列中的消息会被送到相应的窗口过程(WndProc)处理.typedef struct tagMSG { HWND hwnd; //消息要发向的窗口句柄UINT message; //消息标示符,以 WM_开头的预定义值WPARAM wParam;LPARAM lParam;DWORD time; //消息放入消息队列的时间POINT pt; //消息放入消息队列
展开阅读全文
  微传网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:窗口机制 消息循环 消息队列.doc
链接地址:https://www.weizhuannet.com/p-7313068.html
微传网是一个办公文档、学习资料下载的在线文档分享平台!

微传网博客

网站资源均来自网络,如有侵权,请联系客服删除!

 网站客服QQ:80879498  会员QQ群:727456886

copyright@ 2018-2028 微传网络工作室版权所有

     经营许可证编号:冀ICP备18006529号-1 ,公安局备案号:13028102000124

收起
展开