发信人: skyice()
整理人: softlag(2000-06-14 11:17:35), 站内信件
|
步骤:
1.创建新的通用文件对话框类
注意
如果用户不希望为文件对话框增加自己的控件,便不需要创建新的类,
因此可以略过这一部分。
使用ClassWizard从CFileDialog中派生新的类。
用Dialog Editor创建一个小的对话框模板,模板中仅包括用户希望添
加到通用文件对话框上的控件。该通用对话框将自动创建对话框中可见的其
余标准控件,因此用户不必担心它们,只需创建新的控件即可。模板应该具
有一个不带框架的子窗口风格。
用ClassWizard为新的控件添加消息处理函数,为了访问由文件对话框
自动添加的控件,可以用GetDlgItem()函数和下面任一个ID号,ID与控件
匹配关系在以后的windows版本中可能会改变:
psh1-12 // push buttons
chx1-12 // checkboxes
rad1-12 // radio buttons
grp1-12 // group boxes
stc1-12 // statics
lst1-12 // listboxes/views
cmb1-12 // comboboxes
edt1-12 // edit boxes
scr1-12 // scrollbars
2.初始化通用文件对话框类
为使用CFileDialog对话框类或自己的派生类,首先构造通用文件对话
框类如下:
CWzdFileDialog dlg(
TRUE,
_T(".log"),
"",
OFN_ALLOWMULTISELECT|
OFN_ENABLETEMPLATE |
0,
"Accounting Files (*.log;*.txt)|*.log;"
"*.txt|All Files (*.*)|*.*||",
NULL);
如果要在对话框中添加自己的控件,那么也必须定义文件对话框打开时
的对话框模板,代码如下:
dlg.m_ofn.lpTemplateName=MAKEINTRESOURCE(IDD_WZD_FILEOPEN);
当构造上面的类时,必须设置OFN_ENABLETEMPLATE标志。
用下面的代码使通用文件对话框在开始时使用一个特定目录:
char lpszInitDir[]={"c:\\temp"};
dlg.m_ofn.lpstrInitialDir=lpszInitDir;
用下面的代码将文件对话框命名为Open或Save File As:
char lpszTitle[]={"Open Wzd File"};
dlg.m_ofn.lpstrTitle=lpszTitle;
为设置一个在文件对话框关闭后仍然保留的文件过滤器,首先设置一个
如下所示的静态字符串:
static char lpstrCustomFilter[255]={"Previous Filter\0*.log\0"};
然后用它的地址初始化文件对话框,如下所示:
dlg.m_ofn.lpstrCustomFilter=lpstrCustomFilter;
dlg.m_ofn.nMaxCustFilter=255;
3.创建通用文件对话框和检索值
用CfileDialog::DoModal()函数打开一个文件对话框,然后检查用户
是否已经单击IDOK,如果是,则从对话框中获得该值:
if (dlg.DoModal()==IDOK)
{
检索用户选择的文件名,这可以使用下面任何一个函数:
CString path=dlg.GetPathName(); //ex: c:\temp\temp.tmp
CString file=dlg.GetFileName(); //ex: temp.tmp
CString title=dlg.GetFileTitle(); //ex: temp
CString ext=dlg.GetFileExt(); //ex: tmp
可以用下面的代码确定用户选择了哪一个文件过滤器:
int nFilterIndex=dlg.m_ofn.nFilterIndex;
该过滤器作为索引返回到各种可能的文件过滤器列表中。
为了获得只读(Read Only)复选框的状态,可以用下面的代码:
BOOL bReadOnly = dlg.GetReadOnlyPref();
如果用户选择了多个文件(在上面设置了OFN一ALLOWMULT1SELECT),
那么可以用下面的代码翻动它们:
for (POSITION pos=dlg.GetStartPosition();pos;)
{
CString pathx=dlg.GetNextPathName(pos);
}
注意,当选择多个文件时,必须分析文件名以获得文件的标题和扩展名
等等。
另外,尽量不要使用CFileDialog提供的Help,用户应该通过添加和运
行Help来得到更好的使用效果。
-- ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.99.90.56]
|
|