定义了一个全局的非模式对话框:
CSysInfoDlg *gSysInfoDlg;
在主线程中用下列语句正常显示:
gSysInfoDlg = new CSysInfoDlg(CString str);   //我重载了构造函数
gSysInfoDlg->Create();                       //我重载了Create()函数
gSysInfoDlg->ShowWindow(SW_SHOW);
但是把这几行语句照搬到一个线程当中时执行出错
线程函数如下:DWORD  WINAPI ShowSysInfoDlg(LPVOID pParam)
{
gSysInfoDlg = new CSysInfoDlg("hello");
gSysInfoDlg->Create();
gSysInfoDlg->ShowWindow(SW_SHOW);
return 1;
}出错语句是gSysInfoDlg->Create();这是为什么,应该如何解决?

解决方案 »

  1.   

    我的两个重载函数是这个样子的:CSysInfoDlg::CSysInfoDlg(CString str)
    {
         m_SysInfo = str;}BOOL CSysInfoDlg::Create()
    {
        return CDialog::Create(CSysInfoDlg::IDD);
    }
      

  2.   

    出的什么错??可能出问题的地方:
    1。不要重载Create,gSysInfoDlg->Create(CSysInfoDlg::IDD);
    2。给对话框一个父窗口,gSysInfoDlg->Create(CSysInfoDlg::IDD,afxGetApp()->GetMainWnd());只能试试看了。。