www.pudn.com > FileGuard.zip > ProtFileListCtrl.cpp


// ProtFileListCtrl.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "resource.h" 
#include "FileGuard.h" 
#include "FGDevice.h" 
#include "FileGuardApp.h" 
#include "ProtFileListCtrl.h" 
#include "ProtFilePropDlg.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CProtFileListCtrl 
 
CProtFileListCtrl::CProtFileListCtrl() 
{ 
} 
 
CProtFileListCtrl::~CProtFileListCtrl() 
{ 
} 
 
 
BEGIN_MESSAGE_MAP(CProtFileListCtrl, CListCtrl) 
	//{{AFX_MSG_MAP(CProtFileListCtrl) 
	ON_NOTIFY_REFLECT(NM_DBLCLK, OnDblclickProtectedFileList) 
	ON_NOTIFY_REFLECT(NM_RCLICK, OnRClickProtectedFileList) 
	ON_NOTIFY_REFLECT(LVN_KEYDOWN, OnKeyDown) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CProtFileListCtrl message handlers 
 
void CProtFileListCtrl::DisplayItem() 
{ 
	DeleteAllItems(); 
 
	int i=0; 
	PROTECTED_FILE *pProtFile=protFileList.FindFirst(); 
	if(!pProtFile) 
		return; 
	InsertItem(i, pProtFile->PF_pPath); 
	SetItemText(i, 1, GetProtectionTypeText(pProtFile->PF_type)); 
 
	while( (pProtFile=protFileList.FindNext())!=NULL ) 
	{ 
		i++; 
		InsertItem(i, pProtFile->PF_pPath); 
		SetItemText(i, 1, GetProtectionTypeText(pProtFile->PF_type)); 
	} 
} 
 
void CProtFileListCtrl::OnDblclickProtectedFileList(NMHDR* pNMHDR, LRESULT* pResult)  
{ 
	// TODO: Add your control notification handler code here 
	*pResult = 0; 
 
	NMITEMACTIVATE *pNMItem=(NMITEMACTIVATE *)pNMHDR; 
	if(pNMItem->iItem==-1) 
		return; 
 
	OnProperty(pNMItem->iItem); 
} 
 
void CProtFileListCtrl::OnRClickProtectedFileList(NMHDR* pNMHDR, LRESULT* pResult)  
{ 
	// TODO: Add your control notification handler code here 
	*pResult = 0; 
	NMITEMACTIVATE *pNMItem=(NMITEMACTIVATE *)pNMHDR; 
 
	//create menu and handle message. 
	POINT point(pNMItem->ptAction); 
	CMenu menu;	 
	ClientToScreen(&point); 
	menu.LoadMenu(IDR_LIST_MENU); 
	if(pNMItem->iItem==-1) 
	{ 
		menu.EnableMenuItem(ID_DELETE, MF_GRAYED); 
		menu.EnableMenuItem(ID_PROPERTY, MF_GRAYED); 
	} 
	ASSERT(menu.GetSubMenu(0)); 
	switch(menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON  
		| TPM_NONOTIFY | TPM_RETURNCMD, point.x, point.y, this)) 
	{ 
	case ID_NEW: 
		OnNew(); 
		break; 
	case ID_DELETE: 
		OnDelete(pNMItem->iItem); 
		break; 
	case ID_PROPERTY: 
		OnProperty(pNMItem->iItem); 
		break; 
	} 
} 
 
void CProtFileListCtrl::OnNew()  
{ 
	ShowFileProperty(NULL); 
} 
 
void CProtFileListCtrl::OnDelete(int iItem) 
{ 
	if(iItem==-1) 
		return; 
 
	CString strPath=GetItemText(iItem, 0); 
	protFileList.Remove(strPath); 
	::SendNotifyMessage(::GetParent(m_hWnd), WM_SHOW_DATA, 3, 0); 
} 
 
void CProtFileListCtrl::OnProperty(int iItem) 
{ 
	if(iItem==-1) 
		return; 
	CString strPath=GetItemText(iItem, 0); 
	ShowFileProperty(strPath); 
} 
 
void CProtFileListCtrl::OnKeyDown(NMHDR* pNMHDR, LRESULT* pResult)  
{ 
	LV_KEYDOWN* pLVKeyDown= (LV_KEYDOWN*)pNMHDR; 
 
	if(pLVKeyDown->wVKey==VK_DELETE) 
		OnDelete(GetNextItem(-1, LVNI_SELECTED)); 
 
	*pResult = 0; 
}