双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

子类化的问题(纯SDK模拟MFC),急需高手!(UP者也有分数!)送完为止!!!(其实我就是那个说15天看完3本书的人)

loveghb loveghb 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我已经模拟了CObject,CWinApp,CWnd,CFramWnd,普通WM消息,但是到子类化以及WM_COMMAND等消息时就卡住了!现在很急!!!

关于子类化,比如BUTTON的子类化(没有用到MFC,纯SDK),因为系统已经帮它注册了,所以我们要子类化这样的对象只能有2种方法:
1:通过GetWindowLong和SetWindowLong把原来的处理过程保存,并设置新的处理过程,这样消息就流到BUTTON类里去了,然后处理完再调用原来的处理过程,实现子类化
2:消息还是先流到父类,然后WM_COMMAND消息的(HWND) lParam可以得到子类的HWND,通过在系统中建立一个HWND和子类的this指针的map,可以查到所需this,通过这个指针去调用子类的虚拟的消息处理函数,BUTTON等的owner可以通过判断返回值来决定是否自己还要处理一下。

如果不是系统定义的类,那就比较方便解决,我可以把this指针在CreateWindow的时候放在lpParam里,然后通过GetWindowLong来取得。但是系统定义的类,如“BUTTON”等就不行了吧?
我不知道自己理解的对不对,有人能看懂我发的东西吗?

不知道大家是怎么做的,以及有什么想法或者见解!欢迎大家啊!!!
...全文

相关推荐

评论 19
收藏 已收藏
分享
返回顶部
loveghb
VC/MFC 16,550 成员 421,605 内容