win32 消息循环疑惑

原创 2007年10月01日 10:14:00

项目遇到的问题, 解决了但是时间紧张的原因 , 没有仔细考虑

INT WINAPI WinMain( HINSTANCE, HINSTANCE, PSTR strCommandLine, INT )
{
         .
 // 阻塞操作
        WaitForSingleObject( g_Event , INIFINITE );
 SendMessage (g_hMainWnd, WM_MAINXXX, 0, 0);
 .
     MSG  msg;
 while( GetMessage( &msg, NULL, 0, 0 ) )
 {
  TranslateMessage( &msg );
  DispatchMessage( &msg );
 }
 
 return 0;
}

LRESULT CALLBACK MainWindowProc( HWND hwnd, UINT msg, WPARAM w, LPARAM l )
{

 switch(msg)
        {
          case WM_THREADXXX:
           // do -- something           // 没有响应, 接收不到 WorkerThread 线呈发送的消息, 正常
           break;
         
           case WM_MAINXXX:
           // do -- something           // 当 g_Event 事件受信后, 此处可以响应 winmain 的 消息
           break;       
        }


   return DefWindowProc( hwnd, msg, w, l );
}

DWORD WINAPI WorkerThread( PVOID arg )
{

  // 向主窗口线程发送消息, 此时 WinMain 中仍然处于 阻塞状态
  // 如果此处换成 SendMessage, 那就不能返回了,
  PostMessage (g_hMainWnd, WM_THREADXXX, 0,0); 
 
  return 0;
}

由上面的分析我可以得出:
(1)   PostMessage 与 SendMessage 的不同点确实存在.
     PostMessage : 只是把消息放在窗口线呈的消息对列中,不管是否被处理
     SendMessage : 等消息被处理后才返回.

(2)  不能响应 WorkerThread 的 WM_THREADXXX 原因是 WinMain 还有进行消息的派遣和发送

疑惑:
 winmain 中在消息派遣进行之前 发送的消息 WM_MAINXXX 为什么就能得到影响??? 此时也没有进行消息循环。 

Win32编程点滴之PreTranslateMessage与消息循环

转自 http://www.cnblogs.com/Greatest/archive/2009/08/25/1553623.html
  • ihc523
  • ihc523
  • 2014年06月07日 10:48
  • 2550

关于win32编程中消息循环和WndProc()窗口过程函

在win32程序的消息循环函数中   while (GetMessage (&msg, NULL, 0, 0))   {      TranslateMessage (&msg) ;     ...

Delphi中使用Win32 API创建内建消息循环的线程函数

Delphi中使用Win32 API创建内建消息循环的线程函数   1.线程创建    HANDLE CreateThread(     LPSECURITY_ATTRIBUTES lpTh...

win32创建窗口及其消息循环

转自:http://anyzixin.blog.163.com/blog/static/365289122007103031657355/

VC消息循环重载实例

  • 2011年03月14日 10:40
  • 267KB
  • 下载

模拟MFC消息循环.rar

  • 2008年01月22日 12:59
  • 235KB
  • 下载

[Win32]一个调试器的实现(一)调试事件与调试循环

来源网址:http://www.cnblogs.com/zplutor/archive/2011/03/04/1971279.html 作者:Zplutor's   前言 程序员离不开调试器,...

windows消息循环机制

  • 2015年07月11日 09:49
  • 573KB
  • 下载

[Win32]一个调试器的实现(一)调试事件与调试循环

前言 程序员离不开调试器,它可以动态显示程序的执行过程,对于解决程序问题有极大的帮助。如果你和我一样对调试器的工作原理很感兴趣,那么这一系列文章很适合你,这些文章记录了我开发一个调试器雏形的过程...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:win32 消息循环疑惑
举报原因:
原因补充:

(最多只允许输入30个字)