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

📄 treefileview.cpp

📁 一个简易的医药销售管理系统源码
💻 CPP
字号:
// TreeFileView.cpp : 实现文件
//

#include "stdafx.h"
#include "MedicineSaleManages.h"
#include "TreeFileView.h"
#include ".\treefileview.h"


// CTreeFileView 对话框

IMPLEMENT_DYNAMIC(CTreeFileView, CDialog)
CTreeFileView::CTreeFileView(CWnd* pParent /*=NULL*/)
	: CDialog(CTreeFileView::IDD, pParent)
	, str_pathname(_T(""))
	, FileExName(_T(""))
{
}

CTreeFileView::~CTreeFileView()
{
}

void CTreeFileView::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_LIST, m_list);
}


BEGIN_MESSAGE_MAP(CTreeFileView, CDialog)
	ON_BN_CLICKED(IDOK, OnBnClickedOk)
	ON_BN_CLICKED(IDCANCEL, OnBnClickedCancel)
	ON_EN_SETFOCUS(IDC_PATHNAME, OnEnSetfocusPathname)
	ON_NOTIFY(TVN_SELCHANGED, IDC_TREE, OnTvnSelchangedTree)
	ON_NOTIFY(NM_CLICK, IDC_LIST, OnNMClickList)
	ON_NOTIFY(TVN_ITEMEXPANDING, IDC_TREE, OnTvnItemexpandingTree)
	ON_NOTIFY(TVN_DELETEITEM, IDC_TREE, OnTvnDeleteitemTree)
	ON_NOTIFY(NM_RCLICK, IDC_TREE, OnNMRclickTree)
END_MESSAGE_MAP()


// CTreeFileView 消息处理程序

void CTreeFileView::OnBnClickedOk()
{
	GetDlgItemText(IDC_PATHNAME,str_pathname);
	OnOK();
}

void CTreeFileView::OnBnClickedCancel()
{
	// TODO: 在此添加控件通知处理程序代码
	OnCancel();
}

BOOL CTreeFileView::OnInitDialog()
{
	CDialog::OnInitDialog();
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
 	m_ImageList.Create(32,32,ILC_COLOR32,10,30);
	m_list.SetImageList(&m_ImageList,LVSIL_NORMAL);
	m_tooltip.Create(this,TTS_ALWAYSTIP);
	m_tooltip.Activate(TRUE);
	m_tooltip.AddTool(GetDlgItem(IDC_TREE),IDS_TREE);
	if(FileExName.IsEmpty())
		m_tooltip.AddTool(GetDlgItem(IDC_PATHNAME),IDS_DIRNAME);
	else
		m_tooltip.AddTool(GetDlgItem(IDC_PATHNAME),IDS_PATHNAME);
	m_tooltip.AddTool(GetDlgItem(IDOK),IDS_OK);
	m_tooltip.AddTool(GetDlgItem(IDCANCEL),IDS_CANCEL);
	if(FileExName!=_T(".ztp"))
		SetDlgItemText(IDC_STATICEXT,_T("文件名称:(.mdb)"));
	m_tree=(CShellTree*)GetDlgItem(IDC_TREE);
	m_tree->EnableImages();
	m_tree->PopulateTree();
	return TRUE;
}

void CTreeFileView::OnEnSetfocusPathname()
{
	GotoDlgCtrl(GetDlgItem(IDC_LIST));
}


void CTreeFileView::OnTvnSelchangedTree(NMHDR *pNMHDR, LRESULT *pResult)
{
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	CString str;
	if(m_tree->OnFolderSelected(pNMHDR,pResult,str))
	{
		m_list.DeleteAllItems();
		if(str.Right(1) != "\\")
		str += "\\";
		str_pathname=str;
		str += "*.*";
		CFileFind file;
		BOOL bContinue = file.FindFile(str);
		while(bContinue)
		{
			bContinue = file.FindNextFile();
			if(FileExName.IsEmpty())
			{
				if(!file.IsDirectory() && !file.IsDots())
				{
					SHFILEINFO info;
					CString temp = str;
					int index = temp.Find("*.*");
					temp.Delete(index,3);
					SHGetFileInfo(temp + file.GetFileName(),0,&info,sizeof(&info),SHGFI_DISPLAYNAME | SHGFI_ICON);
					int i = m_ImageList.Add(info.hIcon);
					m_list.InsertItem(i,file.GetFileName(),i);//info.szDisplayName
				}
				SetDlgItemText(IDC_PATHNAME,str_pathname);
			}
			else
			{
				if(!file.IsDirectory() && !file.IsDots() && file.GetFileName().Right(4)==FileExName)
				{
					SHFILEINFO info;
					CString temp = str;
					int index = temp.Find("*.*");
					temp.Delete(index,3);
					SHGetFileInfo(temp + file.GetFileName(),0,&info,sizeof(&info),SHGFI_DISPLAYNAME | SHGFI_ICON);
					int i = m_ImageList.Add(info.hIcon);
					m_list.InsertItem(i,file.GetFileName(),i);//info.szDisplayName
				}
			}
		}
	}
	*pResult = 0;
}

void CTreeFileView::OnNMClickList(NMHDR *pNMHDR, LRESULT *pResult)//获取当前单击文件的全路径并显示在IDC_PATHNAME中
{
	POSITION pos=m_list.GetFirstSelectedItemPosition();
	if(!FileExName.IsEmpty())
	{
		if(pos)
		{
			int row=m_list.GetNextSelectedItem(pos);
			SetDlgItemText(IDC_PATHNAME,str_pathname+m_list.GetItemText(row,0));
		}
		else
			SetDlgItemText(IDC_PATHNAME,_T(""));
	}
	*pResult = 0;
}

BOOL CTreeFileView::PreTranslateMessage(MSG* pMsg)
{
	m_tooltip.RelayEvent(pMsg);
	return CDialog::PreTranslateMessage(pMsg);
}

void CTreeFileView::WinHelp(DWORD dwData, UINT nCmd)
{
}

void CTreeFileView::OnTvnItemexpandingTree(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
	m_tree->OnFolderExpanding(pNMHDR,pResult);
	*pResult = 0;
}

void CTreeFileView::OnTvnDeleteitemTree(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
	m_tree->OnDeleteShellItem(pNMHDR,pResult);
	*pResult = 0;
}

void CTreeFileView::OnNMRclickTree(NMHDR *pNMHDR, LRESULT *pResult)
{
	m_tree->GetContextMenu(pNMHDR,pResult);
	*pResult = 0;
}

⌨️ 快捷键说明

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