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中初始化字体控制。
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的下载包中找到。