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

📄 regioncommview.cpp

📁 gps对时
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	}
}
//获取连接状态名称
CString CRegionCommView::GetStateString(int nState)
{
	CString str;

	switch(nState)
	{
	case DEV_UNKNOWN:
		str = _T("未连接");
		break;
	case DEV_CONNECTED:
		str = _T("连接");
		break;
	case DEV_ASKCONNECT:
		str = _T("请求连接");
		break;
	case DEV_SOCKCLOSED:
		str = _T("关闭");
		break;
	case DEV_DISCONNECTED:
		str = _T("断接");
		break;
	case DEV_COMOPENED:
		str = _T("打开");
		break;
	case DEV_COMCLOSED:
		str = _T("关闭");
		break;
	case DEV_LINEON:
		str = _T("在线");
		break;
	case DEV_LINEOFF:
		str = _T("断线");
		break;
	case DEV_CLOSED:
		str = _T("关闭");
		break;
	default:
		str = _T("");
		break;
	}
	
	return str;
}
//修改树
void CRegionCommView::UpdateTree(DWORD dwDevType, BOOL bAdded)
{
	DWORD selDevType;
	TV_ITEM item;
	TCHAR szBuf[80];
	HTREEITEM hTreeItem = m_Tree_C.GetSelectedItem();
	
	if (hTreeItem == NULL)
		hTreeItem = m_Tree_C.GetRootItem();
	
	item.mask = TVIF_HANDLE | TVIF_PARAM;
	item.hItem = hTreeItem;
	item.stateMask = 0;
	m_Tree_C.GetItem(&item);
	selDevType = item.lParam;

	hTreeItem = m_Tree_C.GetNextItem(m_Tree_C.GetRootItem(), TVGN_CHILD);
	while (hTreeItem != NULL) {
		item.mask = TVIF_HANDLE | TVIF_PARAM;
		item.hItem = hTreeItem;
		item.stateMask = 0;
		m_Tree_C.GetItem(&item);
		if (!bAdded) {
			if ((DWORD)item.lParam == dwDevType) {
				if (dwDevType == selDevType) {
					HTREEITEM hNextItem = m_Tree_C.GetNextItem(hTreeItem, TVGN_NEXT);
					m_Tree_C.SelectItem(hNextItem);
				}
				m_Tree_C.DeleteItem(hTreeItem);
				if ((selDevType == DEVTYPE_REGION) | (selDevType == DEVTYPE_UNKNOWNDEV))
					SetListCtrlFormat(selDevType);
				return;
			}
		}
		hTreeItem = m_Tree_C.GetNextItem(hTreeItem, TVGN_NEXT);
	}
	if (bAdded) {
	TV_INSERTSTRUCT ti;
	ti.hParent = m_Tree_C.GetRootItem();
	ti.item.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
	_stprintf(szBuf, _T("RS232通讯口%d"), (WORD)HIWORD(dwDevType));
	ti.item.pszText = szBuf;
	ti.item.lParam = dwDevType;
	ti.item.iImage = DT_ICON_COM;
	ti.item.iSelectedImage = ti.item.iImage;
	m_Tree_C.InsertItem(&ti);
	if (selDevType == DEVTYPE_REGION)
		SetListCtrlFormat(DEVTYPE_REGION);
	    return;
	}
}
//删除设备
void CRegionCommView::OnEditDelete() 
{
	if (IDOK != MessageBox(_T("真的要删除所选择的设备吗?"), _T("询问"), MB_ICONQUESTION | MB_OKCANCEL)) 
		return;	

	CRegionCommDoc * pDoc = (CRegionCommDoc *)GetDocument();

	if (m_nFocusWnd == FW_TREE) 
	{
		HTREEITEM  hTreeItem;
		TV_ITEM item;
		if (m_bRButtonClick)
			hTreeItem = m_hTreeItem;
		else
		hTreeItem = m_Tree_C.GetSelectedItem();
		item.hItem = hTreeItem;
		item.mask = TVIF_HANDLE | TVIF_PARAM | TVIF_STATE;
		m_Tree_C.GetItem(&item);
		if ((0x0000FFFF & item.lParam) == DEVTYPE_COM) 
				pDoc->m_pCommunication->DeleteTscCom((BYTE)HIWORD(item.lParam));
		return;
	}		

	if (m_nFocusWnd == FW_LIST) 
	{
		LV_ITEM item;
	
		item.mask = LVIF_PARAM | LVIF_STATE;
		item.stateMask = LVIS_SELECTED;
		item.iSubItem = 0;
		for (int i = 0; i < m_List_C.GetItemCount(); i++) 
		{
			item.iItem = i;
			m_List_C.GetItem(&item);
			if (item.state) 
			{
				if ((0x000000FF & item.lParam) == DEVTYPE_COM) 					
					pDoc->m_pCommunication->DeleteTscCom((BYTE)HIWORD(item.lParam));
				 return;
			}
		}
	}
}

