首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

TranslateMessage ,GetMessage, DispatchMessage分析

字符消息被投递到调用线程的消息队列中,当下一次调用GetMessage函数时被取出。...通常消息从GetMessage函数获得或者TranslateMessage函数传递的。...PeekMessage和GetMessage函数的主要区别有: GetMessage的主要功能是从消息队列中“取出”消息,消息被取出以后,就从消息队列中将其删除;而PeekMessage的主要功能是“窥视...如果GetMessage从消息队列中取不到消息,则线程就会被操作系统挂起,等到OS重新调度该线程时,两者的性质不同:使用GetMessage线程仍会被挂起,使用PeekMessage线程会得到CPU的控制权...函数定义 2.1GetMessage BOOL WINAPI GetMessage( _Out_ LPMSG lpMsg, _In_opt_ HWND hWnd, _In_

40830
您找到你想要的搜索结果了吗?
是的
没有找到

GetMessage()与PeekMessage()的区别(Win32)

前言 众所周知(bushi),Windows的所有程序都是由消息驱动的,每个程序都有自己的消息队列,通过处理各种各样的消息来完成一系列操作,从消息队列中抓取消息的常用函数有两个,分别是GetMessage...函数原型 GetMessage BOOL GetMessage( LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax...中 不同点 GetMessage只有在有消息时才会返回真值,若当前程序消息队列中没有消息,则GetMessage会一直等待,此时线程处于阻塞状态,应用程序将无法执行任何指令。...如果把二者类比为人,那GetMessage就是死心眼儿,不抓到消息绝不返回(异常情况除外)。而PeekMessage则相当机灵,针对两种情况都有不同的处理方式(有点像是侦察兵)。...当然二者都有各自的应用场景,并不是说PeekMessage就一定比GetMessage更好用。

57630

getcomponent_getsocketopt

如果wMsgFilterMin和wMsgFilterMax都为零,GetMessage返回所有可得的消息(即,无范围过滤)。 GetMessage不从队列里清除WM.PAINT消息。...通常调度从GetMessage取得的消息。消息被调度到的窗口程序即是MainProc()函数。...区别补充: 和函数PeekMesssge不一样的是,GetMessage:从系统获取消息,将消息从系统中移除,属于阻塞函数。当系统无消息时,GetMessage会等待下一条消息。...如果GetMessage从消息队列中取不到消息,则线程就会被操作系统挂起,等到OS重新调度该线程时,两者的性质不同:使用GetMessage线程仍会被挂起,使用PeekMessage线程会得到CPU的控制权...GetMessage则不可能因为消息队列为空而进入死循环。

38010
领券