2012-04-20 66 views
0

我明白CButton,CEdit等都是易于实现的方便类,但是为了覆盖它们并停止某些超类功能来实现您自己的按钮功能,这有点麻烦。仅仅覆盖CWnd并从头开始是不是更实际?这更多的是基于委托人的问题,即从头开始是不好的做法?在我看来,它更有意义,但我不想有什么被认为是写得不好的代码..?winapi - 我应该重写CButton或CWnd来创建自定义控件吗?

回答

1

很难获得标准控件的所有细微差别,所以如果你的标准控件需要完成相同的角色,你应该从标准开始。

此外,标准控件可以放置在对话框中,稍后覆盖。一个普通的CWnd需要被明确地创建。另一方面,覆盖微软设计控件的工作方式有时会令人生气。

不幸的是,这是最后的判断。每一起案件都会有所不同,不可能全面推荐。

+0

是的,现在看它更多的是你在特定情况下做什么的情况。我对覆盖MFC类只是有点怀疑,因为我通过覆盖CWndFrame创建自定义框架的经验非常“疯狂”。感谢你的回答 – user965369 2012-04-20 13:49:58

0

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

0

那么,从CButton这样的类开始增强按钮,CEdit以增强编辑控制总是更好。这样您就不必重新编写控件的基本功能&控件通知消息。

就用户界面而言,与CWnd相比,CButton中的用户界面覆盖率相当。所以最好提升CButton。此外,请记住CButton可以是单选按钮,复选框等。使用纯CWnd获得所有这些意味着很多工作。