如何扩展CWnd类?

ieswl 2000-01-04 12:33:00
我为了改进界面,要扩展CWnd类。
但不知怎么扩展,才能使Cwnd类的派生类(CView,CDialog等)自动
从扩展的CWnd类继承新的特性?

谢谢

--

我是一阵风,来去总匆匆
寂寞难耐时,独醉游戏中

...全文
265 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zdg 2000-01-05
  • 打赏
  • 举报
回复
MFC实现你这样的功能确实有点困难...
因为CView和CDialog有很多的不同, 没有办法统一...
为什么不用Delphi呢???
ieswl 2000-01-05
  • 打赏
  • 举报
回复
是这样的,我要做一个应用程序,里面有对话框,有视窗,我希望所有这些窗体都具有统一的风格,像NeoPlanet一样,而且支持插件,动态更新界面。这样在C++Build里只要扩展TForm类就可以,但在MFC中,视图是从CView中派生,对话框是从CDialog中派生。还有一些控件直接从CWnd中派生。所以我要扩展CWnd类,是这些都有一个统一的风格。我实在不想重新构建整个窗体控件体系,那样太累。
WHQ 2000-01-05
  • 打赏
  • 举报
回复
每一类窗口都有一个相关的窗口过程——处理窗口消息的函数,我们自己写的窗口类的窗口过程自然可以由我们自己完全控制,但对于Windows系统中预定义的那些窗口类,如EDIT、LISTBOX、COMBOBOX、TABCONTROL之类,Windows已给它们分配的相关的窗口过程,也就是说它们对消息的处理已确定了,即它们对鼠标、键盘的响应,显示外观等等已定义好了,但有时又不想采用预定义的风格,我们想重新定义它们的行为,比如我们想把EDIT框画成圆的,或让LISTBOX每行显示不同的颜色或字体,可我们无法更改Windows内部的代码,于是Windows为我们早已留下一个条途径,这就是子类化。
子类化就是你自己写一个消息处理函数,然后用它替换掉某一个窗口类中原来的窗口过程,这样你就可以随心所欲地控制窗口的行为了。子类化的实现方法并不难,你可以参考有关SDK手册就行。
ieswl 2000-01-05
  • 打赏
  • 举报
回复
不管怎么说还是谢谢你,
我是给公司做程序,身不由己嘛
谢你啦,
我想顺便问问知道SubClass是怎么一回事吗?
zdg 2000-01-04
  • 打赏
  • 举报
回复
第一种方法: 直接修改MFC库的源文件, 将CWnd改成你需要的, 那么它继承的所有类都会有相应的特性, 这种方法不可取, 因为修改了MFC.
第二种方法: 从CWnd扩展CWndExt类, 程序中所有从CWnd继承来的类均要改成CWndExt.
比如将:
class MyClass : public CWnd
改成:
class MyClass : public CWndExt

zdg 2000-01-04
  • 打赏
  • 举报
回复
你肯定不是用CView和CDialog, 一般程序都是它的派生类...
你如果希望都用CWndExt的特性, 为什么不直接继承CWndExt呢???
ieswl 2000-01-04
  • 打赏
  • 举报
回复
多谢,不过还有点疑问想请教
请问,有没有办法让CDialog、CView类也继承CWndExt类的新特性呢?
我不太想动MFC的源码。在DELPHI和C++Build中,所有对话框和窗口
都是从TForm派生,而VC中分成了视图窗口和对话框,我要采用统一的
新风格,在DELPHI和C++Build中可以扩展TForm类,但在VC中,我想
不至于重写CView和CDialog才能共同继承CWndExt类吧?

16,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