| | |
| | | #include "ServoDlg.h" |
| | | #include "ServoGraph.h" |
| | | #include "AlarmManager.h" |
| | | #include "SECSRuntimeManager.h" |
| | | #include "TransferManager.h" |
| | | #include "SystemLogManager.h" |
| | | #include "UserManager.h" |
| | | #include "RecipeManager.h" |
| | | #include "VerticalLine.h" |
| | | #include "HorizontalLine.h" |
| | | #include "EqsGraphWnd.h" |
| | | #include "MapPosWnd.h" |
| | | #include "HmTab.h" |
| | |
| | | |
| | | BOOL CServoApp::InitInstance() |
| | | { |
| | | // 如果一个运行在 Windows XP 上的应用程序清单指定要 |
| | | // TODO: 调用 AfxInitRichEdit2() 以初始化 richedit2 库。\n" // 如果一个运行在 Windows XP 上的应用程序清单指定要 |
| | | // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式, |
| | | //则需要 InitCommonControlsEx()。 否则,将无法创建窗口。 |
| | | INITCOMMONCONTROLSEX InitCtrls; |
| | |
| | | // 注册控件 |
| | | CServoGraph::RegisterWndClass(); |
| | | CVerticalLine::RegisterWndClass(); |
| | | CHorizontalLine::RegisterWndClass(); |
| | | CEqsGraphWnd::RegisterWndClass(); |
| | | CMapPosWnd::RegisterWndClass(); |
| | | CHmTab::RegisterWndClass(); |
| | |
| | | |
| | | // 初始化 GDI+ |
| | | InitGDIPlus(); |
| | | |
| | | |
| | | // 初始化 MFC RichEdit 控件 |
| | | AfxInitRichEdit2(); |
| | | |
| | | |
| | | // 初始化报警管理器 |
| | |
| | | AfxMessageBox(errorMsg, MB_ICONERROR); |
| | | return FALSE; |
| | | } |
| | | AlarmManager::getInstance().insertMockData(); |
| | | |
| | | |
| | | // 初始化SECS运行设置管理库 |
| | | // 初始化搬运记录管理库 |
| | | try { |
| | | if (!SECSRuntimeManager::getInstance().initRuntimeSetting()) { |
| | | AfxMessageBox("初始化SECS运行设置失败!"); |
| | | if (!TransferManager::getInstance().initTransferTable()) { |
| | | AfxMessageBox("初始化搬运记录管理库设置失败!"); |
| | | return FALSE; |
| | | } |
| | | } |
| | | catch (const std::exception& ex) { |
| | | CString errorMsg; |
| | | errorMsg.Format(_T("初始化SECS运行设置失败:%s"), CString(ex.what())); |
| | | errorMsg.Format(_T("初始化搬运记录管理库设置失败:%s"), CString(ex.what())); |
| | | AfxMessageBox(errorMsg, MB_ICONERROR); |
| | | return FALSE; |
| | | } |
| | | |
| | | // 初始化运行日志管理库 |
| | | try { |
| | | if (!SystemLogManager::getInstance().initSystemLogTable()) { |
| | | AfxMessageBox("初始化运行日志管理库失败!"); |
| | | return FALSE; |
| | | } |
| | | } |
| | | catch (const std::exception& ex) { |
| | | CString errorMsg; |
| | | errorMsg.Format(_T("初始化运行日志管理库失败:%s"), CString(ex.what())); |
| | | AfxMessageBox(errorMsg, MB_ICONERROR); |
| | | return FALSE; |
| | | } |
| | | |
| | | // 初始化用户管理库 |
| | | try { |
| | | UserManager& userManager = UserManager::getInstance(); |
| | | #if !defined(_DEBUG) |
| | | userManager.initializeIdleDetection(AfxGetMainWnd()->m_hWnd); |
| | | SetTimer(1, 60000, nullptr); |
| | | #endif |
| | | userManager.loadSession(); |
| | | } |
| | | catch (const std::exception& ex) { |
| | | CString errorMsg; |
| | | errorMsg.Format(_T("初始化用户管理库失败:%s"), CString(ex.what())); |
| | | AfxMessageBox(errorMsg, MB_ICONERROR); |
| | | return FALSE; |
| | | } |
| | | |
| | | // 初始化配方管理库 |
| | | try { |
| | | if (!RecipeManager::getInstance().initRecipeTable()) { |
| | | AfxMessageBox("初始化配方管理库失败!"); |
| | | return FALSE; |
| | | } |
| | | } |
| | | catch (const std::exception& ex) { |
| | | CString errorMsg; |
| | | errorMsg.Format(_T("初始化配方管理库失败:%s"), CString(ex.what())); |
| | | AfxMessageBox(errorMsg, MB_ICONERROR); |
| | | return FALSE; |
| | | } |
| | |
| | | // 销毁报警表 |
| | | AlarmManager::getInstance().termAlarmTable(); |
| | | |
| | | // 销毁SECS运行设置管理库 |
| | | SECSRuntimeManager::getInstance().termRuntimeSetting(); |
| | | // 销毁搬运记录管理库 |
| | | TransferManager::getInstance().termTransferTable(); |
| | | |
| | | // 销毁运行日志 |
| | | SystemLogManager::getInstance().termSystemLogTable(); |
| | | |
| | | // 销毁用户表 |
| | | #if !defined(_DEBUG) |
| | | // 清除 UserManager 的无操作检测 |
| | | UserManager::getInstance().terminateIdleDetection(); |
| | | KillTimer(1); |
| | | #endif |
| | | |
| | | // 销毁配方表 |
| | | RecipeManager::getInstance().termRecipeTable(); |
| | | |
| | | return CWinApp::ExitInstance(); |
| | | } |