近期将boost使用到相应项目中,并且抛弃ATL/WTL的CString,以及wxWidgets的wxString,改用stl::string。为了支持ANSI/UNICODE两种编译方式,决定写一个类型定义的头文件,并封装在名字空间中,发现在VS中使用的感觉很好。特记录一下。
头文件分两部分。一部分是名字空间的别名定义;另一部分为类型定义。
Tags: , ,
boost::filesystem应该会进入tr2,将成为C++0x的标准。这是一个跨平台的文件、路径操作操作库,通过其自身文档,可以很容易的实现多层目录的创建、目录与文件的判断,目录、文件的递归查找。
越是使用跨平台库,就越不愿意使用Windows API。以后能够用跨平台库、标准库解决的问题,坚持不使用WinAPI!
下面是一个递归查找的简单例子,支持宽字符。注:喜欢Unicode编程,但boost::filesystem::current_path()竟然不支持std::wstring,只能期待以后版本中能加强了。
项目中需要分解字符串,于是使用boost::tokenizer。为了以后扩展,决定要同时支持ANSI和Unicode编译,并且使用标准库。
首先定义tString:
#ifdef _UNICODE
typedef std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t>> tString;
#else
typedef std::basic_string<char, std::char_traits<char>, std::allocator<char>> tString;
#endif
打开ATL9目录中的atlstdthunk.h文件,可以看到ATL的thunk实现代码全在此。但该文件并不能直接用在其他winsdk工程中:因为__AllocStdCallThunk与__FreeStdCallThunk并没有定义,会导致链接错误。
Tags: , ,
从自学编程以来,先是接触纯WinSDK开发,捧着《Windows程序设计》,进行了大量的switch-case,当时向往MFC的消息映射,但不想学MFC。
后来发现了ATL/WTL,按道理说这是个好东西,于是开始学习,接触其中的BEGIN_MSG_MAP、MESSAGE_HANDLER,觉得很神奇:竟然这么轻松的将消息映射到类的成员函数中。可惜,并没有深入其代码,查找原因。
分页: 3/21 第一页 上页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]