DispatchMessage - synchronous or asynchronous

来源:互联网 发布:火狐淘宝无法登陆 编辑:程序博客网 时间:2024/06/08 15:31

DispatchMessage is synchronous function.
下面是两个例子,用于说明为什么是同步的:给人异步的错觉,是因为唤起了一个新的消息循环

while (GetMessage (&msg, NULL, 0, 0))  {         if (! TranslateAccelerator (msg.hwnd, hAccelTable, &msg))          {             TranslateMessage (&msg);             DispatchMessage (&msg);         }}//case 1:LRESULT CALLBACK WndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {    int wmId, wmEvent;    switch (message)       {        case WM_COMMAND:             break;        case WM_MOUSEMOVE:        //MessageBox organizes the message loop            MessageBox (NULL, "aa", "aa", MB_OK);             ExitProcess (1);             break;        case WM_DESTROY:             PostQuitMessage (0);             break;        default:             return DefWindowProc (hWnd, message, wParam, lParam);      }   return 0; }//case 2:LRESULT CALLBACK WndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {    int wmId, wmEvent;    switch (message)       {        case WM_COMMAND:             break;        case WM_MOUSEMOVE:             Sleep (INFINITE);             DebugBreak ();            break;        case WM_DESTROY:             PostQuitMessage (0);             break;        default:             return DefWindowProc (hWnd, message, wParam, lParam);      }   return 0; }
0 0
原创粉丝点击