码迷,mamicode.com
首页 > 其他好文 > 详细

关于PeekMessage中hwnd参数

时间:2018-04-29 17:42:22      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:结构   请求   参数   一个   断点调试   hwnd   循环   image   处理   

今天写一个游戏Demo的时候,在PeekMessage中的hwnd参数用了hwnd而没有设为NULL,然后程序就中断了。打断点调试之后发现,程序在WM_DESTROY中PostQuitMessage之后,在消息循环中并没有发现wm_quit消息,反而设为NULL的时候,消息循环发现了WM_QUIT消息。我感到很奇怪,于是查了msdn,msdn原文解释如下:

技术分享图片

翻译如下:

  (这个参数是)一个指向窗口的句柄,这个窗口的消息将被获取。这个窗口必须属于当前线程。

  如果hWnd为NULL,PeekMessage会获取任何属于当前线程的窗口,和任何在当前线程消息队列中的且msg结构体中的hWnd参数为NULL的消息。因此如果hWnd为NULL,窗口消息和线程消息都会被处理。

  如果hWnd为-1,PeekMessage只获取当前线程中(msg结构体中)hwnd值为NULL的消息,即,被PostMessage(当hWnd为NULL时)或PostThreadMessage抛出的消息。(渣渣英语,如有大佬,还请轻喷)

  

  然后我又在PostQuitMessage上找到了解释如下:

  技术分享图片

翻译如下:

  (这个函数)指示系统一个线程已经做了一个结束(退出)请求。它往往被用在回应WM_DESTROY消息上。

  

  这两段说明:PostQuitMessage结束的是线程,而不是窗口,所以当PeekMessage的hwnd参数设置为hwnd时,函数接收不到WM_QUIT消息。

关于PeekMessage中hwnd参数

标签:结构   请求   参数   一个   断点调试   hwnd   循环   image   处理   

原文地址:https://www.cnblogs.com/FWFC/p/8971338.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!