2014-04-08 72 views
0

为什么下面的代码二线上升例外Modles创建对话框,而不使用对话框指针

StatusDlg statusDlg (CWnd::GetDesktopWindow()); 
statusDlg.ShowWindow(SW_SHOW); 

和下面的代码不用问题

StatusDlg * statusDlg = new StatusDlg(NULL); 
statusDlg->Create(StatusDlg::IDD,CWnd::GetDesktopWindow()); 
statusDlg->ShowWindow(SW_SHOW) 

+0

向我们展示了statusdlg的构造函数,它是否会创建? –

回答

0

因为第一个dosen't创建对话框的底层窗口?

+0

是的,通过添加行statusDlg.Create(StatusDlg :: IDD,CWnd :: GetDesktopWindow());一切都很好。我期待构造函数StatusDlg statusDlg(CWnd :: GetDesktopWindow());负责创建窗口 – vico

+0

@ user1501700:'MFC'一直使用'CWnd'派生类的2阶段构造。第一阶段创建C++对象,第二阶段创建'HWND'并将其附加到C++对象。 – user1793036