CDialogでOnEraseBkgnd()を追加するには、クラス情報でメッセージフィルタを「ウィンドウ」にしてから、WM_ERASEBKGRNDの関数を追加する

背景のクリアを防ぎたいと思って、ClassWizardでWM_ERASEBKGRNDを追加しようとしても、見当たらない。
これはフィルタされているのが原因。

ClassWizard を使わずに手書きしてもいいけど、ClassWizardでも使えるようにできる。

  1. ClassWizard を開き、「クラス情報」ページを選択する
  2. 右上の「クラス名」ドロップダウンリストで対象とするダイアログクラスを選択する
  3. 下の「詳細設定オプション」の中の「メッセージフィルタ」ドロップダウンリストで「ダイアログ」となっているのを「ウィンドウ」に変更する

これで「メッセージマップ」ページにもどれば、「メッセージ」リストで WM_ERASEBKGND も選択できるようになっている。
関数追加したら、他の作業のために忘れないうちにここでメッセージフィルタを「ダイアログ」に戻しておくのが吉。


ネタ元