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

📄 mainfrm.cpp

📁 操作系统是Windows 98
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		CString s;
		ptmplate->GetDocString(s,CDocTemplate::regFileTypeId);
		if(s == "CfgCAN.Document"){//已找到
			pos = ptmplate->GetFirstDocPosition();
			if(pos){//已打开
				CDocument* pDoc = ptmplate->GetNextDoc(pos);
				ASSERT(pDoc);
				ASSERT(pDoc->IsKindOf(RUNTIME_CLASS(CCfgCANDoc)));

				POSITION viewpos = pDoc->GetFirstViewPosition();
				CView* pView = pDoc->GetNextView(viewpos);
				ASSERT(pView != NULL);
				ASSERT(pView->IsKindOf(RUNTIME_CLASS(CCfgCANView)));
				CFrameWnd* pwnd = pView->GetParentFrame();
				ASSERT(pwnd != NULL);
				pwnd->ActivateFrame(SW_SHOW);
			}
			else{//创建
				ptmplate->OpenDocumentFile(NULL);
			}
			break;
		}
	}
}
//显示数据窗口
#include "SourceDlg.h"
void CMainFrame::OnViewShowdata() 
{
	CSourceDlg dlg;
	if(dlg.DoModal() == IDCANCEL) return;
	
	ShowDataCh(dlg.m_addr,dlg.m_ch);

}
//显示帧窗口
void CMainFrame::OnViewFramesShow() 
{
	POSITION pos = AfxGetApp()->GetFirstDocTemplatePosition();
	while(pos){
		CDocTemplate* ptmplate = AfxGetApp()->GetNextDocTemplate(pos);
		ASSERT(ptmplate);
		ASSERT(ptmplate->IsKindOf(RUNTIME_CLASS(CDocTemplate)));

		//判断是否是ShowFrames.document
		CString s;
		ptmplate->GetDocString(s,CDocTemplate::regFileTypeId);
		if(s == "ShowFrms.document"){//已找到
			pos = ptmplate->GetFirstDocPosition();
			if(pos){//已打开
				CDocument* pDoc = ptmplate->GetNextDoc(pos);
				ASSERT(pDoc);
				ASSERT(pDoc->IsKindOf(RUNTIME_CLASS(CFramesDoc)));

				POSITION viewpos = pDoc->GetFirstViewPosition();
				CView* pView = pDoc->GetNextView(viewpos);
				ASSERT(pView != NULL);
				ASSERT(pView->IsKindOf(RUNTIME_CLASS(CFramesView)));
				CFrameWnd* pwnd = pView->GetParentFrame();
				ASSERT(pwnd != NULL);
				pwnd->ActivateFrame(SW_SHOW);
			}
			else{//创建
				ptmplate->OpenDocumentFile(NULL);
			}
			break;
		}
	}
}
//显示批处理窗口
void CMainFrame::OnViewCmdbat() 
{
	POSITION pos = AfxGetApp()->GetFirstDocTemplatePosition();
	while(pos){
		CDocTemplate* ptmplate = AfxGetApp()->GetNextDocTemplate(pos);
		ASSERT(ptmplate);
		ASSERT(ptmplate->IsKindOf(RUNTIME_CLASS(CDocTemplate)));

		//判断是否是ShowFrames.document
		CString s;
		ptmplate->GetDocString(s,CDocTemplate::regFileTypeId);
		if(s == "CmdBat.document"){//已找到
			pos = ptmplate->GetFirstDocPosition();
			if(pos){//已打开
				CDocument* pDoc = ptmplate->GetNextDoc(pos);
				ASSERT(pDoc);
				ASSERT(pDoc->IsKindOf(RUNTIME_CLASS(CCmdBatDoc)));

				POSITION viewpos = pDoc->GetFirstViewPosition();
				CView* pView = pDoc->GetNextView(viewpos);
				ASSERT(pView != NULL);
				ASSERT(pView->IsKindOf(RUNTIME_CLASS(CCmdBatView)));
				CFrameWnd* pwnd = pView->GetParentFrame();
				ASSERT(pwnd != NULL);
				pwnd->ActivateFrame(SW_SHOW);
			}
			else{//创建
				ptmplate->OpenDocumentFile(NULL);
			}
			break;
		}
	}
}

void CMainFrame::OnClose() 
{//最好不要在析构函数中杀死线程
	if(m_bThrRunning)
		StopSystem();
	
	CMDIFrameWnd::OnClose();
}

