作者:朱金灿
来源:http://blog.csdn.net/clever101
昨晚看了《MFC程序员的WTL教程》的第一章ATL的窗口实现,有以下感觉:
1. 感觉ATL的窗口实现比MFC轻便多了。
2. ATL窗口类的扩展机制比MFC的窗口类扩展机制要好。MFC的窗口类扩展采用的传统的C++的虚函数的机制(除开消息分发部分)。ATL采用类模板的机制,在保持面向对象特征的同时具有更高的运行效率。书中的那句例程:
CHAIN_MSG_MAP(CPaintBkgndBase)
该句代码的意思是任何到达 CMyWindow 映射而没有处理的消息将被传递到CPaintBkgnd的映射中。个人感觉这样写并不十分恰当,我觉得更好的写法是:
MESSAGE_HANDLER(WM_ERASEBKGND,CPaintBkgndBase::OnEraseBkgnd)
这样更能体现ATL类的扩展特征。
3.ATL比起MFC的稍微不便的地方是需要手动添加消息处理宏,以及 消息处理函数中需要分清WPARAM wParam和LPARAM lParam两个参数的意义。不过我觉得对于具有MFC基础和Win API基础的程序员而言,这一点不会不算什么困难。
其它的不谈了,具体看代码吧(在Win XP + sp3, VS 2005+ sp1,WTL 8.0下编译)。例程下载。
分享到:
相关推荐
• 定义窗口实现 o 填充消息映射 • 高级消息映射链和嵌入(Mix-in)类 • ATL EXE 的结构 o VC 6 的情形 o VC 7 的情形 第二部分 - WTL 中的 GUI 基础类 • 下载示例代码 - 119 K 内容 • 第二部分介绍 • WTL ...
·使用ATL窗口类和控件建立独立的应用程序和UI组件。 ·使用ATL Servet开发可以运行在微软IIS上的Web应用程序。 虽然.NET系统从1998年才开始其发展进程。但它已经使很多开发人员的编程发生了革命性的变化,并在...
您必须加一个宏映射来实现DoDataExchange,然后加入调用它的代码.现在WTL也有GDI类了.然而,HDC的封装类就像CWindow一样,只进行了很简单的封装 - 它几乎没有加入任何新的功能.不过,在WTL,你可以得到播放meta文件和...
由于实现方式、及部分资源参考两者,望别有版权之事,只要研究学习而已。 手势时,创建一窗口,并将内容靠过来,响应此窗口的消息。 框架实现 撤销、前进、关闭、退出等命令。 L 左 R右 D下 U 上 DL 全部...
ATL实现的CDHtmlDialog模板类v1.03 使用了六个类五个模块类演示了atl的调用方法 autoplaysnd mp3 播放器源码 重载了自带的控件进行播放 aviplayer avi播放器源码 引用了atl控件播放 beautifulskin 源码 演示了...
ATL实现的CDHtmlDialog模板类v1.03 使用了六个类五个模块类演示了atl的调用方法 autoplaysnd mp3 播放器源码 重载了自带的控件进行播放 aviplayer avi播放器源码 引用了atl控件播放 beautifulskin 源码 演示了...
ATL实现的CDHtmlDialog模板类v1.03 使用了六个类五个模块类演示了atl的调用方法 autoplaysnd mp3 播放器源码 重载了自带的控件进行播放 aviplayer avi播放器源码 引用了atl控件播放 beautifulskin 源码 演示了...
ATL实现的CDHtmlDialog模板类v1.03 使用了六个类五个模块类演示了atl的调用方法 autoplaysnd mp3 播放器源码 重载了自带的控件进行播放 aviplayer avi播放器源码 引用了atl控件播放 beautifulskin 源码 演示了...
ATL实现的CDHtmlDialog模板类v1.03 使用了六个类五个模块类演示了atl的调用方法 autoplaysnd mp3 播放器源码 重载了自带的控件进行播放 aviplayer avi播放器源码 引用了atl控件播放 beautifulskin 源码 演示了...
ATL实现的CDHtmlDialog模板类v1.03 使用了六个类五个模块类演示了atl的调用方法 class CDHtmlSinkHandler; // Events Sink Base class CDHtmlEventSink; // IHTMLDocument2 Events Sink // IDispatch class ...
初期的MFC只实现了文档-视结构以及相关的Windows编程接口,那时候MFC代码还是比较简捷的,但是随着Windows窗口元素的复杂化,以及OLE和多线程等特性的加入,MFC已经非常膨大、非常累赘了,这时再要根据MFC源代码来...
初期的MFC只实现了文档-视结构以及相关的Windows编程接口,那时候MFC代码还是比较简捷的,但是随着Windows窗口元素的复杂化,以及OLE和多线程等特性的加入,MFC已经非常膨大、非常累赘了,这时再要根据MFC源代码来...
学习以c#的必备书 本书介绍了如何使用Visual C++ 6.0编写Windows应用程序。全书内容全面、结构清晰、由浅入深、注重实用,并结合了大量的实例,以方便读者理解。本书既包含菜单、鼠标、键盘等基本操作,又包含图形...
初期的MFC只实现了文档-视结构以及相关的Windows编程接口,那时候MFC代码还是比较简捷的,但是随着Windows窗口元素的复杂化,以及OLE和多线程等特性的加入,MFC已经非常膨大、非常累赘了,这时再要根据MFC源代码来...
初期的MFC只实现了文档-视结构以及相关的Windows编程接口,那时候MFC代码还是比较简捷的,但是随着Windows窗口元素的复杂化,以及OLE和多线程等特性的加入,MFC已经非常膨大、非常累赘了,这时再要根据MFC源代码来...
初期的MFC只实现了文档-视结构以及相关的Windows编程接口,那时候MFC代码还是比较简捷的,但是随着Windows窗口元素的复杂化,以及OLE和多线程等特性的加入,MFC已经非常膨大、非常累赘了,这时再要根据MFC源代码来...
初期的MFC只实现了文档-视结构以及相关的Windows编程接口,那时候MFC代码还是比较简捷的,但是随着Windows窗口元素的复杂化,以及OLE和多线程等特性的加入,MFC已经非常膨大、非常累赘了,这时再要根据MFC源代码来...
初期的MFC只实现了文档-视结构以及相关的Windows编程接口,那时候MFC代码还是比较简捷的,但是随着Windows窗口元素的复杂化,以及OLE和多线程等特性的加入,MFC已经非常膨大、非常累赘了,这时再要根据MFC源代码来...
初期的MFC只实现了文档-视结构以及相关的Windows编程接口,那时候MFC代码还是比较简捷的,但是随着Windows窗口元素的复杂化,以及OLE和多线程等特性的加入,MFC已经非常膨大、非常累赘了,这时再要根据MFC源代码来...
最近需要用到C++和Matlab的混编,记录一下学习过程。 要实现的是调用Matlab函数,求矩阵前k个最小的特征值及其特征向量。 //C++ #include engine.h //使用Matlab引擎需要包含的头文件 #include using namespace ...