VisualFC支持对话框的字体设计功能,通过在对话框程序中包括一个vfcfonts.h文件,配合VisualFC的WTL类向导就可以方便的为对话框中的控件进行字体设计。事例如下:
首先,新建一个WTL对话框应用程序,在使用资源编辑器编辑IDD_DIALOG,添加一个Static Text控件,将ID值由IDC_STATIC更改为IDC_VFC_STATIC,将Caption更改为VisualFC,然后拖动其边框到足够大小,再添加一个EDIT控件,将其属性设置为Multiline和Want return。启动VFC的WTL类向导,将Class Name切换为CMainDlg,选择WTL Font页面,其中上面窗口为控件列表,下面窗口为应用字体的控件列表,选中IDC_VFC_STATIC,点击Add Font按钮,将出现字体选择对话框,我们可以选择一个需要的字体并确认,然后再对IDC_EDIT的字体进行更改。最后按WTL类向导的确认按钮,将在CMainDlg中自动插入下列代码。
DLGFONT_CONTROL_EX(IDC_EDIT1, -20,0,0,0,400,0,1,0,134,3,2,1,2,_T(""))
DLGFONT_CONTROL_EX(IDC_VFC_STATIC, -48,0,0,0,700,255,0,0,0,3,2,1,18,_T("Times New Roman"))
然后我们手工加入所需头文件vfcfonts.h以及继承列表并在InitDialog中初始化字体控制。
#include <vfcfonts.h> //我们手工加入字体支持
class CMainDlg : public CDialogImpl<CMainDlg>, public CUpdateUI<CMainDlg>,
public CMessageFilter, public CIdleHandler,
public CDialogFont<CMainDlg> //我们手工加入字体支持继承类
...{
。。。
BEGIN_DLGFONT_MAP(CMainDlg)
DLGFONT_CONTROL_EX(IDC_EDIT1, -20,0,0,0,400,0,1,0,134,3,2,1,2,_T("宋体"))
DLGFONT_CONTROL_EX(IDC_VFC_STATIC, -48,0,0,0,700,255,0,0,0,3,2,1,18,_T("Times New Roman"))
END_DLGFONT_MAP()
。。。

LRESULT OnInitDialog(UINT /**//*uMsg*/, WPARAM /**//*wParam*/, LPARAM /**//*lParam*/, BOOL& /**//*bHandled*/)
...{
。。。。。
DlgFont_Init(); //我们手工加入对话框字体初始化支持
return TRUE;
}
}好了,编译一下,我们可以看一下运行效果,如图:
VFC的WTL类向导上的WTL Font页面上除了Add Font外还有一个Add DlgFont,这是用来设置所有未使用Add Font处理过的控件的字体用的(即未加入BEGIN_DLGFONT_MAP内的控件),可以用来控制对话控件的基准字体。
备注:vfcfonts.h文件可以在VFC的下载包中找到。
本文介绍如何使用VisualFC和WTL类向导为对话框控件设计字体,包括添加控件、设置字体属性及代码实现等步骤。
4167

被折叠的 条评论
为什么被折叠?



