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

📄 mainfrm.cpp

📁 cdma无线通信转发程序 用于电力调度数据的转发
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//

#include "stdafx.h"
#include "3104C.h"
#include <sys/stat.h>
#include <io.h>
#include "MainFrm.h"
#include "netrtu.h"
#define  _MAIN_FERT_
#include "mydata.h"
#include "3104cview.h"
#include "3104cDoc.h"

#include <windows.h>

#include "Shlwapi.h"

#include "syspara.h"
#include "ViewPara.h"
#include "dialproc.h"

//#include "global.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
int    m_ChanNo [MAXVIEWNUM];
int    ShowFlag [MAXVIEWNUM];
int    saveFlag [MAXVIEWNUM];
int    flag=0;
extern CMy3104CApp theApp;
extern int afert_init();
extern void Exit_Clear();
extern int live_flag;
/////////////////////////////////////////////////////////////////////////////
// CMainFrame

IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
	//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()
	ON_WM_TIMER()
	ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
	ON_COMMAND(ID_SHOW_SYSPARA, OnShowSyspara)
	ON_WM_COPYDATA()
	ON_WM_CLOSE()
	ON_COMMAND(ID_SHOWDATA_ALL, OnShowdataAll)
	ON_COMMAND(ID_SHOW_STOP, OnShowStop)
	ON_COMMAND(ID_SHOWDATA_START, OnShowdataStart)
	ON_COMMAND(ID_SHOW_CLEAR,OnShowClear)
	ON_UPDATE_COMMAND_UI(ID_SHOWDATA_START, OnUpdateShowdataStart)
	ON_UPDATE_COMMAND_UI(ID_SHOW_STOP, OnUpdateShowStop)
	ON_UPDATE_COMMAND_UI(ID_SAVE_DATA, OnUpdateSaveData)
	//***************************************************
	ON_UPDATE_COMMAND_UI(ID_SHOW_CLEAR, OnUpdateClear)
	//**************************************************
	ON_COMMAND(ID_SAVE_DATA, OnSaveData)
	
	ON_WM_ERASEBKGND()
	//}}AFX_MSG_MAP
	ON_COMMAND_RANGE(STARMENUID,STARMENUID+MAXCHANNUM,OnShowdata)	
END_MESSAGE_MAP()

static UINT indicators[] =   //状态栏指示器
{
	ID_SEPARATOR,           // 指示器状态行status line indicator
	ID_SEPARATOR,
	ID_SEPARATOR,
	ID_SEPARATOR,
	ID_SEPARATOR,
	ID_SEPARATOR
};

/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction

CMainFrame::CMainFrame()
{
	for (int i = 0; i < MAXVIEWNUM ; i++)
	{
		ChildFrameList[i]=0;
		m_ChanNo[i]=-1;
		ShowFlag[i] =0;
		saveFlag[i] =0;
	    ChildFrameNum =0;
	}
	
	m_no =-1;
//		ON_COMMAND_RANGE(STARMENUID,STARMENUID+MAXCHANNUM,OnShowdata)

}

