怎么调用资源管理器里那个右键菜单. 就是那个有"复制","重命名","删除","压缩"等项的右键菜单呀,怎么调用它?应该有API吧 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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(); } 谢谢横秋,我还得好好研究一下,好像有些函数如GetUIObjectOfMSDN2001里没有,但看上去又像极了系统函数. INetConnection::GetUiObjectClassIdThe 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 可惜又晕菜菜了,TREEITEMINFO又是个什么东东了.百度上一个都找不到. http://blog.csdn.net/_foo/archive/2004/08/08/68647.aspx 如何让外部程序的窗口可以关闭但不能销毁 当前路径的问题 求助 我的vs2008和2005都打不开了~~~急 多媒体计时器 或 高精度计时器 什么是标量图的矢量化 帮忙解释段代码 如何计算每个函数消耗的时间! 求算法,在网上下了个软件,只有两个文本框, 一个按钮,第一个文本框输入下面的第一个数字,在第二个文本框输入下面的第二个数字,按下 对灰度不同的地方进行定位 RadFile的size参数为什么是DWORD呢? COM对象创建问题 大家帮我比较一下GDI+与DirectX在2维绘图中的优劣
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();
}
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