none
C++ :创建对话框资源,关闭时出错???[ RRS feed

  • 问题

  • vs2008 + Windows mobile 6 SDK

    首先,我创建了一个对话框应用程序 :"文件 - 新建 - 项目 - Visual C++ - 智能设备 - MFC智能设备应用程序 - ... - 应用程序类型:基于对话框"。

    这个程序一切正常无不良反应。

    然后我 添加了资源:"解决方案管理器 - 工程名上右击 - 添加(D) - 资源(R) - Dialog - IDD_POCKETPC_PORTRAIT - 新建(N)",这样就创建了一个对话框资源(ID 为 IDD_POCKETPC_PORTRAIT)。
    然后,在新建的对话框资源上,双击鼠标左键,弹出 "MFC 类向导" 然后再类名栏目里 填上 CMyDlg ,点击"完成"。

    然后,我就用如下代码,将 对话框IDD_POCKETPC_PORTRAIT 显示出来:

    class CCpp_Test1Dlg : public CDialog
    {
    ...
    
      CMyDlg * myDlg;
    }
    
    void CCpp_Test1Dlg::OnBnClickedButton1()
    {
        // TODO: 在此添加控件通知处理程序代码
    
        myDlg=new CMyDlg ;
        myDlg->Create(IDD_POCKETPC_PORTRAIT,this);
        myDlg->ShowWindow(SW_SHOW);
    }
    

     

     当程序后,我点击 Button1 ,对话框IDD_POCKETPC_PORTRAIT 显示出来了 ,但是我在点击 对话框IDD_POCKETPC_PORTRAIT 右上角 的 "ok" 时,程序就死在那里了,不知道为何??如何解决??

    后来我在 对话框IDD_POCKETPC_PORTRAIT 上放了个button(Caption 为 MyButton) ,测试发现 :对话框IDD_POCKETPC_PORTRAIT 显示出来 后,点击 MyButton 的话一切正常;只要点到 右上角"ok",程序就挂。
    进一步测试:在 MyButton 里面写上代码 "::PostMessage(m_hWnd,WM_CLOSE,0,0);" 程序也挂,貌似 对话框IDD_POCKETPC_PORTRAIT 接到WM_CLOSE就挂??

    搞了好久都不知为何,个人能力无法解决问题,请求帮助...

    2010年4月8日 7:46

答案

  • hello,

    我按照你的步骤也做了一遍,在WM6.0 Professional 模拟器上测试了一下,没有出现你所说的死机情况。

    我的代码如下:

     CMyDlg* myDlg; 
     myDlg = new CMyDlg;

     // 创建模式对话框
     int nRet = -1;

     nRet = myDlg->DoModal();

     switch ( nRet )
     {
       case -1:
      AfxMessageBox(_T("Dialog box could not be created!"));
      break;
       case IDABORT:
      // Do something.
      break;
       case IDOK:
      // Do something.
      break;
       case IDCANCEL:
      // Do something.
      break;
       default:
      // Do something.
      break;
     }

     delete myDlg; 

    如果是非模式对话框的话,可以使用如下代码:

     CMyDlg* myDlg; 
     myDlg = new CMyDlg; 

    //创建非模式对话框
     myDlg->Create(IDD_POCKETPC_PORTRAIT,NULL);
     myDlg->ShowWindow(SW_SHOW);


    施炯
    2010年4月12日 7:00
    版主