1. 现需要打开文件选择窗时支持模糊搜索,直接使用CFileDialog是有这个搜索框的,但是由于有一些定制,定义了一个新的类,这个类继承自CFileDialog,设置过自定义模板之后,这个搜索框就没有了,不知道是否有什么方法可使它显示出来 ?2. 因为不知道如何将搜索框显示出来,我自己添加了一个编辑框来做模糊搜索,但是有个问题,无法将搜索出来的结果显示到CFileDialog自带的列表框。这个列表框我是通过枚举子控件获取到的,读取、清除项都没有问题,但是不论像一般的ListControl,或者通过发送LVM_** 系列消息(如LVM_INSERTITEM),都无法更改其显示的内容,比如我全部清除之后,插入一行我自定义的数据 ,结果并没有显示出来,显示的是原结果的第一行。个人猜测会不会是我其实改成功了,但CFileDialog自己存了一套数据,在我改完之后又重设了一遍,把我的覆盖了?求教各位大神,任何意见都感激不尽!

解决方案 »

  1.   

    // CommonDialog File Open
    void CMyFileOpenDlg::OnButtonNew() 
    {
    // TODO: Add your control notification handler code here
    char fileName[MAX_PATH]="";
    CExpFileOpen dlgFile(FALSE);//TRUE);
    // CFileDialog dlgFile(TRUE);
    //if use new style!
    OSVERSIONINFO VersionInformation;   
    GetVersionEx(&VersionInformation);
    if(VersionInformation.dwMajorVersion >= 5)
    dlgFile.m_ofn.lStructSize=88;// new =88
    else
    dlgFile.m_ofn.lStructSize=76;// old =76
    dlgFile.m_ofn.Flags |= OFN_ENABLETEMPLATE;// add our temp !
    dlgFile.m_ofn.lpTemplateName = MAKEINTRESOURCE(IDD_EX_OPEN); //=1547!
    dlgFile.m_ofn.hInstance=AfxGetInstanceHandle(); 
    dlgFile.m_ofn.lpstrTitle = "Explorer Style Open File"; 
    dlgFile.m_ofn.lpstrFile = fileName; 
    dlgFile.m_ofn.Flags |= OFN_EXPLORER;
    //
    dlgFile.m_ofn.lpstrFilter="Any file(*.*)\0*.*\0";
    dlgFile.m_ofn.lpstrDefExt = "txt"; 
    // dlgFile.m_ofn.lpfnHook=CDN_HookProc;//="_AfxCommDlgProc" see"dlgcomm.cpp" <>NULL!
    // show 
    dlgFile.DoModal();
    #ifdef _DEBUG
    // afxDump << fileName << " \n";
    #endif
    }
    注意 
    //if use new style!
      

  2.   

    C++使用通配符查找文件(FindFirstFile)