就是那个有"复制","重命名","删除","压缩"等项的右键菜单呀,怎么调用它?应该有API吧

解决方案 »

  1.   

    HWND           hwndParent = ::GetParent(hwndTreeView);
        HRESULT        hr;
        TREEITEMINFO*     pInfo = (TREEITEMINFO*)tvItem.lParam;
        IContextMenu   *pcm;
        IShellFolder   *psfFolder = pInfo->pParentFolder;   if(!psfFolder)
          {
          SHGetDesktopFolder(&psfFolder);
          }
       else
          {
          psfFolder->AddRef();
          }   if(psfFolder)
          {
          hr = psfFolder->GetUIObjectOf(   hwndParent, 
                                           1, 
                                           (LPCITEMIDLIST*)&pInfo->pidlSelf,
                                           IID_IContextMenu, 
                                           NULL, 
                                           (LPVOID*)&pcm);      if(SUCCEEDED(hr))
             {
             HMENU hPopup;         hPopup = CreatePopupMenu();
             if(hPopup)
                {
                hr = pcm->QueryContextMenu(hPopup, 0, 1, 0x7fff, CMF_NORMAL | CMF_EXPLORE);            if(SUCCEEDED(hr))
                   {
       IContextMenu2* pcm2;
                   pcm->QueryInterface(IID_IContextMenu2, (LPVOID*)&pcm2);               UINT  idCmd;               idCmd = TrackPopupMenu( hPopup, 
                                           TPM_LEFTALIGN | TPM_RETURNCMD | TPM_RIGHTBUTTON, 
                                           pptScreen->x,
                                           pptScreen->y,
                                           0,
                                           hwndParent,
                                           NULL);
                
                   if(pcm2)
                      {
                      pcm2->Release();
                      pcm2 = NULL;
                      }               if(idCmd)
                      {
                      CMINVOKECOMMANDINFO  cmi;
                      cmi.cbSize = sizeof(CMINVOKECOMMANDINFO);
                      cmi.fMask = 0;
                      cmi.hwnd = hwndParent;
                      cmi.lpVerb = (LPCSTR)(INT_PTR)(idCmd - 1);
                      cmi.lpParameters = NULL;
                      cmi.lpDirectory = NULL;
                      cmi.nShow = SW_SHOWNORMAL;
                      cmi.dwHotKey = 0;
                      cmi.hIcon = NULL;
                      hr = pcm->InvokeCommand(&cmi);
                      }
                   }
                }
          
             pcm->Release();
             }      psfFolder->Release();
          }
      

  2.   

    谢谢横秋,我还得好好研究一下,好像有些函数如GetUIObjectOfMSDN2001里没有,但看上去又像极了系统函数.
      

  3.   

    INetConnection::GetUiObjectClassId
    The GetUiObjectClassId method retrieves the class identifier of the user interface object for this connection.HRESULT GetUiObjectClassId(
      CLSID* pclsid
    );
    http://www.hyd8.com/info/3489.htm
      

  4.   

    可惜又晕菜菜了,TREEITEMINFO又是个什么东东了.百度上一个都找不到.
      

  5.   

    http://blog.csdn.net/_foo/archive/2004/08/08/68647.aspx