📄 treefileview.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 + -