通常来说,创建一个非模态对话框非常简单,只需要三行。
CTestDlg *pDlg = new CTestDlg;
pDlg->Create(IDD_DIALOG1, this);
pDlg->ShowWindow(SW_SHOW);
但是在某些情况下,程序直接崩溃
打断点观察的现象是到第三行显示的时候崩溃。
在仔细看每一行的代码,我们可以看到创建时
pDlg指针虽然不为null,但是它的m_hWnd指针却为空,这是为什么呢?
简单的来说,很明显在创建时 就已经失败了,只是程序并没有立即报错
那么是什么原因导致的程序崩溃呢?
很简单一般大家可以考虑这两种情况:
- IDD_DIALOG1拼写是否正确,是否有重复的资源,对应的ID是否错误
- 是否使用了需要特殊初始化的控件,如activeX控件、Rich Edit控件等。