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

📄 configframe.cpp~

📁 是自己开发的程序
💻 CPP~
字号:
#include <stdlib.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include "wx/tokenzr.h"#include "PicPanel.h"#include "ConfigFrame.h"#include "wx/artprov.h"#include "wx/listctrl.h"#include "wx/checkbox.h"#include "wx/brush.h"#include "wx/dc.h"#include "wx/dcclient.h"#include "mainstore.xpm"#include "ab.xpm"#include "a.xpm"#include "bb.xpm"#include "b.xpm"#include "cb.xpm"#include "c.xpm"#include "db.xpm"#include "d.xpm"#include "eb.xpm"#include "e.xpm"#include "fb.xpm"#include "f.xpm"#include "gb.xpm"#include "g.xpm"#include "hb.xpm"#include "h.xpm"#include "ib.xpm"#include "i.xpm"#include "jb.xpm"#include "j.xpm"#include "kb.xpm"#include "k.xpm"#include "lb.xpm"#include "l.xpm"#include "mb.xpm"#include "m.xpm"#include "nb.xpm"#include "n.xpm"#include "ob.xpm"#include "o.xpm"#include "pb.xpm"#include "p.xpm"const int  ID_LOGIN      =143;const int  ID_RESTART    =144;const int  ID_SHUTDOWN   =145;const int  ID_NET        =146;const int  ID_IPLISTCHANGE = 147;const int ID_CHECKBOX1   =148;const int ID_CHECKBOX2   =149;const int ID_LISTFILE    =150;const int listmenu_start = 1006;const int listmenu_stop = 1007;MYSQL		* myData ;int curSel; char urlName[16][255];unsigned int  winNum[16];typedef struct {	unsigned int	code;						//命令编号,该字段指明报文的类型	char	m_strText[128];		//逻辑机号}TRequest;TRequest pRequest[16];BEGIN_EVENT_TABLE(ConfigFrame, wxFrame)    EVT_PAINT(ConfigFrame::OnPaint)    EVT_BUTTON    (ID_LOGIN,           ConfigFrame::OnMyButtons)    EVT_BUTTON    (ID_RESTART,         ConfigFrame::OnMyButtons)    EVT_BUTTON    (ID_SHUTDOWN,        ConfigFrame::OnMyButtons)	EVT_BUTTON    (ID_NET,             ConfigFrame::OnMyButtons)	EVT_COMBOBOX(ID_IPLISTCHANGE, ConfigFrame::OnSelectIPList)	EVT_CHECKBOX(ID_CHECKBOX1, ConfigFrame::OnCheckBox) 	EVT_CHECKBOX(ID_CHECKBOX2, ConfigFrame::OnCheckBox) 	EVT_LIST_ITEM_SELECTED(ID_LISTFILE, ConfigFrame::OnListFile) 	EVT_LIST_ITEM_DESELECTED(ID_LISTFILE, ConfigFrame::OnListFileUnsel)	EVT_LIST_ITEM_RIGHT_CLICK(ID_LISTFILE,ConfigFrame::OnRightClickOnList)	EVT_MENU(listmenu_start,ConfigFrame::OnMenuSelect)	EVT_MENU(listmenu_stop,ConfigFrame::OnMenuSelect)	EVT_TREE_ITEM_ACTIVATED(TreeTest_Ctrl, ConfigFrame::OnSelChanged)END_EVENT_TABLE()wxString ConvertFromStrs(const char *raw){	wxString str;	wxCSConv conv(_("gb2312"));	return wxString(raw,conv);}int Minnumber(int x,int y){		return x>y?y:x;	}int Maxnumber(int x,int y){		return x>y?x:y;	}ConfigFrame::ConfigFrame(wxFrame *frame,                const wxPoint& point,                const wxSize& size,                long style)    : wxFrame(frame, -1, _(""),point,size,style), m_treeCtrl(NULL){	curSel = -1;	memset(&pRequest,0,sizeof(pRequest));    wxPanel* bg_panel = new wxPanel(this,-1,point,size);    wxBitmap headbitmap(mainstore_xpm);    headPanel = new PicPanel(bg_panel,wxPoint(0,0), wxSize(1024,768),headbitmap);	m_treeCtrl = new MyTreeCtrl(headPanel, TreeTest_Ctrl,                                wxPoint(635,75), wxSize(341,610),                                wxTR_DEFAULT_STYLE);			m_treeCtrl->SetWindowStyle(m_treeCtrl->GetWindowStyle() ^ wxTR_NO_LINES);	m_treeCtrl->SetBackgroundColour(wxColor(192,191,251));	// 列表控件	listCtrlReport = new wxListCtrl(		headPanel , ID_LISTFILE, wxPoint(45,141), wxSize(562, 544),		wxLC_ICON);	// 图象列表	wxImageList *imageList = new wxImageList(106, 80, true, 1);	wxBitmap listicon0(ab_xpm);	wxBitmap listicon1(bb_xpm);	wxBitmap listicon2(cb_xpm);	wxBitmap listicon3(db_xpm);	wxBitmap listicon4(eb_xpm);	wxBitmap listicon5(fb_xpm);	wxBitmap listicon6(gb_xpm);	wxBitmap listicon7(hb_xpm);	wxBitmap listicon8(ib_xpm);	wxBitmap listicon9(jb_xpm);	wxBitmap listicon10(kb_xpm);	wxBitmap listicon11(lb_xpm);	wxBitmap listicon12(mb_xpm);	wxBitmap listicon13(mb_xpm);	wxBitmap listicon14(ob_xpm);	wxBitmap listicon15(pb_xpm);	wxBitmap listicon16(a_xpm);	wxBitmap listicon17(b_xpm);	wxBitmap listicon18(c_xpm);	wxBitmap listicon19(d_xpm);	wxBitmap listicon20(e_xpm);	wxBitmap listicon21(f_xpm);	wxBitmap listicon22(g_xpm);	wxBitmap listicon23(h_xpm);	wxBitmap listicon24(i_xpm);	wxBitmap listicon25(j_xpm);	wxBitmap listicon26(k_xpm);	wxBitmap listicon27(l_xpm);	wxBitmap listicon28(m_xpm);	wxBitmap listicon29(n_xpm);	wxBitmap listicon30(o_xpm);	wxBitmap listicon31(p_xpm);	imageList->Add(listicon0);	imageList->Add(listicon1);	imageList->Add(listicon2);	imageList->Add(listicon3);	imageList->Add(listicon4);	imageList->Add(listicon5);	imageList->Add(listicon6);	imageList->Add(listicon7);	imageList->Add(listicon8);	imageList->Add(listicon9);	imageList->Add(listicon10);	imageList->Add(listicon11);	imageList->Add(listicon12);	imageList->Add(listicon13);	imageList->Add(listicon14);	imageList->Add(listicon15);	imageList->Add(listicon16);	imageList->Add(listicon17);	imageList->Add(listicon18);	imageList->Add(listicon19);	imageList->Add(listicon20);	imageList->Add(listicon21);	imageList->Add(listicon22);	imageList->Add(listicon23);	imageList->Add(listicon24);	imageList->Add(listicon25);	imageList->Add(listicon26);	imageList->Add(listicon27);	imageList->Add(listicon28);	imageList->Add(listicon29);	imageList->Add(listicon30);	imageList->Add(listicon31);	listCtrlReport->SetImageList(imageList, wxIMAGE_LIST_NORMAL);    //listCtrlReport->SetImageList(imageList, wxIMAGE_LIST_SMALL);	//listCtrlReport->SetBackgroundColour(wxColor(241,243,250));		m_radioHAlign = new wxCheckBox(headPanel, ID_CHECKBOX1, _T(""),                                   wxPoint(108,68), wxDefaultSize);    m_radioVAlign = new wxCheckBox(headPanel, ID_CHECKBOX2, _T(""),                                   wxPoint(299,68), wxDefaultSize);	m_radioHAlign->SetValue(1);	m_radioVAlign->SetValue(0);	m_radioHAlign->SetBackgroundColour(wxColor(241,243,250));	m_radioVAlign->SetBackgroundColour(wxColor(241,243,250));    button1 = new wxButton(headPanel,ID_LOGIN,_T("登录界面"),wxPoint(36,716),wxSize(150,30));	button2 = new wxButton(headPanel,ID_NET,_T("网络配置"),wxPoint(296,716),wxSize(150,30));    button3 = new wxButton(headPanel,ID_RESTART,_T("重启系统"),wxPoint(571,716),wxSize(150,30));    button4 = new wxButton(headPanel,ID_SHUTDOWN,_T("关闭系统"),wxPoint(831,716),wxSize(150,30));    m_panel = new wxPanel(bg_panel,-1,wxPoint(35,60),wxSize(944,636));    	m_panel->SetBackgroundColour(wxColor(241,243,250));    loginPage = new LoginPanel(m_panel,wxDefaultPosition, wxDefaultSize,0);	loginPage->SetBackgroundColour(wxColor(241,243,250));    networkPage = new NetworkPanel(m_panel,wxDefaultPosition, wxDefaultSize,0);	networkPage->SetBackgroundColour(wxColor(241,243,250));    m_sizerFrame = new wxBoxSizer(wxVERTICAL);    m_sizerFrame->Add(loginPage, 0, wxEXPAND);	m_sizerFrame->Add(networkPage, 1, wxEXPAND);    ShowLoginPage();		    m_panel->SetSizer(m_sizerFrame);		}void ConfigFrame::OnSelChanged(wxTreeEvent& event){	wxTreeItemId id = event.GetItem();	MyTreeItemData *iData = (MyTreeItemData *)m_treeCtrl->GetItemData(id);	wxString desc = iData->GetDesc();	if(desc.Contains(_T("rtsp://")))	{		wxString url,chan,devid,devname;		wxString str= odc2->GetValue();		if(str.Contains(_T("服务器IP地址")))		{			wxMessageBox(_T("请选择服务器IP地址!"),_T("警告"),wxOK|wxCENTRE,this,460,300);			return;		}		wxStringTokenizer tkz(desc, wxT(","));		int i = 0;		while ( tkz.HasMoreTokens() )		{			wxString token = tkz.GetNextToken();			if(i==0)				url = token;			if(i==1)				chan = token;			if(i==2)				devid = token;			if(i==3)				devname = token;						i++;		}		long val;		chan.ToLong(&val);		wxString strDev,strTemp;		strTemp.Printf(wxT("[第 %ld 路]"),val+1);		strDev = devname + strTemp;		listCtrlReport->SetItemText(curSel,strDev);		winNum[curSel] = val+1;		memset(urlName[curSel],0,128);		strcpy(urlName[curSel],(const char *)url.mb_str(wxConvUTF8));		}}void ConfigFrame::InitIPList(){	curSel = -1;	memset(urlName,0,sizeof(urlName));	memset(winNum , 0, sizeof(winNum));	listCtrlReport->DeleteAllItems();	m_arrItems.Clear();	m_arrItems.Add( wxT("服务器IP地址列表...") );	MYSQL_ROW	row ;	MYSQL_RES	* res;	int devCount;	char szSQL[256];	memset(szSQL,0,sizeof(szSQL));	strcpy(szSQL,"select server_ip from serveriplist where server_code=2");	if ( ! mysql_query( myData, szSQL ) ) {		res = mysql_store_result( myData ) ;		devCount = (int) mysql_num_rows( res ) ; 		while ( (row = mysql_fetch_row( res )) ) {			wxString str;			str = ConvertFromStrs(row[0]);			m_arrItems.Add(str);		}		if(res)			mysql_free_result(res);	}       odc2 = new wxOwnerDrawnComboBox(headPanel,ID_IPLISTCHANGE,wxEmptyString,                                    wxPoint(200,97), wxDefaultSize,                                    m_arrItems,                                    wxNO_BORDER | wxCB_READONLY //(long)0 //                                   );	odc2->SetSelection(0);		odc2->SetBackgroundColour(wxColor(241,243,250));}void ConfigFrame::OnListFile(wxListEvent &event){	long selItem = event.GetIndex();	//listCtrlReport->SetItemImage(selItem,2);	curSel = selItem;}void ConfigFrame::OnRightClickOnList(wxListEvent &event){	int ItemId = event.GetIndex();	//wxPoint pt = mouseevt.GetPosition();	if(ItemId >= 0 && curSel >=0){		wxString listtitle;		listtitle << wxT("  操作菜单  ");		wxMenu listmenu(listtitle);		listmenu.AppendSeparator();		listmenu.Append(listmenu_start,wxT("全部输出"));		listmenu.Append(listmenu_stop,wxT("单路输出"));				PopupMenu(&listmenu);	}}void ConfigFrame::OnListFileUnsel(wxListEvent &event){	long selItem = event.GetIndex();	curSel = -1;}void ConfigFrame::OnPaint(wxPaintEvent& event){}void ConfigFrame::OnMenuSelect(wxCommandEvent &event){	struct sockaddr_in client_addr;	int    listenfd;	char retStr[255];	memset(retStr,0,sizeof(retStr));	memset(&client_addr, 0, sizeof(client_addr));		//包括socket通讯和写数据库	switch(event.GetId())    {		case listmenu_start:                //全部输出		{			listenfd = socket(AF_INET, SOCK_STREAM, 0);			if(listenfd < 0)			{				return;			}			client_addr.sin_family = AF_INET;			client_addr.sin_port   = htons(4999);			wxString str= odc2->GetValue();			inet_aton((const char *)str.mb_str(wxConvUTF8), &client_addr.sin_addr);			if(connect(listenfd, (struct sockaddr*)&client_addr, sizeof(struct sockaddr)) == -1)			{				close(listenfd);				return;			}			if(send(listenfd,(char *)&pRequest[curSel],sizeof(TRequest),0) > 0)			{				recv(listenfd,retStr,sizeof(retStr),0);				if(strstr(retStr,"Success")!=NULL)				{						char szSQL[1024];						memset(szSQL,0,sizeof(szSQL));						sprintf(szSQL,"insert into serverinfolist");						mysql_query( myData, szSQL );				}			}			if(listenfd)				close(listenfd);			break;		}		case listmenu_stop:                      //单路输出		{						break;		}				default:			break;	}}void ConfigFrame::OnMyButtons(wxCommandEvent &event){    switch(event.GetId())    {		case ID_LOGIN:		{			ShowLoginPage();			break;		}		case ID_RESTART:		{			system("init 6");			break;		}		case ID_SHUTDOWN:		{			system("init 0");			break;		}		case ID_NET:		{			ShowNetworkPage();			break;		}		default:			break;    }}void ConfigFrame::OnSelectIPList(wxCommandEvent &event){	 switch(event.GetId())    {		case ID_IPLISTCHANGE:		{			//初始化操作			memset(&pRequest,0,sizeof(pRequest));			curSel = -1;			listCtrlReport->DeleteAllItems();			wxString str= odc2->GetValue();			if(!str.Contains(_T("服务器IP地址")))			{								MYSQL_ROW	row ;				MYSQL_RES	* res;				int devCount;				char szSQL[256];				wxString strName;				memset(szSQL,0,sizeof(szSQL));				if(m_radioHAlign->GetValue() == 1)					sprintf(szSQL,"select * from serverinfolist where server_type='2' and server_ip='%s' order by pid",(const char *)str.mb_str(wxConvUTF8));				else					sprintf(szSQL,"select url,device,port,by2 from serverinfolist where server_type='3' and server_ip='%s' order by pid",(const char *)str.mb_str(wxConvUTF8));				for(int i=1;i<17;i++)				{					listCtrlReport->InsertItem(i,wxString::Format(_T("%d"), i),0);					}				if ( ! mysql_query( myData, szSQL ) ) {					res = mysql_store_result( myData ) ;					devCount = (int) mysql_num_rows( res ) ; 					while ( (row = mysql_fetch_row( res )) ) {						strName.Printf(wxT("[第 %d 路]"),atoi(row[4]));					    listCtrlReport->SetItemText(atoi(row[3]),ConvertFromStrs(row[1]) + strName);						memset(&pRequest[atoi(row[2]) -1],0,sizeof(TRequest));						pRequest[atoi(row[2]) -1].code = atoi(row[2]);						strcpy(pRequest[atoi(row[2]) -1].m_strText,row[0]);					}					if(res)						mysql_free_result(res);				}			}else			{				curSel = -1;				memset(&pRequest,0,sizeof(pRequest));				listCtrlReport->DeleteAllItems();			}			break;		}		default:			break;    }}void ConfigFrame::OnCheckBox(wxCommandEvent &event){	switch(event.GetId())    {		case ID_CHECKBOX1:		{			if(m_radioHAlign->IsChecked())			{				m_radioHAlign->SetValue(1);				m_radioVAlign->SetValue(0);			}else			{				m_radioHAlign->SetValue(0);				m_radioVAlign->SetValue(1);			}			break;		}		case ID_CHECKBOX2:		{						if(m_radioVAlign->IsChecked())			{				m_radioVAlign->SetValue(1);				m_radioHAlign->SetValue(0);									}else			{				m_radioVAlign->SetValue(0);				m_radioHAlign->SetValue(1);			}			break;		}		default:			break;    }}ConfigFrame::~ConfigFrame(){}void ConfigFrame::ShowListPage(){    m_sizerFrame->Show(loginPage,0,0);    m_sizerFrame->Show(networkPage,0,0);    m_sizerFrame->Layout();	m_panel->Show(0);}void ConfigFrame::ShowLoginPage(){    m_sizerFrame->Show(loginPage,1,0);    m_sizerFrame->Show(networkPage,0,0);    m_sizerFrame->Layout();	m_panel->Show(1);	loginPage->pEdit3->Clear();}void ConfigFrame::ShowNetworkPage(){    m_sizerFrame->Show(loginPage,0,0);    m_sizerFrame->Show(networkPage,1,0);    m_sizerFrame->Layout();	m_panel->Show(1);}

⌨️ 快捷键说明

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