CFileDialog cfg(TRUE);
cfg.m_ofn.lStructSize = sizeof(OPENFILENAME);
cfg.m_ofn.lpstrTitle = "选择dll文件";
cfg.m_ofn.lpstrFilter = "All File(*.*)\0(*.*)\0doc(*.doc)\0(*.dox)\0\0";
cfg.m_ofn.Flags |= OFN_PATHMUSTEXIST |OFN_FILEMUSTEXIST;
       不知什么原因过滤器不起作用,好像只能选择文件夹。

解决方案 »

  1.   


    "All File(*.*)\0(*.*)\0doc(*.doc)\0(*.dox)\0\0"; \0改为 |
    或者认真看一下MSDN
      

  2.   

     "All File(*.*)\0(*.*)\0doc(*.doc)\0(*.dox)\0\0"; 
    你这里写错了吧,怎么一个*.doc,一个*.dox,这怎么过滤文件呢?
      

  3.   

    我找到错误的原因了:我多写了一个括号!
    还有一个问题:
    void CInjectDlg::OnBtnChoose() 
    {
    // TODO: Add your control notification handler code here

    CFileDialog cfg(TRUE);
    cfg.m_ofn.lStructSize = sizeof(OPENFILENAME);
    char buf[1024] = {0};
    cfg.m_ofn.nMaxFile = 256;
    cfg.m_ofn.lpstrFile = buf;

    GetCurrentDirectory(1024,buf);


    cfg.m_ofn.lpstrTitle = "请选择Dll文件";

    cfg.m_ofn.lpstrFilter = _T("所有文件(*.*)\0*.*\0DLL文件(*.dll)\0*.dll\0\0");
        cfg.m_ofn.Flags |= OFN_FILEMUSTEXIST |OFN_EXPLORER|OFN_HIDEREADONLY ;

    if(cfg.DoModal() == IDOK)
    {
    m_strPath = cfg.GetPathName();
    UpdateData(FALSE);
    }

    }
    我第二次点该按钮的时候弹不出打开对话框了!
    不知道为什么?
    那位仁兄帮解决一下~!
      

  4.   


    CFileDialog   *cfg =new CFileDialog(TRUE,_T("*.dll"),NULL,NULL,_T("可选文件类型(*.dll)|*.dll||"),0);    int result= (int)cfg->DoModal();  
    if(result==1)
    {
    pathstr = cfg->GetPathName(); 
    UpdateData(FALSE); 
    }这样就可以了.过滤不需要你写的那么麻烦