将消息放到消息队列里有几种方式?知道“茴”字有几个写法吗?记不起来了,去问孔乙己吧。(某人大吼一声:让我来告诉你)
一、将消息放入线程的消息队列。
BOOL PostThreadMessage(DWORD idThread,UINT Msg,WPARAM wParam,LPARAM lParam);
二、广播消息
long BroadcastSystemMessage(DWORD dwFlags,LPDWORD lpdwRecipients,UINT uiMessage,WPARAM wParam,LPARAM lParam);
//当然BroadcastSystemMessageEx函数也能达到同样的效果
三、通知指定的窗口
BOOL PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
BOOL SendNotifyMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
//它们可以在hWnd使用HWND_BROADCAST值,表示广播给当前桌面的顶层窗口
//另外仔细考虑一下他们有什么区别?
四、有超时限制的消息通知
LRESULT SendMessageTimeout(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,UINT fuFlags,UINT uTimeout,PDWORD_PTR lpdwResult);
考虑一下,为什么Windows提供了这么多种相似的消息通知函数,他们各用在什么样的场合?答案在MSDN中都能找到只要你仔细看的话。
如果你要仔细了解其他的消息对列处理函数的话,不妨仔细看看核心编程的26章。因为消息的内容实在是太多了,这是Windows系统用户界面交互的最重要的方式之一,一定要吃透才好哦。