winapi - 我应该覆盖CButton或CWnd来创建自定义控件吗?

时间:2012-04-20 13:09:42

标签: c++ windows

据我所知,CButton,CEdit等都是易于实现的易用类,但是为了覆盖它们并停止某些超类函数来实现自己的按钮功能,这是一个小小的问题。仅仅覆盖CWnd并从头开始是不是更实际?这更像是一个基于主体的问题,即从头开始是不好的做法?在我看来它更有意义,但我不想拥有被认为是错误编写的代码..?

3 个答案:

答案 0 :(得分:1)

很难获得标准控件的所有细微差别,因此,如果您希望填写相同的角色,则应该从标准开始。

标准控件也可以放在对话框中,稍后再覆盖。需要明确创建一个普通的CWnd。

另一方面,覆盖微软设计控件的方式有时令人抓狂。

不幸的是,这最终是一次判决。每个案例都会有所不同,不可能提出全面的建议。

答案 1 :(得分:0)

你可以这样做,但如果你的自定义控件是一个按钮,那么继承CButton就会容易得多。

答案 2 :(得分:0)

嗯,最好从像CButton这样的类开始增强按钮,CEdit来增强编辑控件。这样您就不必重新编写控件的基本功能&控制通知消息。

就UI而言,与CWnd相比,您可以控制覆盖CButton中的UI。所以最好是增强CButton。

此外,请记住CButton可以是单选按钮,复选框等。使用普通CWnd获取所有这些意味着很多工作。