複数のアプリケーションで使用するMFCのコントロールをいくつか拡張します。私はラベルとグループボックスを同様に拡張する派生クラスを持っています。なぜならそれらは静的ラベルであり、必要な描画操作だけであるからです。コントロールを拡張するときのコントロールの種類(静的、ボタン、Gropboxなど)の特定
私の派生したclass Label : public CWnd
には、OnEraseBkgnd
とOnPaint
msgハンドラが正しく書かれています。すべてがラベルとグループボックスでうまくいきますが、私は自分ですべてを描いても構いません。
私の質問は、この派生クラスの観点から、私は静的ラベルかグループボックスかどうかをどうやって判断するのですか?
もちろん、コントロールの種類を示すための変数や関数を追加したり、アプリケーションの先頭に設定したり、それに応じて描画したりすることができます。しかし、アプリケーションコードではなく、拡張クラスのコードでこれを解決したいと思います。
注:私はGetStyle()
を試してみましたが、BS_GROUPBOX
をチェックしてきた、それはBS_GROUPBOX
と同じにすることができSS_*
静的なスタイルのいくつかの組み合わせから、助けにはなりません。
[GetClassName](https://msdn.microsoft.com/en-us/library/windows/desktop/ms633582.aspx)。 – IInspectable
これは非常に有望ですが、残念ながらそれは私を直接助けません。 'GetClassName'はグループボックスの"ボタン "を返します。私はそれがリソースファイルで定義されているように、GROUPBOXテキストを取得したかったのです。 – Alparslan
プッシュボタンとグループボックスを区別する方法はすでに分かっています。あなたはボタンコントロールと静的コントロールを区別するための助けが必要でした。そして、 'GetClassName'はそれだけです。時には2つのLEGO®ピースを一緒に置く必要があります。リソースファイルステートメントは、リソース定義構文の成果物です。リソースコンパイラが完了すると、キーワードはなくなります。 – IInspectable