自定义了一个CFileDialogEx,其 继承于CFileDialog。
在某个类A中这样使用
CFileDialogEx  dlg;
dlg.Domodal();
而CFileDialogEx的构造函数这样定义static TCHAR szFilter[]="自定义预打开的文档类型";CFileDialogEx::CFileDialogEx(LPCTSTR str,DWORD dw, CWnd pParent):CFileDialog(TRUE,NULL,NULL,dw|OFN_HIDEREADONLY,szFilter,pParent)
{
......
}
在类A中有一个标志量,想达到这样的效果,当标志量为TRUE时,Domodal时显示过滤条件为szFilter的文件对话框,当标志量为FALSE时,Domodal时显示我自定义的另一过滤条件的文件对话框,请高手指点我应该如何改进呢?

解决方案 »

  1.   

    CFileDialogEx::CFileDialogEx(LPCTSTR str,DWORD dw, CWnd pParent,BOOL b = TRUE):CFileDialog(b,NULL,NULL,dw|OFN_HIDEREADONLY,szFilter,pParent)
    {
    ......
    }
      

  2.   

    另外,类A中的那个标志量如何传递给CFileDialogEx来判断使用哪个构造函数呢?
      

  3.   

    shanhqk(山) 第一个参数是表示该对话框是OpenDialog还是Save As吧?我是想根据我从类A中的一个标志量来改变第5个参数呢?我有两个自定义的过滤条件
      

  4.   

    你可以将两个过滤条件一起加到打开对话框的下拉列表框中啊
    干嘛分开了写
    要么就用两个CFileDialogEx对象
      

  5.   

    搞定了,在CFileDialogEx的构造函数中增加一个表示过滤条件的参数,在使用CFileDialogEx的地方根据标志条件来设置这个过滤条件,将它作为参数传递给CFileDialogEx构造函数:CFileDialogEx::CFileDialogEx(LPCTSTR strFilter,LPCTSTR str,DWORD dw, CWnd pParent,BOOL b = TRUE):CFileDialog(b,NULL,NULL,dw|OFN_HIDEREADONLY,szFilter,pParent)
    {
    ......
    }
      

  6.   

    使用的地方:
    if(标志位 TRUE)
      strFilter = ...
    else
      strFilter = 
    CFileDialogEx  dlg(strFilter);
    dlg.Domodal();
      

  7.   

    CFileDialogEx::CFileDialogEx(LPCTSTR strFilter,LPCTSTR str,DWORD dw, CWnd pParent,BOOL b = TRUE):CFileDialog(TRUE,NULL,NULL,dw|OFN_HIDEREADONLY,szFilter,pParent,b)
    {
    ......
    }
    那么
      

  8.   

    发错了,应该是这样的
    CFileDialogEx::CFileDialogEx(LPCTSTR strFilter,LPCTSTR str,DWORD dw, CWnd pParent,BOOL b = TRUE):CFileDialog(TRUE,NULL,NULL,dw|OFN_HIDEREADONLY,szFilter,pParent)
    {
    ......
    }