// BondEq.cpp : ¶¨ÒåÓ¦ÓóÌÐòµÄÀàÐÐΪ¡£ // #include "stdafx.h" #include "BondEq.h" #include "BondEqDlg.h" #include "AccordionWnd.h" #include "VerticalLine.h" #include "HorizontalLine.h" #include "HmTab.h" #include "HmVerticalTab.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // CBondEqApp BEGIN_MESSAGE_MAP(CBondEqApp, CWinApp) ON_COMMAND(ID_HELP, &CWinApp::OnHelp) END_MESSAGE_MAP() // CBondEqApp ¹¹Ôì CBondEqApp::CBondEqApp() { // Ö§³ÖÖØÐÂÆô¶¯¹ÜÀíÆ÷ m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART; // TODO: ÔÚ´Ë´¦Ìí¼Ó¹¹Ôì´úÂ룬 // ½«ËùÓÐÖØÒªµÄ³õʼ»¯·ÅÖÃÔÚ InitInstance ÖÐ } // ΨһµÄÒ»¸ö CBondEqApp ¶ÔÏó CBondEqApp theApp; // CBondEqApp ³õʼ»¯ BOOL CBondEqApp::InitInstance() { // Èç¹ûÒ»¸öÔËÐÐÔÚ Windows XP ÉϵÄÓ¦ÓóÌÐòÇåµ¥Ö¸¶¨Òª // ʹÓà ComCtl32.dll °æ±¾ 6 »ò¸ü¸ß°æ±¾À´ÆôÓÿÉÊÓ»¯·½Ê½£¬ //ÔòÐèÒª InitCommonControlsEx()¡£ ·ñÔò£¬½«ÎÞ·¨´´½¨´°¿Ú¡£ INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // ½«ËüÉèÖÃΪ°üÀ¨ËùÓÐÒªÔÚÓ¦ÓóÌÐòÖÐʹÓÃµÄ // ¹«¹²¿Ø¼þÀà¡£ InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinApp::InitInstance(); AfxEnableControlContainer(); // ´´½¨ shell ¹ÜÀíÆ÷£¬ÒÔ·À¶Ô»°¿ò°üº¬ // ÈκΠshell Ê÷ÊÓͼ¿Ø¼þ»ò shell ÁбíÊÓͼ¿Ø¼þ¡£ CShellManager *pShellManager = new CShellManager; // ¼¤»î¡°Windows Native¡±ÊÓ¾õ¹ÜÀíÆ÷£¬ÒÔ±ãÔÚ MFC ¿Ø¼þÖÐÆôÓÃÖ÷Ìâ CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows)); // ±ê×¼³õʼ»¯ // Èç¹ûδʹÓÃÕâЩ¹¦Äܲ¢Ï£Íû¼õС // ×îÖÕ¿ÉÖ´ÐÐÎļþµÄ´óС£¬ÔòÓ¦ÒÆ³ýÏÂÁÐ // ²»ÐèÒªµÄÌØ¶¨³õʼ»¯Àý³Ì // ¸ü¸ÄÓÃÓÚ´æ´¢ÉèÖõÄ×¢²á±íÏî // TODO: Ó¦Êʵ±Ð޸ĸÃ×Ö·û´®£¬ // ÀýÈçÐÞ¸ÄΪ¹«Ë¾»ò×éÖ¯Ãû SetRegistryKey(_T("Ó¦ÓóÌÐòÏòµ¼Éú³ÉµÄ±¾µØÓ¦ÓóÌÐò")); // ±¾³ÌÐòÎļþĿ¼ TCHAR sDrive[_MAX_DRIVE]; TCHAR sDir[_MAX_DIR]; TCHAR sFilename[_MAX_FNAME], sAppFilename[_MAX_FNAME]; TCHAR sExt[_MAX_EXT]; GetModuleFileName(AfxGetInstanceHandle(), sAppFilename, _MAX_FNAME); _tsplitpath_s(sAppFilename, sDrive, sDir, sFilename, sExt); m_strAppDir = CString(sDrive) + CString(sDir); m_strAppFile = CString(sFilename); m_model.setWorkDir((LPTSTR)(LPCTSTR)m_strAppDir); m_hAppMutex = CreateMutexA(NULL, FALSE, _T("BondEqApp")); if (GetLastError() == ERROR_ALREADY_EXISTS) { AfxMessageBox(_T("ÒѾ­ÔËÐÐÁËÒ»¸öʵÀý£¬Æô¶¯Ê§°Ü!")); return FALSE; } // ³õʼ»¯BEQ¿â BEQ_Initialize(); RX_Init(); CString strIniFile; strIniFile.Format(_T("%s\\configuration.ini"), (LPTSTR)(LPCTSTR)m_strAppDir); int plcTimeout = GetPrivateProfileInt("PLC", "Timeout", 700, strIniFile); int plcBufSize = GetPrivateProfileInt("PLC", "BufSize", 20, strIniFile); int plcPacketSize = GetPrivateProfileInt("PLC", "PacketSize", 80, strIniFile); MCL_Initialize(); MCL_SetTimeout(plcTimeout); MCL_SetMaxActionSize(plcBufSize); MCL_SetPacketSize(plcPacketSize); // ×Ô¶¨Òå×é¼þ CAccordionWnd::RegisterWndClass(); CVerticalLine::RegisterWndClass(); CHorizontalLine::RegisterWndClass(); CHmTab::RegisterWndClass(); CHmVerticalTab::RegisterWndClass(); CBondEqDlg dlg; m_pMainWnd = &dlg; INT_PTR nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: ÔÚ´Ë·ÅÖô¦ÀíºÎʱÓà // ¡°È·¶¨¡±À´¹Ø±Õ¶Ô»°¿òµÄ´úÂë } else if (nResponse == IDCANCEL) { // TODO: ÔÚ´Ë·ÅÖô¦ÀíºÎʱÓà // ¡°È¡Ïû¡±À´¹Ø±Õ¶Ô»°¿òµÄ´úÂë } else if (nResponse == -1) { TRACE(traceAppMsg, 0, "¾¯¸æ: ¶Ô»°¿ò´´½¨Ê§°Ü£¬Ó¦ÓóÌÐò½«ÒâÍâÖÕÖ¹¡£\n"); TRACE(traceAppMsg, 0, "¾¯¸æ: Èç¹ûÄúÔÚ¶Ô»°¿òÉÏʹÓà MFC ¿Ø¼þ£¬ÔòÎÞ·¨ #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS¡£\n"); } // ɾ³ýÉÏÃæ´´½¨µÄ shell ¹ÜÀíÆ÷¡£ if (pShellManager != NULL) { delete pShellManager; } // ÓÉÓÚ¶Ô»°¿òÒѹرգ¬ËùÒÔ½«·µ»Ø FALSE ÒÔ±ãÍ˳öÓ¦ÓóÌÐò£¬ // ¶ø²»ÊÇÆô¶¯Ó¦ÓóÌÐòµÄÏûÏ¢±Ã¡£ return FALSE; } int CBondEqApp::ExitInstance() { m_model.term(); BEQ_Term(); RX_Term(); MCL_Term(); return CWinApp::ExitInstance(); }