📄 mytreectrl.cpp
字号:
#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 + -