Mfc `CDialog::SetWindowPos`崩溃

Mfc `CDialog::SetWindowPos`崩溃,mfc,Mfc,如果我在如下构造的对话框上调用CDialog::SetWindow:CDialog*tmp=newcdialog(IDD_测试,客户端),然后它崩溃。如果我调用,CDialog*tmp=newcdialog();tmp->创建(IDD_测试,家长),则它不会。为什么会这样呢?MFC的这种方式有点滑稽。创建C++对象不会创建相应的窗口;这是一个两步的过程。第二个例子正好是微软打算的那样,创建C++类,然后创建它应该控制的窗口。如果您试图在窗口存在之前调用窗口控制函数,则会发生不好的事情。但是显式C

如果我在如下构造的对话框上调用
CDialog::SetWindow
CDialog*tmp=newcdialog(IDD_测试,客户端),然后它崩溃。如果我调用,
CDialog*tmp=newcdialog();tmp->创建(IDD_测试,家长),则它不会。为什么会这样呢?

MFC的这种方式有点滑稽。创建C++对象不会创建相应的窗口;这是一个两步的过程。第二个例子正好是微软打算的那样,创建C++类,然后创建它应该控制的窗口。如果您试图在窗口存在之前调用窗口控制函数,则会发生不好的事情。

但是显式CDialog(UINT-nIDTemplate,CWnd*pParentWnd=NULL)的意义何在构造函数如果必须将这些参数也传递到Create?@Casebash,则这些参数与不接受任何参数的
DoModal
一起使用。