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

📄 mytreectrl.cpp

📁 是自己开发的程序
💻 CPP
📖 第 1 页 / 共 3 页
字号:
#include "wx/wxprec.h"#ifdef __BORLANDC__    #pragma hdrstop#endif#ifndef WX_PRECOMP    #include "wx/wx.h"    #include "wx/log.h"#endif#include "wx/colordlg.h"#include "wx/numdlg.h"#include "MyTreeCtrl.h"#include "icon1.xpm"#include "icon2.xpm"#include "icon3.xpm"#include "icon4.xpm"#include "icon5.xpm"#include "mysql.h"wxString ConvertFromStr(const char *raw){	wxString str;	wxCSConv conv(_("gb2312"));	return wxString(raw,conv);}extern MYSQL		* myData ;#if USE_GENERIC_TREECTRLBEGIN_EVENT_TABLE(MyTreeCtrl, wxGenericTreeCtrl)#elseBEGIN_EVENT_TABLE(MyTreeCtrl, wxTreeCtrl)#endif    EVT_TREE_BEGIN_DRAG(TreeTest_Ctrl, MyTreeCtrl::OnBeginDrag)    EVT_TREE_BEGIN_RDRAG(TreeTest_Ctrl, MyTreeCtrl::OnBeginRDrag)    EVT_TREE_END_DRAG(TreeTest_Ctrl, MyTreeCtrl::OnEndDrag)    EVT_TREE_BEGIN_LABEL_EDIT(TreeTest_Ctrl, MyTreeCtrl::OnBeginLabelEdit)    EVT_TREE_END_LABEL_EDIT(TreeTest_Ctrl, MyTreeCtrl::OnEndLabelEdit)    EVT_TREE_DELETE_ITEM(TreeTest_Ctrl, MyTreeCtrl::OnDeleteItem)#if 0       // there are so many of those that logging them causes flicker    EVT_TREE_GET_INFO(TreeTest_Ctrl, MyTreeCtrl::OnGetInfo)#endif    EVT_TREE_SET_INFO(TreeTest_Ctrl, MyTreeCtrl::OnSetInfo)    EVT_TREE_ITEM_EXPANDED(TreeTest_Ctrl, MyTreeCtrl::OnItemExpanded)    EVT_TREE_ITEM_EXPANDING(TreeTest_Ctrl, MyTreeCtrl::OnItemExpanding)    EVT_TREE_ITEM_COLLAPSED(TreeTest_Ctrl, MyTreeCtrl::OnItemCollapsed)    EVT_TREE_ITEM_COLLAPSING(TreeTest_Ctrl, MyTreeCtrl::OnItemCollapsing)    EVT_TREE_SEL_CHANGED(TreeTest_Ctrl, MyTreeCtrl::OnSelChanged)    EVT_TREE_SEL_CHANGING(TreeTest_Ctrl, MyTreeCtrl::OnSelChanging)    EVT_TREE_KEY_DOWN(TreeTest_Ctrl, MyTreeCtrl::OnTreeKeyDown)    EVT_TREE_ITEM_ACTIVATED(TreeTest_Ctrl, MyTreeCtrl::OnItemActivated)    // so many differents ways to handle right mouse button clicks...    EVT_CONTEXT_MENU(MyTreeCtrl::OnContextMenu)    // EVT_TREE_ITEM_MENU is the preferred event for creating context menus    // on a tree control, because it includes the point of the click or item,    // meaning that no additional placement calculations are required.    EVT_TREE_ITEM_MENU(TreeTest_Ctrl, MyTreeCtrl::OnItemMenu)    EVT_TREE_ITEM_RIGHT_CLICK(TreeTest_Ctrl, MyTreeCtrl::OnItemRClick)    EVT_RIGHT_DOWN(MyTreeCtrl::OnRMouseDown)    EVT_RIGHT_UP(MyTreeCtrl::OnRMouseUp)    EVT_RIGHT_DCLICK(MyTreeCtrl::OnRMouseDClick)END_EVENT_TABLE()// MyTreeCtrl implementation#if USE_GENERIC_TREECTRLIMPLEMENT_DYNAMIC_CLASS(MyTreeCtrl, wxGenericTreeCtrl)#elseIMPLEMENT_DYNAMIC_CLASS(MyTreeCtrl, wxTreeCtrl)#endifMyTreeCtrl::MyTreeCtrl(wxWindow *parent, const wxWindowID id,                       const wxPoint& pos, const wxSize& size,                       long style)          : wxTreeCtrl(parent, id, pos, size, style){	m_showImages = true;    m_reverseSort = false;    CreateImageList();    }void MyTreeCtrl::InitTree(){	// Add some items to the tree    //AddTestItemsToTree(5, 2);	int imagefolder = m_showImages ? MyTreeCtrl::TreeCtrlIcon_Folder : -1;	int imagefolderSel = imagefolder + 1;	int lanefolder = 0;	int laneopen   =1;	DeleteAllItems();    wxTreeItemId rootId = AddRoot(ConvertFromStr("监控设备列表"),                                  4, 4,                                  new MyTreeItemData(wxT("Root1")));    if ( imagefolder != -1 )    {        SetItemImage(rootId, TreeCtrlIcon_FolderOpened, wxTreeItemIcon_Expanded);    }	char szSQL[256];		int devCount;	MYSQL_ROW	row ;	MYSQL_RES	* res;	memset(szSQL,0,sizeof(szSQL));	strcpy(szSQL,"select dev_id,dev_name,dev_station,dev_lane,mserver_ip,dev_IP,dev_user,dev_userpass,dev_port,by1 from device");	if ( ! mysql_query( myData, szSQL ) ) {		res = mysql_store_result( myData ) ;		devCount = (int) mysql_num_rows( res ) ; 		while ( (row = mysql_fetch_row( res )) ) {			//wxMessageBox(ConvertFromStr(row[2]),ConvertFromStr("错误"),wxOK|wxCENTRE,NULL,460,300);			wxString str,dev_name;			str.Printf(wxT("AllSelected,%s"),row[0]);			//str = ConvertFromStr(row[0]);			dev_name = ConvertFromStr(row[1]);			wxTreeItemId id = AppendItem(rootId, dev_name, imagefolder, imagefolderSel,                                         new MyTreeItemData(str));			SetItemImage(id, TreeCtrlIcon_FolderOpened, wxTreeItemIcon_Expanded);			for(int i=0;i<atoi(row[3]);i++)			{				char laneName[128],laneStr[512];				memset(laneName,0,sizeof(laneName));				memset(laneStr,0,sizeof(laneStr));				sprintf(laneName,"第 %d 路",i+1);				sprintf(laneStr,"rtsp://%s:554/%s:%d:%s:%d:0:%s:%s/av_stream,%d,%s,%s",row[4],row[5],atoi(row[8]),row[9],i,row[6],row[7],i,row[0],row[1]);								wxTreeItemId ids = AppendItem(id, ConvertFromStr(laneName), lanefolder, laneopen,                                         new MyTreeItemData(ConvertFromStr(laneStr)));				SetItemImage(ids, TreeCtrlIcon_FolderOpened, wxTreeItemIcon_Expanded);			}		}		if(res)			mysql_free_result(res);	}}void MyTreeCtrl::InitTrees(){	// Add some items to the tree    //AddTestItemsToTree(5, 2);	wxCSConv conv(_("gb2312"));	int imagefolder = m_showImages ? MyTreeCtrl::TreeCtrlIcon_Folder : -1;	int imagefolderSel = imagefolder + 1;	int lanefolder = 0;	int laneopen   =1;	DeleteAllItems();    wxTreeItemId rootId = AddRoot(ConvertFromStr("预案列表"),                                  4, 4,                                  new MyTreeItemData(wxT("Root2")));    if ( imagefolder != -1 )    {        SetItemImage(rootId, TreeCtrlIcon_FolderOpened, wxTreeItemIcon_Expanded);    }	wxTreeItemId idRoot = AppendItem(rootId, wxString("日常预案",conv), imagefolder, imagefolderSel,                                         new MyTreeItemData(wxT("")));	SetItemImage(idRoot, TreeCtrlIcon_FolderOpened, wxTreeItemIcon_Expanded);	char szSQL[512];		int devCount;	char laneName[128],laneStr[512];	MYSQL_ROW	row ,row1;	MYSQL_RES	* res,*res1;	wxTreeItemId ids,id;	memset(szSQL,0,sizeof(szSQL));	strcpy(szSQL,"select pid,ready_name from ready_info where ready_type =0;");	if ( ! mysql_query( myData, szSQL ) ) {		res = mysql_store_result( myData ) ;		devCount = (int) mysql_num_rows( res ) ; 		while ( (row = mysql_fetch_row( res )) ) {			wxString str,dev_name;			str.Printf(wxT("AllSelected,%s"),row[0]);			//str = ConvertFromStr(row[0]);			dev_name = ConvertFromStr(row[1]);			id = AppendItem(idRoot, dev_name, imagefolder, imagefolderSel,                                         new MyTreeItemData(str));			SetItemImage(id, TreeCtrlIcon_FolderOpened, wxTreeItemIcon_Expanded);			memset(szSQL,0,sizeof(szSQL));			sprintf(szSQL,"select device.dev_id,device.dev_name,device.dev_station,ready.dev_lane,device.mserver_ip,device.dev_IP,device.dev_user,device.dev_userpass,device.dev_port,device.by1 from device,ready where ready.ready_id='%s' and ready.dev_id=device.dev_id",row[0]);			if ( ! mysql_query( myData, szSQL ) ) {				res1 = mysql_store_result( myData ) ;				while ( (row1 = mysql_fetch_row( res1 )) ) {											memset(laneName,0,sizeof(laneName));					memset(laneStr,0,sizeof(laneStr));					sprintf(laneName,"第 %d 路",atoi(row1[3])+1);					sprintf(laneStr,"rtsp://%s:554/%s:%d:%s:%d:0:%s:%s/av_stream,%d,%s,%s",row1[4],row1[5],atoi(row1[8]),row1[9],atoi(row1[3]),row1[6],row1[7],atoi(row1[3]),row1[0],row1[1]);										ids = AppendItem(id, ConvertFromStr(laneName), lanefolder, laneopen,											 new MyTreeItemData(ConvertFromStr(laneStr)));					SetItemImage(ids, TreeCtrlIcon_FolderOpened, wxTreeItemIcon_Expanded);				}				if(res1)					mysql_free_result(res1);			}		}		if(res)			mysql_free_result(res);	}	idRoot = AppendItem(rootId, wxString("突发事件预案",conv), imagefolder, imagefolderSel,                                         new MyTreeItemData(wxT("")));	SetItemImage(idRoot, TreeCtrlIcon_FolderOpened, wxTreeItemIcon_Expanded);	memset(szSQL,0,sizeof(szSQL));	strcpy(szSQL,"select pid,ready_name from ready_info  where ready_type =1;");	if ( ! mysql_query( myData, szSQL ) ) {		res = mysql_store_result( myData ) ;		devCount = (int) mysql_num_rows( res ) ; 		while ( (row = mysql_fetch_row( res )) ) {			wxString str,dev_name;			str.Printf(wxT("AllSelected,%s"),row[0]);			//str = ConvertFromStr(row[0]);			dev_name = ConvertFromStr(row[1]);			id = AppendItem(idRoot, dev_name, imagefolder, imagefolderSel,                                         new MyTreeItemData(str));			SetItemImage(id, TreeCtrlIcon_FolderOpened, wxTreeItemIcon_Expanded);			memset(szSQL,0,sizeof(szSQL));			sprintf(szSQL,"select device.dev_id,device.dev_name,device.dev_station,ready.dev_lane,device.mserver_ip,device.dev_IP,device.dev_user,device.dev_userpass,device.dev_port,device.by1 from device,ready where ready.ready_id='%s' and ready.dev_id=device.dev_id",row[0]);			if ( ! mysql_query( myData, szSQL ) ) {				res1 = mysql_store_result( myData ) ;				while ( (row1 = mysql_fetch_row( res1 )) ) {											memset(laneName,0,sizeof(laneName));					memset(laneStr,0,sizeof(laneStr));					sprintf(laneName,"第 %d 路",atoi(row1[3])+1);					sprintf(laneStr,"rtsp://%s:554/%s:%d:%s:%d:0:%s:%s/av_stream,%d,%s,%s",row1[4],row1[5],atoi(row1[8]),row1[9],atoi(row1[3]),row1[6],row1[7],atoi(row1[3]),row1[0],row1[1]);										ids = AppendItem(id, ConvertFromStr(laneName), lanefolder, laneopen,											 new MyTreeItemData(ConvertFromStr(laneStr)));					SetItemImage(ids, TreeCtrlIcon_FolderOpened, wxTreeItemIcon_Expanded);				}				if(res1)					mysql_free_result(res1);			}		}		if(res)			mysql_free_result(res);	}	idRoot = AppendItem(rootId, wxString("报警预案",conv), imagefolder, imagefolderSel,                                         new MyTreeItemData(wxT("")));	SetItemImage(idRoot, TreeCtrlIcon_FolderOpened, wxTreeItemIcon_Expanded);	memset(szSQL,0,sizeof(szSQL));	strcpy(szSQL,"select pid,ready_name from ready_info where ready_type =2;");	if ( ! mysql_query( myData, szSQL ) ) {		res = mysql_store_result( myData ) ;		while ( (row = mysql_fetch_row( res )) ) {			wxString str,dev_name;			str.Printf(wxT("AllSelected,%s"),row[0]);			//str = ConvertFromStr(row[0]);			dev_name = ConvertFromStr(row[1]);			id = AppendItem(idRoot, dev_name, imagefolder, imagefolderSel,                                         new MyTreeItemData(str));			SetItemImage(id, TreeCtrlIcon_FolderOpened, wxTreeItemIcon_Expanded);			memset(szSQL,0,sizeof(szSQL));			sprintf(szSQL,"select device.dev_id,device.dev_name,device.dev_station,ready.dev_lane,device.mserver_ip,device.dev_IP,device.dev_user,device.dev_userpass,device.dev_port,device.by1 from device,ready where ready.ready_id='%s' and ready.dev_id=device.dev_id",row[0]);			if ( ! mysql_query( myData, szSQL ) ) {				res1 = mysql_store_result( myData ) ;				while ( (row1 = mysql_fetch_row( res1 )) ) {											memset(laneName,0,sizeof(laneName));					memset(laneStr,0,sizeof(laneStr));					sprintf(laneName,"第 %d 路",atoi(row1[3])+1);					sprintf(laneStr,"rtsp://%s:554/%s:%d:%s:%d:0:%s:%s/av_stream,%d,%s,%s",row1[4],row1[5],atoi(row1[8]),row1[9],atoi(row1[3]),row1[6],row1[7],atoi(row1[3]),row1[0],row1[1]);										ids = AppendItem(id, ConvertFromStr(laneName), lanefolder, laneopen,											 new MyTreeItemData(ConvertFromStr(laneStr)));					SetItemImage(ids, TreeCtrlIcon_FolderOpened, wxTreeItemIcon_Expanded);				}				if(res1)					mysql_free_result(res1);			}		}		if(res)			mysql_free_result(res);	}}void MyTreeCtrl::CreateImageList(int size){    if ( size == -1 )    {        SetImageList(NULL);        return;    }    if ( size == 0 )        size = m_imageSize;    else        m_imageSize = size;

⌨️ 快捷键说明

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