📄 directorytree.cpp
字号:
// DirectoryTree.cpp : implementation file
//
#include "stdafx.h"
#include "Invoice.h"
#include "DirectoryTree.h"
#include "MdbSaveDat.h"
#include "OlddatDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define TRADE_MAXNO 50000
/////////////////////////////////////////////////////////////////////////////
// CDirectoryTree
#define SAVETREE_MAXNO 200
struct SAVETREE{
char year[8];
char y_m[12][8];
int m_no;
int token_no;
}SaveTree[SAVETREE_MAXNO];
CDirectoryTree::CDirectoryTree()
{
// 初始化图标ID
n_TreeIconClosed = 0;
n_TreeIconClosedSel = 1;
n_TreeIconOpen = 2;
n_TreeIconOpenSel = 3;
}
CDirectoryTree::~CDirectoryTree()
{
}
BEGIN_MESSAGE_MAP(CDirectoryTree, CTreeCtrl)
//{{AFX_MSG_MAP(CDirectoryTree)
ON_NOTIFY_REFLECT(NM_DBLCLK, OnDblclkDirectoryTree)
// ON_NOTIFY_REFLECT(NM_CLICK, OnDblclkDirectoryTree)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDirectoryTree message handlers
BOOL CDirectoryTree::Initialize()
{
CMdbSaveDat Mdbsavedat;
int no;
int protcol_maxno=0;
int token_max_no;
char m_time[256];
CString t_tradetime[TRADE_MAXNO];
CString trade_protcol[TRADE_MAXNO];
CString trade_client[TRADE_MAXNO];
CString trade_maxno[TRADE_MAXNO];
CString trade_maxprice[TRADE_MAXNO];
//读取目录结构,并高亮显示当前目录
HTREEITEM hTreeItem; // Result of adding new item to tree
HTREEITEM hTreeParent; // Parent of recently added item
DWORD dwRes = 0; // Result code
TV_INSERTSTRUCT tvstruct; // Info for inserting Tree items
int i = 0; // Generic counter variable
DeleteAllItems();
//填充从盘符到当前目录的目录树
hTreeParent = TVI_ROOT;
memset(m_time,0,sizeof(m_time));
protcol_maxno=Mdbsavedat.QueryMdbSave1(m_time,t_tradetime,
trade_protcol,
trade_client,
trade_maxno,
trade_maxprice);
token_max_no=GetTreeToken(protcol_maxno,t_tradetime);
for(no=0;no<token_max_no;no++)
{
SaveTree[no].token_no=1;
// 在目录树中增加项
tvstruct.hParent = TVI_ROOT;
tvstruct.hInsertAfter = TVI_LAST;
// tvstruct.item.iImage = n_TreeIconOpen;
// tvstruct.item.iSelectedImage = n_TreeIconOpenSel;
tvstruct.item.iImage = n_TreeIconClosed;
tvstruct.item.iSelectedImage = n_TreeIconClosedSel;
tvstruct.item.pszText = SaveTree[no].year;
tvstruct.item.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT;
hTreeItem = InsertItem(&tvstruct);
hTreeParent = hTreeItem;
for (i=0;i<SaveTree[no].m_no;i++)
{
tvstruct.hParent = hTreeParent;
tvstruct.hInsertAfter = TVI_LAST;
// tvstruct.item.iImage = n_TreeIconOpen;
// tvstruct.item.iSelectedImage = n_TreeIconOpenSel;
tvstruct.item.iImage = n_TreeIconClosed;
tvstruct.item.iSelectedImage = n_TreeIconClosedSel;
tvstruct.item.pszText = SaveTree[no].y_m[i];
tvstruct.item.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT;
hTreeItem = InsertItem(&tvstruct);
SaveTree[no].token_no++; // 节点数量
}
// Expand(hTreeParent, TVE_EXPAND);
}
return TRUE;
}
int CDirectoryTree::GetTreeToken(int no,CString *t_tradetime)
{
int i,j,num;
int SaveTree_maxno=0;
char year[12],month[12];
char buf[TRADE_MAXNO][12];
for(i=0;i<no;i++)
{
sprintf(buf[i],"%s",t_tradetime[i]);
}
for(i=0;i<no;i++)
{
memset(year,0,sizeof(year));
memset(month,0,sizeof(month));
memcpy(year,buf[i],4);
memcpy(month,buf[i],6);
for(j=0;j<SaveTree_maxno;j++)
{
if(memcmp(SaveTree[j].year,year,strlen(year))==0)
break;
}
if(j==SaveTree_maxno)//新年份
{
SaveTree[j].m_no=0;
memset(SaveTree[j].year,0,sizeof(SaveTree[j].year));
memset(SaveTree[j].y_m[SaveTree[j].m_no],0,sizeof(SaveTree[j].y_m[SaveTree[j].m_no]));
memcpy(SaveTree[j].year,year,strlen(year));
memcpy(SaveTree[j].y_m[SaveTree[j].m_no],month,strlen(month));
SaveTree[j].m_no++;
SaveTree_maxno++;
}
else
{
for(num=0;num<SaveTree[j].m_no;num++)
{
if(memcmp(SaveTree[j].y_m[num],month,strlen(month))==0)
break;
}
if(num==SaveTree[j].m_no)//新月份
{
memcpy(SaveTree[j].y_m[SaveTree[j].m_no],month,strlen(month));
SaveTree[j].m_no++;
}
}
}
return SaveTree_maxno;
}
void CDirectoryTree::SetBitmapList(CImageList * pBmpList)
{
SetImageList(pBmpList, TVSIL_NORMAL);
}
//
void CDirectoryTree::OnDblclkDirectoryTree(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
HTREEITEM hTreeItem; // The item's Handle
char m_time[256];
CString buf;
COlddatDlg *OlddatDlg;
OlddatDlg = (COlddatDlg*)GetParentOwner();
// 获取双击项
hTreeItem = GetSelectedItem();
buf=GetItemText(hTreeItem);
Expand(hTreeItem, TVE_EXPAND);
memset(m_time,0,sizeof(buf));
sprintf(m_time,"%s",buf);
OlddatDlg->OutTradeProtcol(m_time);
*pResult = 1;
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -