【发布时间】:2013-06-18 16:17:57
【问题描述】:
我一直遇到以下问题。我有一个包含一些控件的主对话框。它还显示了几个子对话框(作为子控件),这些子对话框设置为带有IDs 的指针成员。我在OnInitDialog 期间通过CreateControl 使用IDs 创建这些对话框。昨天它工作得很好。今天,我决定在子对话框中添加一些控件,结果发现了一个问题。
这就是我在主对话框 durig OnInitDialog 中创建子对话框的方式:
if (m_pNewObjDlg != NULL) m_pNewObjDlg->Create(m_nNewObjDlgID, this);
if (m_pSharedObjDlg != NULL) m_pSharedObjDlg->Create(m_nSharedObjDlgID, this);
这就是我在我的一个例程之外设置子对话框的方式:
dlgSelectSharedObject.SetNewPageObject(&dlgSelectNewTableDialog, CSelectNewTableDialog::IDD);
dlgSelectSharedObject.SetSharedPageObject(&dlgSelectSharedTable, CSelectSharedTableDialog::IDD);
我看到两个子对话框的OnInitDialog 和DoDataExchange 运行良好,子对话框的m_hWnds 已设置,GetDlgItem 方法返回有效值。但是当执行回到主对话框的OnInitDialog 时,我看到m_hWnd 的pNewObjDlg 和pSharedObjDlg 的值是NULL。我不知道这怎么会发生。我仔细检查了IDs,它们没有重叠。结果,我得到了一个ASSERT,除了带有控件的主对话框之外什么都没有显示。有什么想法吗?
【问题讨论】:
-
您的子对话框中有哪些控件?有 OCX 控件吗?
-
@cha 我没有使用像 OCX 和扩展这样的异常控件,一切都只是按钮、标签和列表框。
-
我猜是
IDs。 -
不,
IDs 似乎没问题。m_hWnd重置为NULL是什么原因?