子类化的问题(纯SDK模拟MFC),急需高手!(UP者也有分数!)送完为止!!!(其实我就是那个说15天看完3本书的人)
我已经模拟了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”等就不行了吧?
我不知道自己理解的对不对,有人能看懂我发的东西吗?
不知道大家是怎么做的,以及有什么想法或者见解!欢迎大家啊!!!
关于子类化,比如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”等就不行了吧?
我不知道自己理解的对不对,有人能看懂我发的东西吗?
不知道大家是怎么做的,以及有什么想法或者见解!欢迎大家啊!!!
...全文
相关推荐
走出MFC子类化的迷宫
以前总搞不清mfc子类化是如何实现的,它与windows子类化的关系,看到这篇文章后霍然开朗,特推荐给大家共享。
VLC与MFC集成实现视频播放
本文介绍如何在传统MFC框架中集成libVLC,实现对H.265、RTSP等现代音视频格式的流畅播放。涵盖初始化、视频渲染、事件回调、资源管理等关键步骤,并解决实际工程中的常见问题,适用于工业控制、医疗设备等老旧系统升级场景。
子类化和所有者图纸,SDK方式
这篇文章描述了如何使用Win32 SDK来对控件进行子类化,以及如何使用所有者绘制为控件提供自定义外观。
WINCE6.0中文模拟器SDK(MFC)
WinCE6.0中文模拟器的SDK,支持MFC。
窗口的子类化与超类化原理及其实例
详细描述窗口的子类化与超类化原理及其实例 子类化是这样一种技术,它允许一个应用程序截获发往另一个窗口的消息。一个应用程序通过截获属于另一个窗口的消息,从而实现增加、监视或者修改那个窗口的缺省行为。子类化是用来改变或者扩展一个已存在的窗口的行为、而不用重新开发的有效途径。 超类化可以完成比子类化更复杂的功能,在SDK范畴上,可以认为子类化是超类化的子集。