CMainFrame::~CMainFrame()
{
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)//创建窗口
{
	if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	//创建工具栏
	if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}
    //创建状态栏
	if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		  sizeof(indicators)/sizeof(UINT)))
	{
		TRACE0("Failed to create status bar\n");
		return -1;      // fail to create
	}

	// TODO: Delete these three lines if you don't want the toolbar to
	//  be dockable
	//设置工具栏停靠状态
	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
	EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(&m_wndToolBar);	

	UINT nID, nStyle;  int cxWidth;
	m_wndStatusBar.GetPaneInfo( 0, nID, nStyle, cxWidth);
	m_wndStatusBar.SetPaneInfo( 0, nID, SBPS_STRETCH, 160);
	m_wndStatusBar.GetPaneInfo( 1, nID, nStyle, cxWidth);
	m_wndStatusBar.SetPaneInfo( 1, nID, SBPS_NORMAL, 140);
	m_wndStatusBar.GetPaneInfo( 2, nID, nStyle, cxWidth);
	m_wndStatusBar.SetPaneInfo( 2, nID, SBPS_NORMAL, 120);
	m_wndStatusBar.GetPaneInfo( 3, nID, nStyle, cxWidth);
	m_wndStatusBar.SetPaneInfo( 3, nID, SBPS_NORMAL, 120);
	m_wndStatusBar.GetPaneInfo( 4, nID, nStyle, cxWidth);
	m_wndStatusBar.SetPaneInfo( 4, nID, SBPS_NORMAL, 250);
	m_wndStatusBar.GetPaneInfo( 5, nID, nStyle, cxWidth);
	m_wndStatusBar.SetPaneInfo( 5, nID, SBPS_NORMAL, 180);
	
	
	DWORD dwExStyle = TBSTYLE_EX_DRAWDDARROWS;
	m_wndToolBar.GetToolBarCtrl().SendMessage(TB_SETEXTENDEDSTYLE, 0, (LPARAM)dwExStyle);      
	
	DWORD dwStyle = m_wndToolBar.GetButtonStyle(m_wndToolBar.CommandToIndex(ID_SAVE_DATA));
	dwStyle |= TBSTYLE_CHECK;
	m_wndToolBar.SetButtonStyle(m_wndToolBar.CommandToIndex(ID_SAVE_DATA), dwStyle); 
	
	//m_wndToolBar.SetButtonStyle(m_wndToolBar.CommandToIndex(ID_SHOW_CLEAR), dwStyle);
	//m_wndToolBar.GetToolBarCtrl.EnableButton(ID_SHOW_CLEAR,FALSE);
    //m_wndToolBar.GetDlgItem(ID_SHOW_CLEAR).EnableWindow(FALSE);
	//////////////////////
	//***************************************************************************************
	CString strpa;
    char strpath[50];
	
    GetCurrentDirectory(MAX_PATH,strpath);
    strpa.Format("%s\\data",strpath);
	//if(!PathIsDirectory(strpa))
	CreateDirectory(strpa,NULL);
   	afert_init();
	/////////////////////
	//***************************************************************************************
	CMenu *menu = (CMenu *)this->GetMenu()->GetSubMenu(1)->GetSubMenu(1) ;
	CString str;
	for(int i =0;i<G_Channel.chan_num;i++)
	{
		if(strcmp(G_Channel.chan_data [i].chanName,"")==0)
			str.Format("第%02d号通道",i);
		else
			str.Format("%s (通道%d)",G_Channel.chan_data[i].chanName,i);
		menu->AppendMenu(MF_STRING,STARMENUID+i,str);
	}
	

	SetTimer(1,1000,NULL);

	//通道个数1
	str.Format("通道个数=%d", G_Channel.chan_num);
	m_wndStatusBar.SetPaneText(1, str,TRUE);
	//动态IP2
	if(G_Channel.DynamicIpFlag)
		str="终端动态IP";
	else str = "终端静态IP";
	m_wndStatusBar.SetPaneText(2, str,TRUE);
	//自动拨号3
	if(G_Channel.autoDial)
		str = "系统自动拨号";
	else
		str = "系统未自动拨号";
	m_wndStatusBar.SetPaneText(3, str,TRUE);

	return 0;
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)//定义窗口样式
{
	if( !CMDIFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	//通过修改CS变量修改窗口类或样式
	//定义窗口代码
	//cs.cx=450;//新窗口宽度
	//cs.cy=300;//新窗口高度
	//cs.style=WS_POPUPWINDOW|WS_CAPTION;//新窗口去掉子窗口名、最大化和最小化按钮
	//
	//打开视图类VIEW并定位PreCreateWindow函数,在其中添加
	char	ParaFile[MAX_PATH],g_ParaFilePath[MAX_PATH];
	if(!GetCurrentDirectory(MAX_PATH,g_ParaFilePath))
		strcpy(g_ParaFilePath,PATH);
	
	sprintf(ParaFile,"%s\\Para.ini",g_ParaFilePath);
	G_Channel.systype=GetPrivateProfileInt("系统参数", "系统类型",  0,ParaFile);
	if(G_Channel.systype==0)
	{
	  m_strTitle = "3104C数据转发(接收端)--石家庄科林自动化有限公司";
	  cs.style &= ~FWS_ADDTOTITLE;
	}
	else if(G_Channel.systype==1)
	{
		m_strTitle = "3104C数据转发(发送端)--石家庄科林自动化有限公司";
		cs.style &= ~FWS_ADDTOTITLE;
	}
	else
        m_strTitle = "3104C数据转发--石家庄科林自动化有限公司";
	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics

#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
	CMDIFrameWnd::AssertValid();
}

void CMainFrame::Dump(CDumpContext& dc) const
{
	CMDIFrameWnd::Dump(dc);
}

#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers

void CMainFrame::OnTimer(UINT nIDEvent) 
{
	char	TempBuf[40];
	SYSTEMTIME SystemTime;
	GetLocalTime(&SystemTime);
	wsprintf(TempBuf," %04d年%02d月%02d日  %02d:%02d:%02d  ",SystemTime.wYear,SystemTime.wMonth,SystemTime.wDay,
		SystemTime.wHour,SystemTime.wMinute,SystemTime.wSecond);
	switch (SystemTime.wDayOfWeek)
	{
	case 0:
		lstrcat(TempBuf,"星期日");			break;
	case 1:
		lstrcat(TempBuf,"星期一");			break;
	case 2:
		lstrcat(TempBuf,"星期二");			break;
	case 3:
		lstrcat(TempBuf,"星期三");			break;
	case 4:
		lstrcat(TempBuf,"星期四");			break;
	case 5:
		lstrcat(TempBuf,"星期五");			break;
	case 6:
		lstrcat(TempBuf,"星期六");			break;
	}
	m_wndStatusBar.SetPaneText(5, TempBuf,TRUE);	
	if(flag >=1)
	{
		flag --;
		OnCommand(ID_WINDOW_TILE_VERT, 0);
	}

	CMDIFrameWnd::OnTimer(nIDEvent);
}

void CMainFrame::OnFileOpen() 
{
	
}

void CMainFrame::OnShowSyspara() 
{
  // CSysPara dlg;
	CViewPara dlg;
   dlg.DoModal();
}


BOOL CMainFrame::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) 
{
	char RData[512];
	memset(RData, 0, 512);
	memcpy(RData, pCopyDataStruct->lpData, pCopyDataStruct->dwData);
	
	G_ChangeFlag = TRUE;

	char	Status[512];
	memset(Status, 0, 512);
	
	for(int i=0; i<(int)pCopyDataStruct->dwData; i++)
	{
		Status[i] = RData[i];
	}

	struct tm *osTime;
	CTime t = CTime::GetCurrentTime();
	osTime = t.GetLocalTm(NULL);

	m_wndStatusBar.SetPaneText(4, Status,TRUE);	

	return CMDIFrameWnd::OnCopyData(pWnd, pCopyDataStruct);
}

void CMainFrame::OnClose() 
{
	live_flag=FALSE;
	for (int i = 0; i < MAXVIEWNUM; i++)
	{
		if(m_ChanNo[i] != -1)
		{
			CMy3104CView *pView = (CMy3104CView *)ChildFrameList[i]->GetActiveView(); 
			if(pView == NULL)  continue ;
			
			CRichEditCtrl &p = (CRichEditCtrl &)pView->GetRichEditCtrl();
			p.SetModify(FALSE); 
		}

	}
	if(G_Channel.dialData.bDialNow)
		HangUp();
    Exit_Clear();	

⌨️ 快捷键说明

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