您的位置:首页 > 其它

关于windows消息优先级

2014-03-29 12:19 176 查看
关于windows消息循环时消息队列的优先级顺序,参考<windows核心编程》,这是中文版的图示



        从GetMessage检查消息的算法中我们可以看到消息的优先级顺序发送消息、登记消息、退出消息、输入消息、重绘消息、定时消息。

          我们可以看PAINT消息和SetTimer消息的优先级都是比较低的,所以在程序存在死循环或者无限等待的时候这两个消息容易受到阻塞而无法发送出去得到响应,因而此时我们常用的做法是使用多线程或者使用PeekMessage函数,将do  thing 放到else中或者为循环单独开一个线程。

 

while (TRUE)
{
if (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))
{
if (msg.message == WM_QUIT)
break ;

TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
else
{

//  do  thing
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: