CWnd から派生した親ウィンドウに多数のボタンが接続されているプロジェクト (元々は Win95 用に作成されたものです!) を継承しました。ボタン自体は CWnd から派生したユーザー定義クラスにあるため、「実際の」ボタンではなく、膨大な数のコード行によって定義された小さなウィンドウであり、私が汗を流してきた大量の表示の問題があります。解決策が見えないまま、数週間。
先日、CBitmapButton が優れた代替手段のように見えると結論付けました。シンプルに見えますが、異なるボタンの状態に対して 4 つのビットマップを定義します。ハンドラーを起動するために必要なのは BN_CLICKED だけです。
これをしばらくいじり、ボタンといくつかのビットマップを設定した後、CBitmapButton を表示することができました。見栄えは良くありませんでしたが、修正できます...問題は、BN_CLICKEDメッセージをキャプチャするメッセージマップを設定しようとしたことですが、親ウィンドウはCDialogではなくCWndから派生しているため、構文エラーが発生しますメッセージ マップの設定。この件に関する MSDN を数回読んでみると、CBitmapButton を CDialog 派生クラスにしか接続できないようです。これは私にはかなり奇妙に思えます-私はボタンが欲しいだけで、単純な「クリックされました」を、それが接続されている親に送信できるはずですが、どうやら起こる運命にはありません。
それで、CBitmapButton を CWnd 派生の親に正常にアタッチした人はいますか。もしそうなら、これらのもので動作するメッセージマップをどのようにセットアップしますか? あるいは、CBitmapButton と CButton は親として CDialog を必要とするように見えるため、CWnd 親で動作するボタン クラスを設定するには、どのような方法を使用しますか?