#include "SelChQdDlg.h"
#include "SelCh7703Dlg.h"
#include "SelCh77032Dlg.h"
#include "Selch7710Dlg.h"
void CMainFrame::OnPopupDatawin() 
{
	//寻找哪一个模块被选中
	HTREEITEM ht = m_LeftDlg.m_systree.GetSelectedItem();

	//判断是否是模块
	tree<tree_node>::iterator it;
	for(it = m_LeftDlg.m_can.begin(); it != m_LeftDlg.m_can.end(); ++it){
		if((*it).ht == ht){//找到选中的项
			if((*it).is_model){//是模块
				break;
			}
			return;
		}
	}
	//现在it指向这个模块

	//根据模块类型,弹出不同的对话框,选择所要查看的数据通道
	CSelChQDDlg qddlg;
	CSelCh7703Dlg _7703dlg;
	CSelCh77032Dlg _77032dlg;
	CSelCh7710Dlg _7710dlg;

	BYTE addr = (*it).addr;
	BYTE ch;
	switch(get_type(addr)){
	case T_QD:
		if(qddlg.DoModal() == IDOK){
			ch = qddlg.m_selch;
			ShowDataCh(addr,ch);
		}
		break;
	case T_AD_7703:
		if(_7703dlg.DoModal() == IDOK){
			ch = _7703dlg.m_selch; 
			ShowDataCh(addr,ch);
		}
		break;
	case T_AD_7703_2:
		if(_77032dlg.DoModal() == IDOK){
			ch = _77032dlg.m_selch;
			ShowDataCh(addr,ch);
		}
		break;
	case T_AD_7710:
		if(_7710dlg.DoModal() == IDOK){
			ch = _7710dlg.m_selch;
			ShowDataCh(addr,ch);
		}
		break;
	default:
		break;
	}
}

void CMainFrame::OnPopupAttribute() 
{
	//寻找哪一个模块被选中

	//根据模块类型,弹出不同的对话框,选择所要查看的属性

}

void CMainFrame::ShowDataCh(BYTE addr, BYTE ch)
{
	if(addr >= MAX_MODELS || ch >= MAX_CHANS){
		AfxMessageBox("数据通道选择错!");
		return;
	}
	POSITION pos = AfxGetApp()->GetFirstDocTemplatePosition();
	while(pos){
		CDocTemplate* ptmplate = AfxGetApp()->GetNextDocTemplate(pos);
		ASSERT(ptmplate);
		ASSERT(ptmplate->IsKindOf(RUNTIME_CLASS(CDocTemplate)));

		//判断是否是ShowData.document
		CString s;
		ptmplate->GetDocString(s,CDocTemplate::regFileTypeId);
		if(s == "ShowData.document"){//已找到相应的模板
			CString s;
			s.Format("%d,%d",addr,ch);
			//如果该Doc以经打开,则不动作。Doc
			pos = ptmplate->GetFirstDocPosition();
			BOOL exist = FALSE;
			CDocument* pDoc;
			while(pos){//寻找doc
				pDoc = ptmplate->GetNextDoc(pos);
				ASSERT(pDoc != NULL);
				ASSERT(pDoc->IsKindOf(RUNTIME_CLASS(CDataShowDoc)));
				if((((CDataShowDoc*)pDoc)->m_addr == addr) &&
					(((CDataShowDoc*)pDoc)->m_ch == ch)){
					exist = TRUE;
					break;
				}
			}
			if(exist){
				//激活
				pos = pDoc->GetFirstViewPosition();
				CView* pView = pDoc->GetNextView(pos);
				ASSERT(pView != NULL);
				ASSERT(pView->IsKindOf(RUNTIME_CLASS(CDataShowView)));
				CFrameWnd* pwnd = pView->GetParentFrame();
				ASSERT(pwnd != NULL);
				pwnd->ActivateFrame(SW_SHOW);
		//		pwnd->SetActiveView(pView);
		//		pwnd->MDIActivate();
		//		pwnd->MDIActivate(pView);
			}
			else{//new
				ptmplate->OpenDocumentFile(s);
			}
			break;//不再找下一个模板了
		}
	}
}

