0

CButton、CEditなどはすべて実装が簡単な便利なクラスであることを理解していますが、それらをオーバーライドして特定のスーパークラス関数を停止し、独自のボタン機能を実装するのは少し面倒です。CWndをオーバーライドして、最初から始める方が実用的ではないでしょうか。これはよりプリンシパルベースの質問です。つまり、そのように最初から始めるのは悪い習慣ですか?私の見解では、それはより理にかなっていますが、私はひどく書かれたコードと見なされるものを持ちたくありません。

4

3 に答える 3

1

標準コントロールのニュアンスをすべて把握するのは難しいため、同じ役割を果たすことが期待される場合は、おそらく標準から始める必要があります。

また、標準コントロールをダイアログに配置して、後でオーバーライドすることもできます。プレーンな CWnd を明示的に作成する必要があります。

一方で、Microsoft がコントロールを機能させるように設計した方法をオーバーライドすることは、場合によっては腹立たしいことです。

残念ながら、それは最終的に判断の呼びかけです。すべてのケースが異なるため、一概に推奨することはできません。

于 2012-04-20T13:16:05.197 に答える
0

それを行うこともできますが、カスタム コントロールがボタンなどの場合は、CButton を継承する方がはるかに簡単です。

于 2012-04-20T13:16:24.760 に答える
0

CButton などのクラスから開始してボタンを拡張したり、CEdit から編集コントロールを拡張したりすることをお勧めします。この方法では、コントロールの基本機能とコントロール通知メッセージを書き直す必要はありません。

UI に関する限り、CWnd と比較して、CButton での UI のオーバーライドを同等に制御できます。したがって、CButton を拡張することをお勧めします。

さらに、CButton はラジオ ボタン、チェックボックスなどにすることができることを覚えておいてください。単純な CWnd ですべてを取得すると、多くの作業が必要になります。

于 2012-04-20T13:19:00.967 に答える