?? 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 + -