none
如何使用CMFCPropertyGridFileProperty来选择一个文件夹? RRS feed

  • 问题

  • 我会使用用这个类来选择一个文件,但是无法用它选择文件夹。我在这个类的头文件里发现了它的一个构造函数:

    CMFCPropertyGridFileProperty(const CString& strName, const CString& strFolderName, DWORD_PTR dwData = 0, LPCTSTR lpszDescr = NULL);

    最奇怪的是,MSDN LIBRARY里却没有提到这个构造函数。在网络上搜了挺久,也没找到正确的用法。

    请诸位赐教。



    2011年8月3日 14:21

答案

  • VS2008SP1的安装目录下Samples中MFC Feature中有个New control的例子程序。里面有CMFCPropertyGridCtrl控件的使用,您可以参考一下具体的用法。
    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    • 已标记为答案 若等闲 2011年8月8日 11:36
    2011年8月5日 0:27
    版主

全部回复

  • CMFCPropertyGridProperty* pGroup3 = new CMFCPropertyGridProperty(_T("Misc"));
    
    ....
    
    pGroup3->AddSubItem(new CMFCPropertyGridFileProperty(_T("Folder"), _T("C:\\")));

     

    2011年8月4日 1:03
    版主
  • 你好,谢谢你的回答。我一开始也是这么写的,但是,这个用法无效。后来在网上搜,发现所有人都这么写。

    用DEBUG配置生成的程序,点击“...”按妞会弹出断言失败的提示;而用RELEASE配置生成的程序,点击“...”按纽没有弹出选择框。

    不仅用VS2010 with SP1生成的程序会这样,而且VS2008 with SP1也是如此。

    调用选择文件的那个构造函数,可以正常选择文件;调用选择文件夹的构造函数,就是不能用。

    2011年8月4日 13:03
  • VS2008SP1的安装目录下Samples中MFC Feature中有个New control的例子程序。里面有CMFCPropertyGridCtrl控件的使用,您可以参考一下具体的用法。
    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    • 已标记为答案 若等闲 2011年8月8日 11:36
    2011年8月5日 0:27
    版主
  • 再次感谢你的帮助。

    看了示例之后,我确信自己的代码没有写错。于是,根据断言的提示去查看了mfc源代码,发现了问题的所在。

    我生成的SDI程序的APP类默认是从CWinApp继承,而且生成的时候是无法改变的。但是想要选择文件夹的功能能够生效,就必须从CWinAppEx继承,并且在适当的地方调用InitShellManager();

    问题解决了,结帖。

    2011年8月5日 17:05