?? explplg.cpp
字號(hào):
#include "stdafx.h"
#include "..\\resource.h"
#include "explplg.h"
#include "wm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#pragma warning ( disable : 4711 )
/////////////////////////////////////////////////////////////////////////////
// CExplorePlug
CExplorePlug::CExplorePlug ()
{
}
CExplorePlug:: ~ CExplorePlug ()
{
}
BEGIN_MESSAGE_MAP (CExplorePlug, CShellTree)
//{{AFX_MSG_MAP( CExplorePlug )
ON_WM_CREATE ()
ON_NOTIFY_REFLECT (TVN_ITEMEXPANDING, OnItemExpanding)
ON_NOTIFY_REFLECT (TVN_SELCHANGED, OnSelChanged)
ON_NOTIFY_REFLECT (NM_DBLCLK, OnDblClk)
ON_NOTIFY_REFLECT (TVN_DELETEITEM, OnDeleteItem)
ON_WM_DESTROY ()
ON_WM_LBUTTONDOWN ()
ON_WM_MOUSEMOVE ()
ON_WM_LBUTTONUP ()
ON_WM_RBUTTONDOWN ()
ON_WM_RBUTTONUP ()
//}}AFX_MSG_MAP
END_MESSAGE_MAP ()
/////////////////////////////////////////////////////////////////////////////
// CExplorePlug diagnostics
#ifdef _DEBUG
void CExplorePlug::AssertValid ()
const
{
CShellTree::AssertValid ();
}
void CExplorePlug::Dump (CDumpContext & dc)
const
{
CShellTree::Dump (dc);
}
#endif // _DEBUG
/////////////////////////////////////////////////////////////////////////////
// CExplorePlug message handlers
int CExplorePlug::OnCreate (LPCREATESTRUCT lpCreateStruct)
{
if (CShellTree::OnCreate (lpCreateStruct) == -1)
return -1;
SetFont (CFont::FromHandle ((HFONT) GetStockObject (DEFAULT_GUI_FONT)));
EnableImages ();
PopulateTree ();
//if (FAILED (OleInitialize (NULL)))
// TRACE (_T("Can't initialize OLE\n"));
return 0;
}
void CExplorePlug::OnDestroy ()
{
CShellTree::OnDestroy ();
//OleUninitialize ();
}
void CExplorePlug::OnItemExpanding (NMHDR * pNMHDR, LRESULT * pResult)
{
NM_TREEVIEW *pNMTreeView = (NM_TREEVIEW *) pNMHDR;
CWaitCursor wait;
OnFolderExpanding (pNMHDR, pResult);
Invalidate ();
*pResult = 0;
}
void CExplorePlug::OnSelChanged (NMHDR * pNMHDR, LRESULT * pResult)
{
NM_TREEVIEW *pNMTreeView = (NM_TREEVIEW *) pNMHDR;
m_hPointedItem = pNMTreeView->itemNew.hItem;
*pResult = 0;
}
//問題
void CExplorePlug::OnDblClk (NMHDR * pNMHDR, LRESULT * pResult)
{
NM_TREEVIEW *pNMTreeView = (NM_TREEVIEW *) pNMHDR;
LPTVITEMDATA lptvid; //Long pointer to TreeView item data
LPSHELLFOLDER lpsf2 = NULL;
TV_ITEM tvi;
tvi.mask = TVIF_PARAM;
tvi.hItem = m_hPointedItem;
if (!GetItem (&tvi))
return;
lptvid = (LPTVITEMDATA) tvi.lParam;
ULONG ulAttrs = SFGAO_HASSUBFOLDER|SFGAO_FOLDER;
// Determine what type of object we have.
lptvid->lpsfParent->GetAttributesOf (1, (const struct _ITEMIDLIST **) &lptvid->lpi, &ulAttrs);
if (!(ulAttrs & SFGAO_FOLDER )){
TCHAR szPath[_MAX_PATH];
if (GetName (lptvid->lpsfParent,
lptvid->lpi,
SHGDN_NORMAL|SHGDN_FORPARSING,
szPath))
AfxGetMainWnd()->SendMessage(WM_OPEN_HERE,0,(LPARAM)szPath);
}
*pResult = 0;
}
void CExplorePlug::OnDeleteItem (NMHDR * pNMHDR, LRESULT * pResult)
{
NM_TREEVIEW *pNMTreeView = (NM_TREEVIEW *) pNMHDR;
OnDeleteShellItem (pNMHDR, pResult);
*pResult = 0;
}
#pragma warning ( disable : 4100 )
void CExplorePlug::OnRButtonDown (UINT nFlags, CPoint point)
{
UINT nFlags2;
m_hPointedItem = HitTest (point, &nFlags2);
if (m_hPointedItem && nFlags2 & (TVHT_ONITEMICON | TVHT_ONITEMLABEL))
{
m_bWasSelected = GetItemState (m_hPointedItem, TVIS_SELECTED) != 0;
if (!m_bWasSelected){
VERIFY (SetItemState (m_hPointedItem, TVIS_SELECTED, TVIS_SELECTED));
}
}
// CTreeCtrl2::OnRButtonDown (nFlags, point);
}
#pragma warning ( default : 4100 )
#define ID_SPACE_FIRST 0
#define ID_SPACE_LAST 0
#pragma warning ( disable : 4100 )
void CExplorePlug::OnRButtonUp (UINT nFlags, CPoint point)
{
UINT nFlags2;
HTREEITEM hItem = HitTest (point, &nFlags2);
if (m_hPointedItem && nFlags2 & (TVHT_ONITEMICON | TVHT_ONITEMLABEL))
{//只有在item上才彈出這個(gè)菜單
if (hItem == m_hPointedItem){
LPTVITEMDATA lptvid; //Long pointer to TreeView item data
LPSHELLFOLDER lpsf2 = NULL;
TV_ITEM tvi;
ClientToScreen (&point);
tvi.mask = TVIF_PARAM;
tvi.hItem = hItem;
if (!GetItem (&tvi))
return;
lptvid = (LPTVITEMDATA) tvi.lParam;
DoTheMenuThing(GetSafeHwnd(),lptvid->lpsfParent,lptvid->lpi,&point);
}
if(!m_bWasSelected){
VERIFY (SetItemState (m_hPointedItem, 0, TVIS_SELECTED));
}
}
// CTreeCtrl2::OnRButtonUp (nFlags, point);
}
#pragma warning ( default : 4100 )
/////////////////////////////////////////////////////////////////////////////
#pragma warning ( default : 4711 )
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -