www.pudn.com > RMS2000_C.rar > DrawCli.cpp
// DrawCli.cpp : Defines the class behaviors for the application. // //内存检测 begin #define _CRTDBG_MAP_ALLOC #include#include //内存检测 end #include "stdafx.h" #include "memory.h" #include "DrawCli.h" #include "MainFrm.h" #include "SplitFrm.h" #include "DrawDoc.h" #include "DrawVw.h" #include "WzdSplsh.h" #include "tabDoc.h" #include "tabView.h" #include "RealDoc.h" #include "RealView.h" #include "RTFrame.h" #include "RTDoc.h" #include "RTView.h" #include "CurveDoc.h" #include "CurveView.h" #include "CurveFrame.h" #include "globalpara.h" #include "stadlg.h" #include "Password.h" #include "MPassword.h" #include "ChaDoc.h" #include "ChaView.h" #include "FindDoc.h" #include "FindView.h" #include "FindFrm.h" #include "LeftView.h" #include "WarnDoc.h" #include "WarnView.h" #include "CurveDlg.h" #include "RealCurDlg.h" #include "CalendarDlg.h" #include "CalcuDlg.h" #include "gsmh.h" #ifdef __cplusplus extern "C" { #endif extern short int DogBytes,DogAddr; extern unsigned long DogPassword; extern unsigned long DogResult; extern unsigned char DogCascade; extern void * DogData; extern unsigned long DogCheck(void); extern unsigned long ReadDog(void); extern unsigned long DogConvert(void); extern unsigned long WriteDog(void); extern unsigned long DisableShare(void); extern unsigned long GetCurrentNo(void); #ifdef __cplusplus } #endif short int DogAddr,DogBytes; unsigned long DogPassword, DogResult; unsigned char DogCascade; void far * DogData; #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif char Password[20]; void SavePassword(); //存口令 void LoadPassword(); //读口令 #define UNIQUE_NAME "{D8C91276_DF05_4257_A506_C1232A8E8595}" char RunWorkPath[]= "C:\\RMS2000"; unsigned short IpPort = 3333; int demo; int MaxInstRtu; RmsSta * Stations[MAX_RTU_NUM]; //ODBC //必须把ODBCINST.H文件包含在工程头文件中; //将ODBCCP32.LIB加人工程; //同时保证ODBCCP32.DLL运行时处于系统子目录下。 #include ///////////////////////////////////////////////////////////////////////////// // CDrawApp BEGIN_MESSAGE_MAP(CDrawApp, CWinApp) //{{AFX_MSG_MAP(CDrawApp) ON_COMMAND(ID_APP_ABOUT, OnAppAbout) ON_COMMAND(ID_REALTIME_TAB, OnRealtimeTab) ON_COMMAND(ID_REALTIME_CURVE, OnRealtimeCurve) ON_COMMAND(ID_HISTORY_CURVE, OnHistoryCurve) ON_COMMAND(IDM_GLOBAL_PARA, OnGlobalPara) ON_COMMAND(IDM_STATION_PARA, OnStationPara) ON_COMMAND(ID_MODI_PASSWORD, OnModiPassword) ON_COMMAND(ID_CHA_DATA, OnChaData) ON_COMMAND(ID_FIND_DATA, OnFindData) ON_COMMAND(ID_WARN_DATA, OnWarnData) ON_COMMAND(ID_CALENDAR, OnCalendar) ON_COMMAND(ID_REG_OCX, OnRegOcx) ON_COMMAND(ID_SPLIT_FILE, OnSplitFile) ON_COMMAND(IDM_CALCULATOR, OnCalculator) //}}AFX_MSG_MAP // Standard file based document commands ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew) ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen) // Standard print setup command ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CDrawApp construction CDrawApp::CDrawApp() { // TODO: add construction code here, // Place all significant initialization in InitInstance } ///////////////////////////////////////////////////////////////////////////// // The one and only CDrawApp object CDrawApp theApp; ///////////////////////////////////////////////////////////////////////////// // CDrawApp initialization BOOL CDrawApp::InitInstance() { DWORD dwStatus; char Message[100]; char szData[20] ; DogData = szData; // szData to store date from SoftDog. DogAddr = 0; DogBytes = 10; dwStatus = ReadDog(); if (dwStatus) { sprintf ( Message, "无钥匙盘.\r 演示运行2小时."); // if (RMSWS==1) AfxMessageBox(Message); demo=1; } else { if ((szData[1]==0x68)&&(szData[3]==0x4b)&&(szData[5]==0x62)) demo=0; else demo=1; } demo=1; if (RMSWS==0) demo=0; m_hOneInstance=::CreateMutex(NULL,FALSE,UNIQUE_NAME); if (GetLastError()==ERROR_ALREADY_EXISTS) { AfxMessageBox("应用程序已经运行!"); return FALSE; } char fname[50]; strcpy(fname,RunWorkPath); CreateDirectory(fname,NULL); strcat(fname,"\\Dat"); CreateDirectory(fname,NULL); strcpy(fname,RunWorkPath); strcat(fname,"\\Par"); CreateDirectory(fname,NULL); strcpy(fname,RunWorkPath); strcat(fname,"\\Rpt"); CreateDirectory(fname,NULL); strcpy(fname,RunWorkPath); strcat(fname,"\\Wav"); CreateDirectory(fname,NULL); strcpy(fname,RunWorkPath); strcat(fname,"\\DB"); CreateDirectory(fname,NULL); // SetupODBCSource(); //建立ODBC数据源 if (!AfxSocketInit()) { AfxMessageBox(IDP_SOCKETS_INIT_FAILED); return FALSE; } // Initialize OLE libraries if (!AfxOleInit()) { AfxMessageBox(IDP_OLE_INIT_FAILED); return FALSE; } AfxEnableControlContainer(); #ifdef _AFXDLL Enable3dControls(); // Call this when using MFC in a shared DLL #else Enable3dControlsStatic(); // Call this when linking to MFC statically #endif SetRegistryKey(_T("王亚民")); LoadStdProfileSettings(); // Load standard INI file options (including MRU) CMultiDocTemplate* pDocTemplate; pDocTemplate = new CMultiDocTemplate( IDR_DRAWCLTYPE, RUNTIME_CLASS(CDrawDoc), RUNTIME_CLASS(CSplitFrame), // custom MDI child frame RUNTIME_CLASS(CDrawView)); pDocTemplate->SetContainerInfo(IDR_DRAWCLTYPE_CNTR_IP); AddDocTemplate(pDocTemplate); pTabDocTemplate = new CMultiDocTemplate( IDR_DRAWCLTYPE, RUNTIME_CLASS(CTabDoc), RUNTIME_CLASS(CSplitFrame), // custom MDI child frame RUNTIME_CLASS(CTabView)); pTabDocTemplate->SetContainerInfo(IDR_DRAWCLTYPE_CNTR_IP); pRealDocTemplate = new CMultiDocTemplate( IDR_DRAWCLTYPE, RUNTIME_CLASS(CRealDoc), RUNTIME_CLASS(CSplitFrame), // custom MDI child frame RUNTIME_CLASS(CRealView)); pRealDocTemplate->SetContainerInfo(IDR_DRAWCLTYPE_CNTR_IP); pRTDocTemplate = new CMultiDocTemplate( IDR_DRAWCLTYPE, RUNTIME_CLASS(CRTDoc), RUNTIME_CLASS(CRTFrame), // custom MDI child frame RUNTIME_CLASS(CRTView)); pRealDocTemplate->SetContainerInfo(IDR_DRAWCLTYPE_CNTR_IP); pCurDocTemplate = new CMultiDocTemplate( IDR_DRAWCLTYPE, RUNTIME_CLASS(CCurveDoc), RUNTIME_CLASS(CCurveFrame), // custom MDI child frame RUNTIME_CLASS(CCurveView)); pCurDocTemplate->SetContainerInfo(IDR_DRAWCLTYPE_CNTR_IP); pChaDocTemplate = new CMultiDocTemplate( IDR_DRAWCLTYPE, RUNTIME_CLASS(CChaDoc), RUNTIME_CLASS(CSplitFrame), RUNTIME_CLASS(CChaView)); pChaDocTemplate->SetContainerInfo(IDR_DRAWCLTYPE_CNTR_IP); pFindDocTemplate = new CMultiDocTemplate( IDR_DRAWCLTYPE, RUNTIME_CLASS(CFindDoc), RUNTIME_CLASS(CFindFrame), // custom MDI child frame RUNTIME_CLASS(CLeftView)); // RUNTIME_CLASS(CFindView)); pChaDocTemplate->SetContainerInfo(IDR_DRAWCLTYPE_CNTR_IP); pWarnDocTemplate = new CMultiDocTemplate( IDR_DRAWCLTYPE, RUNTIME_CLASS(CWarnDoc), RUNTIME_CLASS(CSplitFrame), // custom MDI child frame RUNTIME_CLASS(CWarnView)); pWarnDocTemplate->SetContainerInfo(IDR_DRAWCLTYPE_CNTR_IP); //系统初始化begin LoadPassword(); GetGloParam(&m_QJCS); InitSta(); //系统初始化end // create main MDI Frame window CMainFrame* pMainFrame = new CMainFrame; if (!pMainFrame->LoadFrame(IDR_MAINFRAME)) return FALSE; m_pMainWnd = pMainFrame; CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); //不创建一个新文档 //在程序的InitInstance中的ProcessShellCommand函数之前加入: cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing; // Dispatch commands specified on the command line if (!ProcessShellCommand(cmdInfo)) return FALSE; // The main window has been initialized, so show and update it. m_nCmdShow=SW_SHOWMAXIMIZED; pMainFrame->ShowWindow(m_nCmdShow); pMainFrame->UpdateWindow(); CWzdSplash wndSplash; wndSplash.Create(IDB_WZDSPLASH); wndSplash.UpdateWindow(); //send WM_PAINT CString FileName("c:\\map.rms"); //"\\par\\map.rms"); OpenDocumentFile(/*RunWorkPath+*/FileName); return TRUE; } ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: //{{AFX_MSG(CAboutDlg) // No message handlers //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers //}}AFX_MSG_MAP END_MESSAGE_MAP() // App command to run the dialog void CDrawApp::OnAppAbout() { CAboutDlg aboutDlg; aboutDlg.DoModal(); } ///////////////////////////////////////////////////////////////////////////// // CDrawApp message handlers void CDrawApp::OnRealtimeTab() { CTabDoc * doc=new CTabDoc("实时表格"); CFrameWnd* wnd=pTabDocTemplate->CreateNewFrame(doc,NULL); if (wnd) pTabDocTemplate->InitialUpdateFrame(wnd,doc,TRUE); if (wnd) doc->UpdateAllViews(NULL); } void CDrawApp::OnRealtimeCurve() { CRealcurDlg dlg; int nResult; nResult=dlg.DoModal(); if (nResult==IDOK) { /* CRealDoc * doc=new CRealDoc("实时曲线"); doc->m_Rtu=dlg.m_Rtu; doc->m_Param=dlg.m_Param; CFrameWnd* wnd=pRealDocTemplate->CreateNewFrame(doc,NULL); if (wnd) pRealDocTemplate->InitialUpdateFrame(wnd,doc,TRUE); if (wnd) doc->UpdateAllViews(NULL); */ CRTDoc * doc=new CRTDoc("实时曲线"); doc->m_Rtu=dlg.m_Rtu; doc->m_Param=dlg.m_Param; CFrameWnd* wnd=pRTDocTemplate->CreateNewFrame(doc,NULL); if (wnd) pRTDocTemplate->InitialUpdateFrame(wnd,doc,TRUE); if (wnd) doc->UpdateAllViews(NULL); } } void CDrawApp::OnHistoryCurve() { CCurveDlg dlg; int nResult; nResult=dlg.DoModal(); if (nResult==IDOK) { CCurveDoc * doc=new CCurveDoc("历史数据曲线"); CFrameWnd* wnd=pCurDocTemplate->CreateNewFrame(doc,NULL); if (wnd) pCurDocTemplate->InitialUpdateFrame(wnd,doc,TRUE); strcpy(doc->m_date,dlg.m_szDate); memmove(&(doc->m_InfoTable),&(dlg.m_InfoTable),sizeof(CURDATAINFO)); if (wnd) doc->GetHistoryData(0); if (wnd) doc->UpdateAllViews(NULL); } } void CDrawApp::OnGlobalPara() { CPassword Password; if (Password.DoModal()==IDOK) { CGlobalPara GParaDlg; if (GParaDlg.DoModal()==IDOK) { GetGloParam(&m_QJCS); } } } BOOL CDrawApp::GetGloParam(RmsGlo *pQJCS) { CFile m_file; CString pFileName("\\par\\GloParam.Cfg"); if ( m_file.Open(RunWorkPath+pFileName,CFile::modeRead, NULL)) { m_file.Seek(0, CFile::begin); m_file.Read(pQJCS, sizeof(RmsGlo)); m_file.Close(); MaxInstRtu=0; if (pQJCS->InstallSta>=15) pQJCS->InstallSta=15; for (int i=0;i InstallSta;i++) { if (pQJCS->StaToRtu[i]>MaxInstRtu) MaxInstRtu=pQJCS->StaToRtu[i]; } pQJCS->MasterWs=RMSWS; return 1; } else { memset(pQJCS,0,sizeof(RmsGlo)); MaxInstRtu=0; } return 0; } BOOL CDrawApp::PutGloParam(RmsGlo *pQJCS) { CFile m_file; CString pFileName("\\par\\GloParam.Cfg"); if ( m_file.Open(RunWorkPath+pFileName,CFile::modeCreate|CFile::modeWrite, NULL)) { m_file.Seek(0, CFile::begin); m_file.Write(pQJCS, sizeof(RmsGlo)); m_file.Close(); return 1; } return 0; } void CDrawApp::OnStationPara() { CPassword Password; if (Password.DoModal()==IDOK) { CStaDlg StaDlg; if (StaDlg.DoModal()==IDOK) { for (int i=0;i CreateNewFrame(doc,NULL); if (wnd) pChaDocTemplate->InitialUpdateFrame(wnd,doc,TRUE); } void CDrawApp::OnFindData() { CFindDoc * doc=new CFindDoc("数据查询"); CFrameWnd* wnd=pFindDocTemplate->CreateNewFrame(doc,NULL); if (wnd) pFindDocTemplate->InitialUpdateFrame(wnd,doc,TRUE); } void CDrawApp::SetupODBCSource() { SQLConfigDataSource(NULL,ODBC_ADD_SYS_DSN, "Microsoft Access Driver (*.mdb)\0", "DSN=Rms2000\0DBQ=C:\\Rms2000\\db\\Rms2000.mdb\0DEFAULTDIR=C:\\Rms2000\\db\0\0"); } void CDrawApp::OnWarnData() { CWarnDoc * doc=new CWarnDoc("报警查询"); CFrameWnd* wnd=pWarnDocTemplate->CreateNewFrame(doc,NULL); if (wnd) pWarnDocTemplate->InitialUpdateFrame(wnd,doc,TRUE); } void CDrawApp::OnCalendar() { CCalendarDlg Dlg; Dlg.DoModal(); } void CDrawApp::OnRegOcx() { WinExec("c:\\rms2000\\RegComp.exe",SW_SHOW); } void CDrawApp::OnSplitFile() { WinExec("c:\\rms2000\\FileSplt.exe",SW_SHOW); } void CDrawApp::OnCalculator() { CCalcuDlg Dlg; Dlg.DoModal(); }