void CRegionCommView::OnKillfocusList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	m_nFocusWnd = FW_UNKNOWN;
	*pResult = 0;
}

void CRegionCommView::OnSetfocusList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	m_nFocusWnd = FW_LIST;
	*pResult = 0;
}

void CRegionCommView::OnKillfocusTree1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	m_nFocusWnd = FW_UNKNOWN;
	*pResult = 0;
}

void CRegionCommView::OnSetfocusTree1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	m_nFocusWnd = FW_TREE;
	*pResult = 0;
}

//获取设备名称
void CRegionCommView::GetDevName(TCHAR *szBuf, int nBufLen, BYTE chDevType)
{
	ASSERT(nBufLen >= 10);

	switch (0x000000FF & chDevType) {
	case 0:
		_tcscpy(szBuf, _T("信号机"));
		break;
	case 1:
		_tcscpy(szBuf, _T("情报板"));
		break;
	case 2:
		_tcscpy(szBuf, _T("地图板"));
		break;
	default:
		_tcscpy(szBuf, _T("未知设备"));
	}

}
//定时
void CRegionCommView::OnTimer(UINT nIDEvent) 
{	
	if(m_Timer == nIDEvent)
	{
		CRegionCommDoc * pDoc = GetDocument();
		CCommunication * pCommunication = pDoc->m_pCommunication;
		pCommunication->AdjustDevConnect();	
	}
	///*
	if(m_TimerSock == nIDEvent)
	{
		CRegionCommDoc * pDoc = GetDocument();
		CCommunication * pCommunication = pDoc->m_pCommunication;
		if(pCommunication->m_pServerSocket->m_IsConnected!=TRUE)
		{
			pCommunication->m_pServerSocket->CloseSocket();
			if (pCommunication->m_pServerSocket->CreateSocket())
				pCommunication->m_pServerSocket->Connect();
			
			//pCommunication->m_pServerSocket->OnClose(0);
		}
	}
	//*/
	if(m_TimerConnectCenter == nIDEvent)
	{
		CRegionCommDoc * pDoc = GetDocument();
		CCommunication * pCommunication = pDoc->m_pCommunication;
		pCommunication->SendCenter();
	}
	CFormView::OnTimer(nIDEvent);
}



void CRegionCommView::OnCheckLicon() 
{
	if ((m_List_C.GetStyle() & LVS_TYPEMASK )!= LVS_ICON)
		m_List_C.ModifyStyle(LVS_TYPEMASK,LVS_ICON & LVS_TYPEMASK);
}

void CRegionCommView::OnCheckList() 
{	
	if ((m_List_C.GetStyle() & LVS_TYPEMASK )!= LVS_LIST)
		m_List_C.ModifyStyle(LVS_TYPEMASK,LVS_LIST & LVS_TYPEMASK);
}


void CRegionCommView::OnCheckReport() 
{
	if ((m_List_C.GetStyle() & LVS_TYPEMASK )!= LVS_REPORT)
		m_List_C.ModifyStyle(LVS_TYPEMASK,LVS_REPORT & LVS_TYPEMASK);
}



