怎么会?MFC高版本的对话框实际上是非模态的。你怎么建立的对话框?

解决方案 »

  1.   

    to jiangsheng(蒋晟):
       先谢谢你的参与啦!!!
       =>正在学SDK,用DialogBox啊
      

  2.   

    to jiangsheng(蒋晟):
       那就是说不会进入消息队列啦,能否详细的解释一下它的消息循环?在哪实现的?
      

  3.   

    咳,门庭冷落啊,还是只有jiangsheng(蒋晟),算啦,在等一下结贴啦
      

  4.   

    本人意见:
    SDK的话SetWindowLong() 设消息循环 
    MFC的话在PreTranslateMessage()里处理你要用的消息
      

  5.   

    我看了《WINDOW95程序设计指南》好象是这样解释的:
    IsDialogMessage的作用是支持键盘控制,如果对话框中没有它,则对话框不支持键盘控制。
    对于模态对话框具体过程如下:
    int DialogBoxParam(HINSTANCE hinst, LPCSTR lpTemplateName, HWND hWndOwner,DLOGPROC pfnDlgproc,LPARAM lParamInit)
    {
       //抑制模态对话框的拥有者不在接受消息
       if (isWindow(hwndOwner)) {
         HWND hwndActive =hwndOwner;
         while(GetWindowStyle(hwndActive)&WS_CHILD) {
            hwndActive=GetParent(hwndActive);
        }
        EnableWindow(hWndActive,FALSE);
      }
      HWND hwndDlg=CreateDialogPara (hinst,lpTemplateName,hwndOwner,pfnDlgProc,lParamInit);
     ...........
     进入对话框自己的消息循环
     while(!GetWindowWord(hwndDlg,DWL_ENDDIALOGCALLED)) {
     GetMessage(&msg,NULL,0,0);
      if(!IsDialogMessage(hwndDlg,&msg)) {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
     }
     }
     //对话框循环结束,销毁对话框。
     DestoryWindow();
     return(result);
     }