itsAnalysisDataTable.CreateEx( WS_EX_CLIENTEDGE, AfxRegisterWndClass( CS_DBLCLKS, LoadCursor( NULL, IDC_ARROW ), (HBRUSH)::GetStockObject( NULL_BRUSH ), NULL ), "AnalysiysTable", WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_TABSTOP, dialogItemRect, this, IDC_ANALYSIS_DATA_TABLE );
この行には 2 日間の労力がかかりましたが、解決策はありませんでした。itsAnalysisDataTable は、グランド グランド グランド ペアレントとして CWnd を持つカスタム ウィンドウ コントロールです。このコントロールは、コードで問題なく他のペースで正常に使用されています。これは CPropertyPage です。
私が抱えている問題は、MyProduct (x64).exe の 0x76f7fd5c で未処理の例外が発生する (そして毎回発生する) 行です。
例外は 32 ビットでも発生します。私は Windows 7 x64、VS 2008 を使用しています。
私がすでに試したこと:
- デバッガーで win32 例外のブレークを有効にします。例外は発生しません (コード内に大量に存在し、効果がない最初のチャンスの例外を除く)
- プロジェクト全体の再コンパイル
- 例外のコントロールの OnCreate ハンドラーをデバッグします。
コール スタック:
ntdll.dll!0000000076f7fd5c()
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]
kernel32.dll!0000000076df42d3()
mfc90d.dll!AfxDeactivateActCtx(unsigned long dwFlags=0, unsigned __int64 ulCookie=2077018657900210161) Line 260 + 0x19 bytes C++
所見:
- WS_CHILD フラグをスキップすると、例外は発生しませんが、コントロールで OnCreate も呼び出されません!
- 例外を無視して続行すると、アプリケーションは正常に動作し、コントロールも正常に動作します。
- アプリの初期化中に AfxSetAmbientActCtx(FALSE) を呼び出すと、例外が抑制されます。しかし、正当化できない限り、これはハックだと思います。