void CNonthreadtestDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CDialog m_dlg;
m_dlg.Create(IDD_UITHREADDLG);
m_dlg.ShowWindow(SW_SHOW);}
{
// TODO: Add your control notification handler code here
CDialog m_dlg;
m_dlg.Create(IDD_UITHREADDLG);
m_dlg.ShowWindow(SW_SHOW);}
必须将CDialog m_dlg; 设置成类成员变量。
如果是非模态方式,记住,把IDD_UITHREADDLG,中的属性改为可见(默认是不可见的)visiable
void CNonthreadtestDlg::OnButton1()
{
// TODO: Add your control notification handler code here
m_dlg.Create(IDD_UITHREADDLG);
m_dlg.ShowWindow(SW_SHOW);}
在构造函数中初始化 m_pdlg = NULL;
void CNonthreadtestDlg::OnButton1()
{
// TODO: Add your control notification handler code here
if(m_pdlg==NULL)
m_dlg.Create(IDD_UITHREADDLG);
ASSERT(m_pdlg != NULL);
m_dlg.ShowWindow(SW_SHOW);
}
再点击的时候,m_dlg已经创建了,再调用m_dlg.Create(IDD_UITHREADDLG);就会报错。m_dlg有值的情况下,不能重复创建。如果想再创建,必须在m_dlg.Create(IDD_UITHREADDLG);前 加句m_dlg.DestroyWindow();
{
m_pLogConfigDlg->SetFocus();
m_pLogConfigDlg->ShowWindow(SW_NORMAL);
}
else
{
m_pLogConfigDlg = new CLogViewConfigDlg();
//IDD_DIALOG_LOGVIEWCONFIG
m_pLogConfigDlg->Create(IDD_DIALOG_LOGVIEWCONFIG);
CRect rectClient;
CRect rectDlg;
this->GetClientRect(&rectClient);
m_pLogConfigDlg->GetWindowRect(&rectDlg);
int xOff = (rectClient.Width()-rectDlg.Width())/2;
int yOff = (rectClient.Height()-rectDlg.Height())/2;
rectDlg.OffsetRect(xOff, yOff);
m_pLogConfigDlg->MoveWindow(&rectDlg);
m_pLogConfigDlg->ShowWindow(SW_SHOW);
}
你要在析构函数中 delete m_pdlg;
另外我上面写的代码也不对, m_dlg改为m_pdlg,另外我用的是‘.’,实际上应该是‘->’