我有 CPropertySheet,其中包含多个 CPropertyPage 作为选项卡。在其中一个 CPropertyPage 中,我有一个按钮,单击该按钮会启动一个 CDialog。我试图让 CPropertyPage 的控件在 CDialog 类方法中调用 GetParent() 方法,但不知何故我没有得到正确的父窗口,当我尝试访问 CPropertypage 的成员时,它会引发访问冲突异常。
以下是我使用的代码:
CDialog *parentDialog = (CDialog *)GetParent();
CPropertyPage *parentPage = (CPropertyPage *)parentDialog->GetParent();
DResourceStateMgr dSrcStateMgr(parentPage->m_psp.hInstance);
// throws Access Violation exception.
同样的事情曾经在 Visual Studio 2008 中工作,但是当我搬到 Visual Studio 2013 时,它抛出了异常。