BEGIN_MSG_MAP_EX問題

(WTLを知らない方には無縁な話です…)
WTL(Window Template Library)には、BEGIN_MSG_MAP_EXというBEGIN_MSG_MAPを拡張したマクロがある。
このBEGIN_MSG_MAP_EXを使うと、ウィンドウメッセージに対する宣言が楽になるんだけど、ATL7.0系からはクラスビューが正しく表示されないっていう問題が発生する。
で、よくよく読むとATL7.0からはBEGIN_MSG_MAP_EXではなくBEGIN_MSG_MAPでよいという説明がある。
ただ、これには落とし穴があって CContainedWindowT クラスを使い ALT_MSG_MAP を宣言すると、現在のカレントメッセージへのポインタがNULLでアサーションが発生する。
理由は、CContainedWindowT のベースクラス(TBase)がATL::CWindowだから。
この部分がATL::CWindowImpl だったら、問題なかったのかな?
これを簡単に解決する方法は、BEGIN_MSG_MAP_EXを使うことだそうです…。

コメントを残す

メールアドレスが公開されることはありません。