0

我一直坚持以下问题。我有一个包含一些控件的主对话框。它还显示了几个子对话框(作为子控件),这些子对话框设置为带有IDs 的指针成员。我ID通过CreateControlOnInitDialog. 昨天它工作得很好。今天,我决定在子对话框中添加一些控件,结果发现了一个问题。

这就是我在主对话框 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,方法返回有效值。但是当执行回到主对话框时,我看到和的值是。我不知道这怎么可能发生。我仔细检查了s,它们没有重叠。结果,除了带有控件的主对话框外,我没有显示任何内容。只是有什么想法吗?DoDataExchangem_hWndGetDlgItemOnInitDialogm_hWndpNewObjDlgpSharedObjDlgNULLIDASSERT

4

1 回答 1

0

问题已经解决了。当数据加载到内部的控件时,DoDataExchange我偶尔会调用Fail. 这是一个没有项目的组合框,因为DoDataExchange在组合框初始化之前从基类调用。这不是逻辑所期望的,因此Fail被调用了。它导致这些子窗口的破坏。

于 2013-06-22T09:22:30.557 回答