如果我在如下构造的对话框上调用CDialog::SetWindow
:CDialog *tmp=new CDialog(IDD_TEST, theParent);
,那么它会崩溃。如果我打电话给CDialog *tmp=new CDialog(); tmp->Create(IDD_TEST, theParent);
,那就不会。怎么样?
答案 0 :(得分:3)
MFC有点搞笑。创建C ++对象不会创建相应的窗口;这是一个两步的过程。你的第二个例子完全按照微软的意图,创建C ++类,然后创建它应该控制的窗口。如果在窗口存在之前尝试调用窗口控制功能,则会发生不好的事情。