我的开发环境是winxp,msdn上说在win2000以上用ishellfolder2代替IShellDetails,可老是不成功,请问如何获得ishellfolder2的接口指针?

解决方案 »

  1.   

    我已经在头文件中包含了#include <shlobj.h>可我的vc7.1还是提示我 1。error C3861: “SHGetFolderLocation”: 即使使用参数相关的查找,也未找到标识符
     2。error C2065: “IID_IShellFolder2” : 未声明的标识符
    其他IID_IShellFolder什么的又是好的,天啊,怎么回事
    why?搞不懂啊,
    下面是我的代码
    typedef IShellFolder2 FAR* LPSHELLFOLDER2;
    typedef IShellDetails FAR* PSHELLDETAILS; //应该加入到头文件中LPSHELLFOLDER2  pIShellFolder2  = NULL;
    LPITEMIDLIST pidlMy        = NULL;
    HRESULT hr      = S_OK;
    LPMALLOC pMalloc      = NULL;//注:pParentFolder是个绝对pidl类,有个copy 构造函数
    LPSHELLFOLDER m_pRecycleBin = pParentFolder;SHGetFolderLocation(m_hWnd , NULL ,NULL ,0 ,&pidlMy);if (SUCCEEDED(m_pRecycleBin->BindToObject(pidlMy ,NULL, IID_IShellFolder2, (LPVOID *)&pIShellFolder2)));
      

  2.   

    找到原因了,在在shlobj.h有类似这样的定义:  #if(WINVER   >=   0x0500)
      define   IShellFolder2
      {
      }
      #endif修改stdafx.h ok