我要写一个基于MFC的统计一个文件夹中代码行数的程序,先要让用户指定文件夹路径,我想实现像别的地方一个Edit控件,可以由用户直接输入路径,也可以用右边的一个按钮实现“浏览”,弹出windows的一个系统标准对话框,在其中定位文件夹。这个按钮的代码该如何写?要调用什么MFC函数还是系统API?请帮忙,谢谢啦

解决方案 »

  1.   

    CFileDialog newDlg(TRUE,".c","",
    OFN_EXPLORER|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
    "All Files (*.*)|*.*||",NULL );这个函数可以调用windows的一个系统标准对话框
      

  2.   

    CFileDialog newDlg(TRUE,".c","",
    OFN_EXPLORER|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
    "All Files (*.*)|*.*||",NULL );
    这个就可以
      

  3.   

    SHBrowerForFolder()这个函数好像不太好用哈,
    下面这个类我试试
      

  4.   

    呵呵 ,我做出来啦:
    #include<shlobj.h>
    BROWSEINFO lpbi={0,NULL,NULL,"Choose the folder that your source files in:",0,NULL,0,0};
    void CDialogTestDlg::OnBrowse() 
    {
    char path[100];
    // TODO: Add your control notification handler code here
    ::SHGetPathFromIDList((::SHBrowseForFolder(&lpbi)),(LPTSTR)path);
    MessageBox(path);
    }
    这样子就可以啦,不过CFileDialog newDlg这个我还没试好。
      

  5.   

    从下面这段话可以看出,CFileDialog在这儿确实不可用:
    “Q:我正在用 Visual Studio .NET 和 MFC 做一个程序。在我的程序里,用户要选择一个文件夹,并在其中拷贝文件。我可以调用 OpenFileDialog 让用户选择某个文件,但如何让打开对话框只显示文件夹呢?我见过好多安装程序给出的对话框里只显示文件夹,但我好像找不到这样的标志。
    Laine Chandler A:你之所以找不到正确的标志,是因为你关注的函数不对!文件打开对话框(Win32 是 GetOpenFileName,而 MFC 是 CFileDialog)是不处理文件夹的。为了只显示文件夹,你必须调用专门的外壳函数 SHBrowseForFolder。为了使用这个函数,你得填写一大堆 BROWSEINFO 结构信息,然后调用 SHBrowseForFolder。Windows 显示一个类似 Figure 3 这样的对话框。用户可以导航文件夹层次,扩展和收缩它们,并选择想要的文件夹。”