|
CFileDialog的个性化(VC++) 本文是为标准的文件选择对话框添加控件以扩展它的功能。为了做到这点,要把CFileDialog类派生,还要准备粘贴控件用的对话框模板,把控件的消息响应入口追加到MESSAGE-MAP中。 例程。文件选择对话框在选择文本文件时,可以预览这个文件的内容。 1.生成对话框模板。作一个对话框的资源,比如ID为IDD_DIALOG1。其属性如下设定。 IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 187, 128
STYLE WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN
FONT 9, "MS Sans Serif"
BEGIN
LTEXT "Static",stc32,7,7,173,114
EDITTEXT IDC_EDIT_PREVIEW,7,18,102,30,ES_MULTILINE |
ES_AUTOHSCROLL | ES_WANTRETURN
PUSHBUTTON "Button1",IDC_BUTTON_PREVIEW,143,36,37,23
END2.追加控件。首先追加一个ID为stc32的大一点的静态文字控件(Static)。然后在它的下面,追加预览用的多行编辑框(ID=IDC_EDIT_PREVIEW)和起动预览用的按钮(ID=IDC_BUTTON_PREVIEW)。 3.生成CFileDialog的派生类,比如叫CFileDlg。为了指定资源ID,追加如下的代码到CFileDlg里。这个追加还有一个意义,那就是可以用MFC的类精灵工具(MFC ClassWizard)来作相应的处理。 // Dialog Data 4.把上面生成的对话框模板,安装到CFileDlg的类创建函数里,代码如下。 CFileDlg::CFileDlg(BOOL bOpenFileDialog, ...) :
CFileDialog(bOpenFileDialog, ...) 5.填写按钮(ID=IDC_BUTTON_PREVIEW)的响应函数。从CFileDlg类的实体对话框取得文件的全路径,打开文件,把其内容显示在编辑框(ID=IDC_EDIT_PREVIEW)上。 void CFileDlg::OnPreview() 6.结果测试。 CFileDlg dlg(TRUE);
|