VisualStudio2008 MFC FeaturePackのCMFCToolBarの描画に最凶の難あり

クソMFCネタ。

昔のMFCやBCGライブラリではなかった問題がVS2008におけるMFCに入ってしまったようでちょうどこれでハマッていたところ。クソすぎる。
MDIにおいてツールバーの描画が排他処理まわりで落ちてどうしようもなく、なおかつ未サポートの挙動らしい

これはツールバーを使いたくない場合にメインフレームなどで明示的にインスタンスを作らなくても起こるので厄介すぎる。そしてアプリケーションが起動直後には起きず、使用している最中に排他処理で「たまたま」運悪く失敗したときのみにいきなりASSERTを吐くのでなおさら性質が悪い。タチが悪いというのも、このバグはアプリ起動後にバグが起こるまで動作させ、UI上での操作をくまなく試行していて初めて起こったりするものなので、ちょっと起動してあぁ大丈夫そう・・・とか思っていると後にハマるというイビルコード。
シームレスにBCGから移植・・・と思っていたが超改悪されているかもしれない。VS2010で直っているんだろうか。確認してみる価値はあるか。


上の記事への返信にMicrosoftからの返信らしきものがあり、将来のリリースでは修正するだろうという内容があるのでVS2010を使ってみて直っているようならそちらを使うべきであろう。


Hello,
Thanks for the report. This issue is currently by design. MFC was not designed to handle multiple UI thread, and we have several issues in this area. We will consider fixing these in a future release.
Pat Brenner
Visual C++ Libraries Development


仕様によりマルチUIスレッドに対応していないという驚くべき内容である。「仕様です」と言い切っているがこういうケースの決まり文句とはいえ最凶のバグだろう。
VS2008を捨てる気MAXになった。
まぁどうせKinnectSDKもVS2010からしか使えないといったような記述もあるのでちょうどいいだろう。