RT
解决方案 »
- CDialog的最大化和最大化按钮没法显示
- 对话框上的按钮无法响应消息响应函数
- vc怎么清除任务栏中残留的图标
- VC2005 的怪问题,实在太怪了。。。。
- 请问在哪里找的到VC6.0操作excel的API函数介绍?
- 高手救命:如何生成UTF-8文件,其中文件内容(中文等)也是UTF-8编码的 --索要向相关代码
- 【50分】请VC高手进来,动态语言链接的问题
- !!!简单的问题呀!!抢份了哟!!怎样设置一个闪烁的输入光标呀?
- 在客户端没有窗口的情况下,如何在客户端定义一个Socket接收事件?
- 给出的HBITMAP hBitmap 怎么能把它转换成PNG格式的数据,我要得到PNG格式的图片数据.不是保存成PNG格式图片.
- 在256色BMP找其中某一种颜色的边缘,有好算法吗?
- 关于FtpGetFileSize和读文件的问题(只有这么多分了)
接着执行还是弹出就看你的了。
下面是打开回收站属性的示例代码void ShowRecycleBinShellProperties()
{
HRESULT hr; // Call this if needed.
::CoInitialize( NULL );
IShellFolder* pDesktopFolder = NULL;
IMalloc* pMalloc = NULL; hr = ::SHGetMalloc(&pMalloc); // Get desktop folder.
hr = ::SHGetDesktopFolder(&pDesktopFolder); // Get the history folder.
ITEMIDLIST* pidlRecycleBin = NULL;
hr = ::SHGetSpecialFolderLocation(NULL, CSIDL_BITBUCKET, &pidlRecycleBin); {
IContextMenu* pContextMenu = NULL;
const ITEMIDLIST* pidl2 = pidlRecycleBin;
hr = pDesktopFolder->GetUIObjectOf(NULL, 1, &pidl2, IID_IContextMenu, NULL, (void**)&pContextMenu);
if (SUCCEEDED(hr))
{
CMINVOKECOMMANDINFO pCommandInfo = { 0 };
pCommandInfo.cbSize = sizeof(CMINVOKECOMMANDINFO);
pCommandInfo.lpVerb = _T("properties");
pCommandInfo.fMask = CMIC_MASK_FLAG_NO_UI; // has no effect
hr = pContextMenu->InvokeCommand(&pCommandInfo);
}
pContextMenu->Release();
} // Get the IShellFolder of the history folder.
IShellFolder* pRecycleBinFolder = NULL;
hr = pDesktopFolder->BindToObject(pidlRecycleBin, NULL, IID_IShellFolder, (void**)&pRecycleBinFolder);
pRecycleBinFolder->Release();
pMalloc->Release();
pDesktopFolder->Release();
}
=============
void ShowRecycleBinShellProperties()
{
HRESULT hr; // Call this if needed.
::CoInitialize( NULL );
IShellFolder* pDesktopFolder = NULL;
IMalloc* pMalloc = NULL; hr = ::SHGetMalloc(&pMalloc); // Get desktop folder.
hr = ::SHGetDesktopFolder(&pDesktopFolder); // Get the history folder.
ITEMIDLIST* pidlRecycleBin = NULL;
hr = ::SHGetSpecialFolderLocation(NULL, CSIDL_BITBUCKET, &pidlRecycleBin); {
IContextMenu* pContextMenu = NULL;
const ITEMIDLIST* pidl2 = pidlRecycleBin;
hr = pDesktopFolder->GetUIObjectOf(NULL, 1, &pidl2, IID_IContextMenu, NULL, (void**)&pContextMenu);
if (SUCCEEDED(hr))
{
CMINVOKECOMMANDINFO pCommandInfo = { 0 };
pCommandInfo.cbSize = sizeof(CMINVOKECOMMANDINFO);
pCommandInfo.lpVerb = _T("properties");
pCommandInfo.fMask = CMIC_MASK_FLAG_NO_UI; // has no effect
hr = pContextMenu->InvokeCommand(&pCommandInfo);
}
pContextMenu->Release();
} // Get the IShellFolder of the history folder.
IShellFolder* pRecycleBinFolder = NULL;
hr = pDesktopFolder->BindToObject(pidlRecycleBin, NULL, IID_IShellFolder, (void**)&pRecycleBinFolder);
pRecycleBinFolder->Release();
pMalloc->Release();
pDesktopFolder->Release();
}
=======================
右键菜单
以单文档程序为例
一、添加菜单资源 IDR_POPMENU,在资源编辑器中编辑菜单第一列,并且为每个菜单项添加处理函数。
二、在 CView 派生类中添加 WM_RBUTTONDOWN 消息处理函数,添加代码:
CMenu menu;
menu.LoadMenu( IDR_POPMENU );
CMenu *pPopupMenu = menu.GetSubMenu( 0 );
ClientToScreen( &point );
pPopupMenu -> TrackPopupMenu( TPM_RIGHTBUTTON, point.x, point.y, this );
pPopupMenu -> DestroyMenu();