随笔分类 -  ATL/WTL

摘要:用VC做GUI是一件相当闹心的事,自绘、各种细节调整真的需要程序员很要有耐心,而且当碰到朝令夕改的情况时,那就会让人抓狂了.现在发现很多软件的显示都是基于网页控件了,这办法好啊,改界面的事完全可以推给美工了,大善! 阅读全文
posted @ 2009-05-05 19:04 孤竹君 阅读(1115) 评论(0) 推荐(0)
摘要:经常需要将一些内容写进临时文件,这就需要结合GetTempPath和GetTempFileName在Windows临时目录下生成一个临时文件。ATL提供了类CAtlTemporaryFile来进行这层封装,可使用此类时,才发现该类有多么地鸡肋啊. 阅读全文
posted @ 2009-05-05 14:35 孤竹君 阅读(590) 评论(0) 推荐(0)
摘要:很久以前就喜欢上了模板编程,当接触到ATL风格的模板时更是觉得惊艳。典型的ATL模板如下所示: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->templateclass CBaseT{public: void InitBaseMethod(... 阅读全文
posted @ 2009-04-22 11:00 孤竹君 阅读(537) 评论(1) 推荐(1)
摘要:字符串的ASCII和UNICODE之间的转换很常用,Win32提供了API函数MultiByteToWideChar和WideCharToMultiByte来提供这种功能。但凡Win32的API,参数调用都不会少,因此使用起来也就觉得有点繁琐。ATL3中提供了字符串转换宏,如T2W、A2T等,不过使用它们需要借助本地变量,因此在使用之前需要声明USES_CONVERSION宏来声明本地变量.而且还有个很大的缺陷:转换宏总是使用栈存储,它们在运行时调用_alloca在本地栈上分配额外的空间,如果在函数中循环地进行转换,很可能因为栈空间用尽而崩溃,因为栈空间在函数退出后才能释放。还有个很严重的问题:若在C++ catch块中使用转换宏,_alloca调用会搅乱栈上的异常跟踪信息而使程序崩溃。 阅读全文
posted @ 2009-04-20 10:29 孤竹君 阅读(1916) 评论(0) 推荐(0)
摘要:众所周知,C++与其他语言(如C#,JAVA)一个很大的不同就是C++支持从多个类继承。 但是多继承经常遇到这样一种情况,如果有两个或多个基类有相同名字和标记的方法, 继承类该怎么去实现。如有2个基类,代码如下: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.co... 阅读全文
posted @ 2009-03-31 20:20 孤竹君 阅读(597) 评论(0) 推荐(0)
摘要:最近看深入解析ATL这本书的时候看到ATL中的窗口类实现的时候,很是惊异于ATL的Thunk的运用技术,,ATL运用Thunk技术把C++的成员函数置换成Windows窗口的消息处理函数。那么更古老的MFC框架又是怎么实现CWnd类到HWND窗口类之间的映射的呢? 下面的文章将ATL和MFC的窗口封装机制做个对比. 阅读全文
posted @ 2009-03-31 20:07 孤竹君 阅读(1156) 评论(0) 推荐(0)