我定义了一个对话框  ID是  IDD_ABOUT
现在使用CreateDialog调用,但是总是没有效果。部分代码如下:
hdlg和hInst都已定义.hdlg=CreateDialog(hInst,MAKEINTRESOURCE(IDD_ABOUT),hwnd,(DLGPROC)DlgProc);
上面代码无效。
DlgProc函数如下:
BOOL CALLBACK DlgProc(HWND hdlg,UINT Msg,WPARAM wparam,LPARAM lparam)
{switch(Msg)
{case WM_INITDIALOG:
  return 1;
 case WM_COMMAND:
 switch(LOWORD(wparam))
 {case IDOK:break;
case IDCANCEL:
 DestroyWindow(hdlg);return 1;
   }
  break;
 case WM_CLOSE:
 DestroyWindow(hdlg);return 1;}
  return 0;
}请问为什么无效?  谢谢!

解决方案 »

  1.   

    IDD_ABOUT对话框没有设WS_VISIBLE?
    另外,如果是在DLL中调用,在函数开始加上AFX_MANAGE_STATE(AfxGetStaticModuleState( ));
      

  2.   

    就是对话框不弹出下面是补充一段WndProc代码:LRESULT CALLBACK WndProc(HWND hwnd,UINT Msg,WPARAM wparam,LPARAM lparam)
    {
    switch(Msg)
    {
    case WM_COMMAND:
    switch(LOWORD(wparam))
    {
     case IDM_ABOUT:
         hdlg=CreateDialog(hInst,MAKEINTRESOURCE(IDD_ABOUT),hwnd,(DLGPROC)DlgProc);
     break;
    }
    break;
    case WM_DESTROY:
    PostQuitMessage(0);return(0);break;
    default:
    return(DefWindowProc(hwnd,Msg,wparam,lparam));
    }
    return(0);
    }
      

  3.   

    看是否创建成功(指针)然后showwindow
      

  4.   

    回复:believefym(feng)
    你好,感谢帮助。
    是没有调用ShowWindow函数,因为ShowWindow有两个参数第一个我用hdlg,第二个我不知道用什么?————————————————————————————————————————————回复:yjgx007()
    你好,感谢帮助。
    我没有使用到mfc类库,AFX_MANAGE_STATE(AfxGetStaticModuleState( ));这个我看不懂也不知道加在哪里?
      

  5.   

    第二个用SW_NORMAL,看msdn,有参数说明的,或者看些例子,或者把参数都试一遍