◀ANSI版開発トップへ
  • 4696 CWnd
  • [4696] CWnd Wakura 2007年03月05日 19:23

    CWnd(これを継承したものやCDialog、プロパティシート等)のOnCommandとOnNotify(他にもあるかも)で、いくつか問題があると思いますので提案です。

    ・メッセージが処理されなかったときにデフォルトハンドラを呼ばないことがあります。
    ・OnCommandのHIWORD(wParam)はそれを送信したコントロールの種類によって値が同じでも意味が違います。
     このあたりの作りこみが適当なので、誤動作の原因になる可能性があります。
     (違うコントロールのメッセージを誤って処理してしまう)
     まずコントロールがlParam=NULLの場合、HIWORD(wParam)=0はMenu,1はAcceleratorです。
    ・ハンドラの処理が長すぎて大変見づらいです。
     BN_CLICKEDはOnBnClickedで分割されてますので、他の同レベルのメッセージもハンドラに分割したほうが保守性向上や前述の誤動作防止にも役立つと思います。

    まあ、修正することになるとかなり広範囲になりますが、プログラム的な作りの問題だけでユーザに恩恵がないことなので参考まで。