favtreectrl.cpp
来自「一个多窗口的浏览器的程序benbrowse」· C++ 代码 · 共 162 行
CPP
162 行
// FavTreeCtrl.cpp : implementation file
//
#include "stdafx.h"
#include "benbenbrowser.h"
#include "FavTreeCtrl.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CFavTreeCtrl
#include ".\sizecontrolbar\BenTreeCtrl.h"
CFavTreeCtrl::CFavTreeCtrl()
{
}
CFavTreeCtrl::~CFavTreeCtrl()
{
}
BEGIN_MESSAGE_MAP(CFavTreeCtrl, CBenTreeCtrl)
//{{AFX_MSG_MAP(CFavTreeCtrl)
ON_WM_CONTEXTMENU()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFavTreeCtrl message handlers
void CFavTreeCtrl::OnContextMenu(CWnd* pWnd, CPoint point)
{
// TODO: Add your message handler code here
HTREEITEM hItem = NULL;
if (point.x == -1 && point.y == -1)
{
hItem = GetSelectedItem ();
}
else
{
CPoint ptClient = point;
ScreenToClient (&ptClient);
hItem = HitTest (ptClient);
}
if (hItem == NULL)
{
return;
}
TVITEM tvItem;
ZeroMemory (&tvItem, sizeof (tvItem));
tvItem.mask = TVIF_PARAM;
tvItem.hItem = hItem;
if (!GetItem (&tvItem))
{
return;
}
LPTVITEMDATA lptvid;
lptvid = (LPTVITEMDATA)tvItem.lParam;
if (lptvid == NULL)
{
ASSERT (FALSE);
return;
}
IShellFolder* psfFolder = lptvid->lpsfParent;
if (psfFolder == NULL)
{
SHGetDesktopFolder (&psfFolder);
}
else
{
psfFolder->AddRef();
}
if (psfFolder != NULL)
{
HWND hwndParent = GetParent()->GetSafeHwnd ();
IContextMenu* pcm = NULL;
HRESULT hr = psfFolder->GetUIObjectOf (hwndParent,
1,
(LPCITEMIDLIST*)&lptvid->lpifq,
IID_IContextMenu,
NULL,
(LPVOID*)&pcm);
if (SUCCEEDED (hr))
{
HMENU hPopup = CreatePopupMenu ();
if (hPopup != NULL)
{
hr = pcm->QueryContextMenu(hPopup, 0, 1, 0x7fff, CMF_NORMAL | CMF_EXPLORE);
if (SUCCEEDED (hr))
{
pcm->QueryInterface(IID_IContextMenu2, (LPVOID*)&m_pContextMenu2);
HWND hwndThis = GetSafeHwnd ();
UINT idCmd = TrackPopupMenu (hPopup,
TPM_LEFTALIGN | TPM_RETURNCMD | TPM_RIGHTBUTTON,
point.x,
point.y,
0,
GetSafeHwnd (),
NULL);
if (::IsWindow (hwndThis))
{
if (m_pContextMenu2 != NULL)
{
m_pContextMenu2->Release();
m_pContextMenu2 = NULL;
}
if (idCmd != 0)
{
CWaitCursor wait;
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);
SetFocus ();
}
}
}
}
if (pcm != NULL)
{
pcm->Release();
pcm = NULL;
}
}
if (psfFolder != NULL)
{
psfFolder->Release ();
psfFolder = NULL;
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?