Visual Studio 2008 で正常に動作する MFC 通常の DLL プロジェクトがありますが、プロジェクトが VS 2010 にアップグレードされたときに、appcore.cpp で次のアサーションが失敗するという新しい問題が発生しました。
CWinApp::CWinApp(LPCTSTR lpszAppName)
{
[...]
ASSERT(AfxGetThread() == NULL);
CDialog 派生クラスの複数のインスタンスが作成された場合、アサーションは失敗します。Web で行った調査によると、MFC の動作に変更があり、この障害が発生するようです。
私が読んだことから、この問題の回避策は、新しい CWinThread で各 CDialog 派生クラスを作成することですが、同じ問題が発生しているため、実装に何かが欠けていると確信していますが、何が欠けているのかわからない。
CWinThread クラス内で CDialog を作成しようとして使用した例は、http://www.experts-exchange.com/Programming/System/Windows__Programming/A_1886-Create-a-Dialog-in-its-Own-Thread からのものです。 htmlですが、私のコードは上記と同じ ASSERT でまだ失敗しています。
私の質問は、MFC の通常の DLL で、CWinThread を使用して複数の CDialog 派生クラスを適切に作成する方法について、ソースを含む良い例を持っている人はいますか?
ああ、上記の ASSERT を解決するために複数のスレッドを作成するという私の理解が間違っている場合は、その理由を教えてください。