⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 protfilelistctrl.cpp

📁 文件加密的过滤驱动程序源代码.
💻 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;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -