Visual Studio 2005 C++
ATL/WTL
Windows Vista Business
で開発しています。
マルチスレッドでいくつかの種類のSDIウィンドウが表示されるようなプログラムを作成しています。
WTLのウィザードをお使いになったかたはご存知のとおり、SDI,MDIのほかに、マルチスレッドSDIという項目があります。これを少し変形して、さまざまな種類のウィンドウが別スレッドで動くようにしています。
ところがデバッグ中に、特定のウィンドウを終了したときに、期せずして、他のスレッドが終了してアプリケーション全体が終了してしまいます。
終了コード 3となっており、異常終了であることはわかっていたのですが、原因を追いかけきれずにいました。
ちなみに、Releaseモードではこの現象は起きません。
ところが、この現象が起きるウィンドウが複数現れてきたので、共通項を探っていくと、どうやらコンボボックスを配置したウィンドウがエラーを起こしていることが分かりました。コンボボックスはコードで生成したものもありますし、ダイアログエディタで書いたものもあります。あるウィンドウのコンボボックスを消してみたら、異常終了しなくなりました。
原因や対処方法、バグであればMSさんの対応を望みます。