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

📄 directorytree.cpp

📁 一个企业订单管理流程的例子
💻 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 + -