複数の CPropertyPage をタブとして含む CPropertySheet があります。CPropertyPage の 1 つにボタンがあり、ボタンをクリックすると CDialog が起動します。CDialog クラスメソッド内で GetParent() メソッドを呼び出す CPropertyPage へのコントロールを取得しようとしていますが、どういうわけか正しい親ウィンドウを取得できず、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 に移行すると例外がスローされます。