MFC程序员WTL指南(5)对话框与控件
2008-01-18 20:24:13 来源:WEB开发网核心提示:运行ControlMania1,用鼠标点击树控件上的+/-按钮,MFC程序员WTL指南(5)对话框与控件(9),你就会看到消息处理函数的作用-节点展开后就不能再折叠起来,容易出错和混淆的地方 对话框的字体如果你像我一样对界面非常讲究并且正在只用windows 2000或XP,WTL对新控件的封装和自画控件、自定外观控件
运行ControlMania1,用鼠标点击树控件上的+/-按钮,你就会看到消息处理函数的作用-节点展开后就不能再折叠起来。
容易出错和混淆的地方 对话框的字体
如果你像我一样对界面非常讲究并且正在只用windows 2000或XP,你就会奇怪为什么对话框使用MS Sans Serif字体而不是Tahoma字体,因为VC6太老了,它生成的资源文件在NT 4上工作的很好,但是对于新的版本就会有问题。你可以自己修改,需要手工编辑资源文件,据我所知VC 7不存在这个问题。
在资源文件中对话框的入口处需要修改3个地方:
- 对话框类型: 将DIALOG改为DIALOGEX
- 窗口类型: 添加DS_SHELLFONT
- 对话框字体: 将MS Sans Serif改为MS Shell Dlg
不幸的是前两个修改会在每次保存资源文件时丢失(被VC又改回原样),所以需要重复这些修改,下面是改动之前的代码:
IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 187, 102
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "About"
FONT 8, "MS Sans Serif"
BEGIN
...
END
这是改动之后的代码:
IDD_ABOUTBOX DIALOGEX DISCARDABLE 0, 0, 187, 102
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "About"
FONT 8, "MS Shell Dlg"
BEGIN
...
END
这样改了之后,对话框将在新的操作系统上使用Tahoma字体,而在老的操作系统上仍旧使用MS Sans Serif字体。
_ATL_MIN_CRT
本文的论坛 FAQ已经做过解释, ATL包含的优化设置让你创建一个不使用C运行库(CRT)的程序,使用这个优化需要在预处理设置中添加_ATL_MIN_CRT标号,向导生成的代码在Release配置中默认使用了这个优化。由于我写程序总是会用到CRT函数,所以我总是去掉这个标号,如果你在CString类或DDX中用到了浮点运算特性,你也要去掉这个标号。
继续
在第五章,我将介绍对话框数据验证(DDV),WTL对新控件的封装和自画控件、自定外观控件等一些高级界面特性。
修改记录
2003年4月27日,本文第一次发表。
更多精彩
赞助商链接