CMFCPropertyGridPropertyの動的な追加と削除は未だに不安定 というか動かない

PFU Happy Hacking Keyboard Lite2 日本語配列かな印字なし USBキーボード ブラック PD-KB220B/U

PFU Happy Hacking Keyboard Lite2 日本語配列かな印字なし USBキーボード ブラック PD-KB220B/U

プログラムを作ろう!  MS VISUAL C++ 2010 入門 (MSDNプログラミングシリーズ)

プログラムを作ろう! MS VISUAL C++ 2010 入門 (MSDNプログラミングシリーズ)

日経ソフトウエア 2010年 09月号 [雑誌]

日経ソフトウエア 2010年 09月号 [雑誌]

CMFCPropertyGridCtrlの全プロパティを削除してからの再構築は問題ないが、CMFCPropertyGridPropertyのAddSubItemとRemoveSubItemをラインタイムに行うには難がある。過去に報告されている様だが、少なくともVC2010SP1では修正されていない。

  • 個人的な回避策
    • グリッド構築用関数をつくり、引数で構築方法と値設定方法を振り分ける。
// 全削除
grid.RemoveAll();
grid.EnableHeaderCtrl(FALSE);
grid.EnableDescriptionArea();
grid.MarkModifiedProperties();

// 再構築。引数で挙動を変える。
    • まぁ通例どおり親クラス仮想関数呼び出しやらイベントハンドラ呼び出しやらで、グリッド内のプロパティが無効になっているタイミングがあるため、扱いには癖有り。
    • CMFCPropertyGridCtrlとCMFCPropertyGridPropertyは継承して使わないとハンドラが使えないため不便。MFCのコントロールには総じて言えることだが、これらのクラスは特に継承が必要な部類。

VC2011がWindows8の開発者版と共に出ているので確認してみるかドキュメントをあさってみる必要はあるだろう。
しかしひどい出来である。BCG時代からCMFCPropertyGridCtrlはお世辞にも今時のUIライブラリの使い勝手ではないなと思っていたが、買収後もあまり修正が加えられていないようだ。プロパティグリッドは、使いこなせるようになると設定UIをソースだけでハイレベルに構築できるためどうしても使いたくなる代物。なので出来の悪さが決定的に影響してくる。
MSはAdobeにでも頼んでFlashBuilderっぽくしてもらえないだろうか。