这个对话框,我想用过MFC的人都会注意到红框部分,它实际上是一个扩展的CFileDialog。但是你有没有想到这其中还有一个微软的专利呢?
MSDN上有篇文章,DLGCBR32 Sample,讲怎么在一个对话框中使用toolbar,并且讲解了怎样响应toolbar的update消息()。示例工程里面有个知识点,文章没有提及,就是为什么选用非模式对话框程序来演示在对话款里添加工具栏。
用mfc的人总是使用CString,很少用c++标准库中的string,认为无所谓同时用两个类。
而且CString是mfc里面的一个很基础的类,mfc大多数函数都会用它当参数或者返回值,或者有很多对应的转换函数,因此,使用mfc就会大量使用CString。
但是却有一个使用MFC却还得使用<string>而不是CString的一个必要理由。那就是在一个mfc工程中,需要同时使用ansi和unicode的string,这个时候CString无能为力了。
如果你定义了UNICODE,那么CString就一直是UNICODE的,你想有个ansi的string成员,或者在某个函数内部使用ansi的string,CString也做不到。(也许可以用#ifdef UNICODE #undef UNICODE #endif来实现?)
而string则不存在这个问题,因为它有两个不同的类来表示ansi和unicode:string和wstring。真是不错。
MFC的“异常”
C++异常回顾