QuakeGod
2024-12-24 61deef5cdf96cbfdd6ad45be49e80d597c00ca65
提交 | 用户 | age
61deef 1 
Q 2 // FirmwareTool.cpp: 定义应用程序的类行为。
3 //
4
5 #include "pch.h"
6 #include "framework.h"
7 #include "FirmwareTool.h"
8 #include "FirmwareToolDlg.h"
9
10 #ifdef _DEBUG
11 #define new DEBUG_NEW
12 #endif
13
14 // CFirmwareToolApp
15
16 BEGIN_MESSAGE_MAP(CFirmwareToolApp, CWinApp)
17     ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
18 END_MESSAGE_MAP()
19
20 MHash myCfg1;
21 Logger myLogger1;
22 MHash DeviceList;
23
24
25 // CFirmwareToolApp 构造
26
27 CFirmwareToolApp::CFirmwareToolApp()
28 {
29     // 支持重新启动管理器
30     m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;
31
32     // TODO: 在此处添加构造代码,
33     // 将所有重要的初始化放置在 InitInstance 中
34 }
35
36
37 // 唯一的 CFirmwareToolApp 对象
38
39 CFirmwareToolApp theApp;
40
41
42 // CFirmwareToolApp 初始化
43
44 BOOL CFirmwareToolApp::InitInstance()
45 {
46     // 如果一个运行在 Windows XP 上的应用程序清单指定要
47     // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
48     //则需要 InitCommonControlsEx()。  否则,将无法创建窗口。
49     INITCOMMONCONTROLSEX InitCtrls;
50     InitCtrls.dwSize = sizeof(InitCtrls);
51     // 将它设置为包括所有要在应用程序中使用的
52     // 公共控件类。
53     InitCtrls.dwICC = ICC_WIN95_CLASSES;
54     InitCommonControlsEx(&InitCtrls);
55
56     CWinApp::InitInstance();
57
58
59     AfxEnableControlContainer();
60
61     // 创建 shell 管理器,以防对话框包含
62     // 任何 shell 树视图控件或 shell 列表视图控件。
63     CShellManager *pShellManager = new CShellManager;
64
65     // 激活“Windows Native”视觉管理器,以便在 MFC 控件中启用主题
66     CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));
67
68     // 标准初始化
69     // 如果未使用这些功能并希望减小
70     // 最终可执行文件的大小,则应移除下列
71     // 不需要的特定初始化例程
72     // 更改用于存储设置的注册表项
73     // TODO: 应适当修改该字符串,
74     // 例如修改为公司或组织名
75     SetRegistryKey(_T("应用程序向导生成的本地应用程序"));
76
77     DeviceList.LoadFromFile(_T("./DeviceList.Ini"));
78
79     CFirmwareToolDlg dlg;
80     m_pMainWnd = &dlg;
81     INT_PTR nResponse = dlg.DoModal();
82     if (nResponse == IDOK)
83     {
84         // TODO: 在此放置处理何时用
85         //  “确定”来关闭对话框的代码
86     }
87     else if (nResponse == IDCANCEL)
88     {
89         // TODO: 在此放置处理何时用
90         //  “取消”来关闭对话框的代码
91     }
92     else if (nResponse == -1)
93     {
94         TRACE(traceAppMsg, 0, "警告: 对话框创建失败,应用程序将意外终止。\n");
95         TRACE(traceAppMsg, 0, "警告: 如果您在对话框上使用 MFC 控件,则无法 #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS。\n");
96     }
97
98     // 删除上面创建的 shell 管理器。
99     if (pShellManager != nullptr)
100     {
101         delete pShellManager;
102     }
103
104 #if !defined(_AFXDLL) && !defined(_AFX_NO_MFC_CONTROLS_IN_DIALOGS)
105     ControlBarCleanUp();
106 #endif
107
108     // 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
109     //  而不是启动应用程序的消息泵。
110     return FALSE;
111 }
112
113
114 int SysLog(CString s, int channel)
115 {
116     myLogger1.LogTxt(s, channel);
117     return 1;
118 }
119
120 int DbgLog(CString s, int channel)
121 {
122     myLogger1.LogTxt(s, channel);
123     return 1;
124 }
125
126 int PopupMessage(CString Msg, int channel)
127 {
128     Msg.Trim(_T("\r\n"));
129     SysLog(_T("报警信息: ") + Msg + _T("\r\n"), channel);
130     return 0;
131 }
132
133 void DoEvents()
134 {
135     MSG msg;
136     while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
137     {
138         DispatchMessage(&msg);
139         TranslateMessage(&msg);
140     }
141 }
142
143 int LoadMyConfig()
144 {
145     CString ConfigFilePathName;
146     ConfigFilePathName = _T("./Settings.ini");
147     int j = myCfg1.LoadFromFile(ConfigFilePathName);
148     return j;
149 }
150
151 int SaveMyConfig()
152 {
153     CString ConfigFilePathName;
154     ConfigFilePathName = _T("./Settings.ini");
155     int j = myCfg1.SaveToFile(ConfigFilePathName);
156     return j;
157 }
158
159 CString DeviceTypeToStr(int DeviceTypeVer)
160 {
161     // TODO: 在此处添加实现代码.
162
163     static CString DeviceName;
164     DeviceName.Empty();
165     CString s1, s2;
166     UCHAR DeviceType, DeviceVer;
167     DeviceType = (DeviceTypeVer >> 8) & 0xff;
168     DeviceVer = DeviceTypeVer & 0xff;
169     s1.Format(_T("%02X"), DeviceType);
170
171     if (DeviceList["FAMILY"].Exist(s1))
172     {
173         DeviceName = DeviceList["FAMiLY"][s1];
174         s2.Format(_T("%02X"), DeviceVer);
175         Hash h1 = DeviceList[s1];
176         if (DeviceList[s1].Exist(s2))
177         {
178             DeviceName.Append(_T(", "));
179             DeviceName.Append(DeviceList[s1][s2]);
180         }
181         else
182         {
183             //DeviceName.Append(_T(", "));
184             DeviceName.AppendFormat(_T("(%02X)"), DeviceVer);
185         }
186     }
187     else { DeviceName.Format(_T("Device %02X(%02X)"), DeviceType, DeviceVer); }
188
189     return DeviceName;
190 }
191