//区域设置
void CRegionCommView::OnSystemRegionno() 
{
	// TODO: Add your command handler code here
	CInputRegionNo dlg;
	CRegionCommDoc * pDoc = GetDocument();
	CString Str;
	dlg.m_nRegionNo = 0x000000FF & pDoc->m_pCommunication->m_cRegionNo;
	if (IDOK == dlg.DoModal())
	{
		if (dlg.m_nRegionNo != pDoc->m_pCommunication->m_cRegionNo) 
		{
			AfxGetApp()->WriteProfileInt(CenterServerConfigName,_T("RegionNO"),dlg.m_nRegionNo );			
			::MessageBox(NULL,"需要重新启动程序修改的区域号才能有效","注意",MB_OK);
		}
	}
}
//重启系统
void CRegionCommView::ResetSystem()
{
	CRegionCommDoc * pDoc = GetDocument();

	if (!pDoc->InitManagerView())
		return ;
	
	ResetTreeCtrlFormat();
	SetListCtrlFormat(DEVTYPE_REGION);
	return ;
}
//修改list的单个项目
void CRegionCommView::UpdateList(DWORD dwParam)
{	
	HTREEITEM hTreeItem = m_Tree_C.GetSelectedItem();
	if (!hTreeItem)
		hTreeItem = m_Tree_C.GetRootItem();
	TV_ITEM item;
	item.hItem = hTreeItem;
	m_Tree_C.GetItem(&item);
	BYTE DevType = HIBYTE(HIWORD(dwParam));
	switch(DevType)
	{
		case DEVTYPE_COM:
			if ((0x0000FFFF & item.lParam) == DEVTYPE_COM) 
			{	
				BYTE iComPort=LOBYTE(LOWORD(dwParam));
				if((BYTE)HIWORD(item.lParam) == iComPort)
				{
					BOOL iIsConnected=LOBYTE(HIWORD(dwParam));
					
					//lv add 060823
					/*
					LV_ITEM lvi;
					m_List_C.GetItem(&lvi);
					if(iIsConnected)
						lvi.iImage =DT_ICON_COM;
					else
						lvi.iImage =DT_ICON_COMNOTCON;
						/*/

					if(m_List_C.GetItemCount()>0)				
						m_List_C.SetItemText(0, LVISD_DEVSTATUS, 
						(iIsConnected ? "联机" : "脱机" ));					
				}
			}
			if ((0x0000FFFF & item.lParam) == DEVTYPE_REGION) 
			{	
				BYTE iComPort=LOBYTE(LOWORD(dwParam));
                LVFINDINFO lviRgn;
				lviRgn.flags=LVFI_PARAM;
				lviRgn.lParam=MAKELONG((WORD)DEVTYPE_COM,(WORD)iComPort);
                int itemIndex=m_List_C.FindItem(&lviRgn);
				if(itemIndex>=0)
				{
					BOOL iIsConnected=LOBYTE(HIWORD(dwParam));

					//lv add 060823
					//*??
					m_List_C.SetSelectionMark(itemIndex);
					LV_ITEM lvi;
					m_List_C.GetItem(&lvi);
					if(iIsConnected)
						lvi.iImage =DT_ICON_COM;
					else
						lvi.iImage =DT_ICON_COMNOTCON;
						//*/
					m_List_C.SetItem(&lvi);

                    m_List_C.SetItemText(itemIndex, LVISD_DEVSTATUS, 
						(iIsConnected ? "联机" : "脱机" ));					
				}
			}
			break;
		case DEVTYPE_SERVERSOCKET:
			if ((0x0000FFFF & item.lParam) == DEVTYPE_COM) 
			    return;				
            if ( ((0x0000FFFF & item.lParam) == DEVTYPE_REGION) ||
				((0x0000FFFF & item.lParam) == DEVTYPE_SERVERSOCKET)  )
			{
                LVFINDINFO lviRgn;
				lviRgn.flags=LVFI_PARAM;
				lviRgn.lParam=DEVTYPE_SERVERSOCKET;
                int itemIndex=m_List_C.FindItem(&lviRgn);
				if(itemIndex>=0)
				{
					CRegionCommDoc * pDoc = GetDocument();
					if(pDoc==NULL)
						return;
	                CCommunication * pCommunication = pDoc->m_pCommunication;
					if(pCommunication==NULL)
						return;
					m_List_C.SetItemText(0, LVISD_DEVSTATUS, 
						LPCTSTR(GetStateString(pCommunication->m_pServerSocket->GetState())));			        					
				}
			}
			break;
	}
	
}

void CRegionCommView::OnClose() 
{	
	KillTimer(m_Timer);
	CFormView::OnClose();
}
//属性菜单
void CRegionCommView::OnProperty() 
{	
	int nFocusWnd;
	nFocusWnd = m_nFocusWnd;
	DlgChgServer dlg;
	dlg.SetOwner(this);
	dlg.DoModal();
}

void CRegionCommView::OnSize(UINT nType, int cx, int cy) 
{
	CFormView::OnSize(nType, cx, cy);
	
	if(SIZE_MINIMIZED != nType)
	{
		CWindowDC dc(this);
		RECT rc;
		int width, height;
		TEXTMETRIC tm;
		dc.GetTextMetrics(&tm);
		height = tm.tmHeight + 6; //rc.bottom - rc.top + 6;
		GetClientRect(&rc);
		if(m_bottom == 0 && m_right == 0)
		{
			m_bottom = rc.bottom;
			m_right = rc.right;
			return;
		}
		if(m_hWnd == NULL)
			return;
		if(m_bottom == rc.bottom && m_right == rc.right)
			return;
		m_bottom = rc.bottom;
		m_right = rc.right;
		width = (rc.right+2)*3/10;
		if (width > rc.right)
			width = rc.right+4;
		RECT rect;
		rect.left = rc.left+2;
		rect.right = width-5;
		rect.top = rc.top+20;
		rect.bottom = rc.bottom-1;
		if(m_Tree_C.m_hWnd == NULL)
			return;
		m_Tree_C.MoveWindow(&rect);
		rect.left = width+2;
		rect.right = rc.right-5;
		m_List_C.MoveWindow(&rect);
		rect.left = rc.left+2;
		rect.right = width-5;
		rect.top = rc.top+2;
		rect.bottom = rc.top+15;
		m_TreeHead_C.MoveWindow(&rect);
		rect.left = width+2;
		rect.right = rc.right-5;
		m_ListHeader_C.MoveWindow(&rect);
	}
}

⌨️ 快捷键说明

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