我这个程序先create一个窗口,然后想通过按一Button产生一对话框,
用这句话CreateDialog(hInstance,MAKEINTRESOURCE(IDD_DIALOG_ROUTE),hwnd,RouteDlgProc);
 IDD_DIALOG_ROUTE为事先准备好的一对话框的ID
但是该对话框时而能产生出来,时而产生不出来.调式发现CreateDialog返回的为0x000000000,
    hInstance,hwnd都已得到,不知是不是MAKEINTRESOURCE(IDD_DIALOG_ROUTE)这句话有问题?
 请高人求解。

解决方案 »

  1.   

    是不是RouteDlgProc中的初始化动作失败?CreateDialog失败后调用GetLastError看看是什么错误
      

  2.   

    你是指的是BOOL CALLBACK RouteDlgProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM     lParam)
    {
    switch(message)
    {
    case WM_INITDIALOG:
    return TRUE;
              ...................
             }
             return FALSE;
    }
    case WM_INITDIALOG:失败么,但我在这里什么都没写啊.奇怪的是CreateDialog失败,程序放在那不动,过一段时间,在运行,对话框又可以产生了,郁闷。
      

  3.   

    CreateDialog失败后调用GetLastError看看是什么错误
      

  4.   

    调用GetLastError(),得到值是0,0表示The operation completed successfully,但CreateDialog操作不成功啊
      

  5.   

    case default: 里的是什么?
      

  6.   

    break;
    难道是这有问题么?
      

  7.   

    没有 break
    和 return 0;
      

  8.   

    break;
    难道是这有问题么?
    ----------------------------
    是break就没有问题。这样呢?
    CreateDialog(hInstance,MAKEINTRESOURCE(IDD_DIALOG_ROUTE),hwnd,(DLGPROC)RouteDlgProc);
      

  9.   

    不行那,主窗口上还有一Button,点击对话框就能很正常的产生case IDC_ROUTE:
    CreateDialog(hInstance,MAKEINTRESOURCE(IDD_DIALOG_ROUTE),
     hwnd,RouteDlgProc);
    case IDC_SYS:
    CreateDialog(hInstance,MAKEINTRESOURCE(IDD_DIALOG_SYS),
     hwnd,SysDlgProc);
    上一个CreateDialog总有问题,下面一个就很正常.郁闷的是,有时上面对话框有偶尔可以生成