void CMainFrame::OnViewCover() 
{
	POSITION pos = AfxGetApp()->GetFirstDocTemplatePosition();
	while(pos){
		CDocTemplate* ptmplate = AfxGetApp()->GetNextDocTemplate(pos);
		ASSERT(ptmplate);
		ASSERT(ptmplate->IsKindOf(RUNTIME_CLASS(CDocTemplate)));

		//判断是否是VCStyle.Document
		CString s;
		ptmplate->GetDocString(s,CDocTemplate::regFileTypeId);
		if(s == "VCStyle.Document"){//已找到
			pos = ptmplate->GetFirstDocPosition();
			if(pos){//已打开
				CDocument* pDoc = ptmplate->GetNextDoc(pos);
				ASSERT(pDoc);
				ASSERT(pDoc->IsKindOf(RUNTIME_CLASS(CVCStyleDoc)));

				POSITION viewpos = pDoc->GetFirstViewPosition();
				CView* pView = pDoc->GetNextView(viewpos);
				ASSERT(pView != NULL);
				ASSERT(pView->IsKindOf(RUNTIME_CLASS(CVCStyleView)));
				CFrameWnd* pwnd = pView->GetParentFrame();
				ASSERT(pwnd != NULL);
				pwnd->ActivateFrame(SW_SHOW);
			}
			else{//创建
				ptmplate->OpenDocumentFile(NULL);
			}
			break;
		}
	}
}
#include "set7710dlg1.h"
void CMainFrame::OnSysSet7710() 
{
	Set7710Dlg dlg;
	dlg.DoModal();
}

void CMainFrame::OnSysFrameCount() 
{
	CString s;
	s.Format("当前帧数为%d",m_nFrames);
	AfxMessageBox(s);
}

void CMainFrame::OnViewSJAReg() 
{
	POSITION pos = AfxGetApp()->GetFirstDocTemplatePosition();
	while(pos){
		CDocTemplate* ptmplate = AfxGetApp()->GetNextDocTemplate(pos);
		ASSERT(ptmplate);
		ASSERT(ptmplate->IsKindOf(RUNTIME_CLASS(CDocTemplate)));

		//判断是否是SJAReg.Document
		CString s;
		ptmplate->GetDocString(s,CDocTemplate::regFileTypeId);
		if(s == "SJAReg.document"){//已找到
			pos = ptmplate->GetFirstDocPosition();
			if(pos){//已打开
				CDocument* pDoc = ptmplate->GetNextDoc(pos);
				ASSERT(pDoc);
				ASSERT(pDoc->IsKindOf(RUNTIME_CLASS(CSJARegDoc)));

				POSITION viewpos = pDoc->GetFirstViewPosition();
				CView* pView = pDoc->GetNextView(viewpos);
				ASSERT(pView != NULL);
				ASSERT(pView->IsKindOf(RUNTIME_CLASS(CSJARegView)));
				CFrameWnd* pwnd = pView->GetParentFrame();
				ASSERT(pwnd != NULL);
				pwnd->ActivateFrame(SW_SHOW);
			}
			else{//创建
				ptmplate->OpenDocumentFile(NULL);
			}
			break;
		}
	}	
}

void CMainFrame::OnSysStartUdp() 
{
	WSADATA wsa;
	AfxSocketInit(&wsa);

	//创建本地连接
	m_sockSend.Create(6800,SOCK_DGRAM,NULL);
	//获取本地主机名和IP
/*	WORD wVersionRequested;
	WSADATA wsaData;
	char name[255];
	CString ip;
	PHOSTENT hostinfo;
	wVersionRequested = MAKEWORD(2,0);
	if(WSAStartup(wVersionRequested,&wsaData)==0){
		if(gethostname(name,sizeof(name))==0){
			if((hostinfo=gethostbyname(name))!=NULL){
				ip = inet_ntoa(*(struct in_addr*)*hostinfo->h_addr_list);
			}
		}

		WSACleanup();
	}
	else
		return;
*/	//绑定本地套接口

	m_sockSend.Bind(6800,"192.168.1.59");

	m_bStartUDP = TRUE;
}

void CMainFrame::OnSysUseRemoteSource() 
{
	if(m_bRemoteSource==TRUE) return;//已开启

	StopSystem();//先关系统
	m_bRemoteSource = TRUE;

	//不可少
	AfxSocketInit(NULL);

	//创建本地连接
	m_sockRecv.Create(6801,SOCK_DGRAM,NULL);
	//绑定本地套接口
	m_sockRecv.Bind(6801,"192.168.1.70");
	//
	m_sockRecv.AsyncSelect(FD_READ);
}

void CMainFrame::RemoteData()
{
	CString szIP("192.168.1.59");
	UINT uPort = 6800;
	//接受
	int iRecv = m_sockRecv.ReceiveFrom(m_rcbuf,11,szIP,uPort,0);
	TRACE("received %d byte\n",iRecv);
}

⌨️ 快捷键说明

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