如果我的程序有个主窗口及其消息出理的回调函数
又自建了一个modeless dialog及其消息出理回调回调函数
那谁来分配具体哪个回调函数响应哪个消息呢?它们之间如何协调?
是不是这么简单:在主窗口设IsDialogMessage来确定是谁的消息?
那为什么我的程序仍会混淆呢?因为我发现有的窗口并没捕捉到它应该得到的消息?
请各位指教

解决方案 »

  1.   

    HWND hwndGoto;while (GetMessage( &msg, NULL, 0, 0 )){
       if (!IsWindow(hwndGoto) || !IsDialogMessage(hwndGoto, &msg)){
           if (!TranslateAccelerator( hWnd, ghAccel, &msg )){
      TranslateMessage( &msg ) ;
      DispatchMessage( &msg ) ;
           }
       }
    }
    窗口消息:
    LRESULT FAR PASCAL WndProc(HWND hWnd,UINT uMsg,WPARAM wParam, LPARAM lParam )
    对话框消息:
    BOOL CALLBACK DlgWndProc(HWND hDlg, UINT message,WPARAM wParam, LPARAM lParam) 
    不用协调,自动调用。
      

  2.   

    这一切由MFC包办,如果不清楚去看看《MFC深入浅出》(华东理工大学的),里面讲的Very good。
      

  3.   

    情况不是你说的这样;
    事实是:
    那个消息是发给哪个窗口的,操作系统很清楚,
    于是该窗口的处理函数会被系统调用,
    这个过程是用户程序不能干涉的。主窗口想要操作子窗口也得通过发消息来完成。
    Windows的基础就是消息发送:
    SendMessage(HWND hWnd......)的第一个参数是目标窗口的句柄。