调用windows右键菜单主要用到了CShellContextMenu类
1、在MFC项目中添加类CShellContextMenu类,添加类选择C++类即可;
2、使用CShellContextMenu类.h和.cpp文件替换项目工程下文件;
3、在MFC中通过CShellContextMenu类调用windows右键菜单:
以ListCtrl下调用为例:
//右键处理文件对应路径
CString tem_strFilePath;
CShellContextMenu* tem_iContextMenu;
tem_iContextMenu = new CShellContextMenu();
tem_iContextMenu->SetObjects(tem_strFilePath);
//设置菜单弹出坐标
CPoint tem_ptClick(pNMItemActivate->ptAction);
m_conListCtrl.ClientToScreen(&tem_ptClick);
tem_strRC = tem_iContextMenu->ShowContextMenu(this, tem_ptClick);
注1:通过tem_strRC可查看点击了哪项右键菜单,便于针对不同的操作进行不同的处理;注2:.cpp文件对于Unicode和ANSI是不同的,需要做一定修改。
HRESULT GetCommandString(
UINT_PTR idCmd,
UINT uFlags,
UINT *pwReserved,
LPSTR pszName,
UINT cchMax
);
Unicode下 uFlags = GCS_VERBW; ANSI下uFlags = GCS_VERBA;
注3:GetCommandString----MSDN注解地址https://msdn.microsoft.com/en-us/bb776094(VS.85).aspx