2012-04-20 8 views
0

私はCButton、CEditなどは実装が簡単なすべてのクラスですが、それらをオーバーライドし、独自のボタン機能を実装するために特定のスーパークラス関数を停止することは、ちょっとしたことです。 CWndをオーバーライドしてゼロから始めようとするのはもっと現実的ではないでしょうか?これはプリンシパルベースの質問です。つまり、最初からやり直すのは悪い習慣ですか?私の見解ではより意味をなさないが、私はひどく書かれたコードと見なされることを望んでいない。winapi - カスタムコントロールを作成するにはCButtonまたはCWndをオーバーライドする必要がありますか?

答えて

1

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

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

一方、マイクロソフトが設計したコントロールを動作させる方法を無効にすると、ときどき狂ってしまうことがあります。

残念ながら、それは最後に判断の呼び出しです。すべてのケースが異なり、包括的な勧告をすることは不可能です。

+0

ええ、それを見てみましょう、今あなたのperticularインスタンスで何をしているのより多くの場合。 CWndFrameをオーバーライドしてカスタムフレームを作成した経験が非常に魅力的だったので、私はMFCクラスをオーバーライドするのに少し懐疑的でした。答えをありがとう – user965369

0

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

0

まあ、ボタンを強調するためにCButtonのようなクラスから始めて、編集コントロールを強化するためにCEditを使うのが常に良いです。この方法では、コントロールの基本機能&制御通知メッセージを書き換える必要はありません。

UIに関しては、CButtonのUIをCWndと比較してオーバーライドすることについて、同等のコントロールがあります。したがって、CButtonを強化する方が良いです。

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