经典指数          
原因
1627
浏览数
0
收藏数
 

在Windows消息循环中,Timer消息和Post队列中的消息,谁的优先级更高( )
  • 先处理Timer消息
  • 先处理Post消息
  • 没有优秀级的概念
  • 与windows的版本有关

     举报   纠错  
 
切换
1 个答案

Windows通过QS_SENDMESSAGE、QS_POSTMESSAGE、QS_QUIT、QS_INPUT、QS_PAINT、QS_TIMER表示是否有发送消息、登记消息、退出消息、输入消息、重绘消息、定时消息。消息的优先级是QS_SENDMESSAGE

> QS_POSTMESSAGE > QS_QUIT > QS_INPUT > QS_PAINT > QS_TIMER

WM_TIMER消息的优先级最低,所以在有其他消息的情况下,WM_TIMER消息得不到处理,这也是我以前使用SetTimer注册一个回调函数,而回调函数一直未被调用的原因。因为我在UI环境中使用,处理WM_PAINT消息时又触发了界面的重绘,导致了始终有WM_PAINT消息要处理,WM_TIMER于是得不到处理的机会。处理WM_PAINT消息时要小心,不然程序就可能消耗很高的cpu,并且使得低于WM_PAINT优先级的WM_TIMER得不到处理。

 
切换
撰写答案