From e8a27bb203fe2aff70390a5eca002d7438da9b0f Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期三, 22 十月 2025 14:24:34 +0800
Subject: [PATCH] Merge branch 'clh' into liuyang
---
SourceCode/Bond/SGMeasurement/SGMeasurementDlg.cpp | 60 +++++++++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 49 insertions(+), 11 deletions(-)
diff --git a/SourceCode/Bond/SGMeasurement/SGMeasurementDlg.cpp b/SourceCode/Bond/SGMeasurement/SGMeasurementDlg.cpp
index 6ee6018..ae284a7 100644
--- a/SourceCode/Bond/SGMeasurement/SGMeasurementDlg.cpp
+++ b/SourceCode/Bond/SGMeasurement/SGMeasurementDlg.cpp
@@ -17,6 +17,7 @@
#define DeviceID 0
// 鎵樼洏鍥炬爣 ID 涓庢秷鎭畯
+#define ID_TRAY_OPEN_DIR 2000 // 鎵撳紑鐩綍
#define ID_TRAY_RESTORE 2001 // 鎭㈠绐楀彛
#define ID_TRAY_EXIT 2002 // 閫�鍑虹▼搴�
#define WM_TRAY_ICON_NOTIFY (WM_USER + 1000) // 鎵樼洏鍥炬爣鍥炶皟娑堟伅 ID
@@ -416,19 +417,34 @@
strAppName = strAppName.Left(strAppName.ReverseFind('.'));
HKEY hKey;
- LONG lRet = RegOpenKeyEx(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Windows\\CurrentVersion\\Run"), 0, KEY_WRITE, &hKey);
+ LONG lRet = RegOpenKeyEx(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Windows\\CurrentVersion\\Run"), 0, KEY_READ | KEY_WRITE, &hKey);
if (lRet != ERROR_SUCCESS) {
return false;
}
+ DWORD dwType = 0;
+ TCHAR szValue[MAX_PATH] = { 0 };
+ DWORD dwSize = sizeof(szValue);
+ lRet = RegQueryValueEx(hKey, strAppName, 0, &dwType, (LPBYTE)szValue, &dwSize);
+
if (bEnable) {
- // 璁剧疆鑷惎
- lRet = RegSetValueEx(hKey, strAppName, 0, REG_SZ, (BYTE*)(LPCTSTR)strAppPath, (strAppPath.GetLength() + 1) * sizeof(TCHAR));
+ if (lRet != ERROR_SUCCESS || _tcsicmp(szValue, strAppPath) != 0) {
+ // 璁剧疆鑷惎
+ lRet = RegSetValueEx(hKey, strAppName, 0, REG_SZ, (BYTE*)(LPCTSTR)strAppPath, (strAppPath.GetLength() + 1) * sizeof(TCHAR));
+ }
+ else {
+ lRet = ERROR_SUCCESS;
+ }
}
else {
- // 鍙栨秷鑷惎
- lRet = RegDeleteValue(hKey, strAppName);
+ if (lRet == ERROR_SUCCESS) {
+ // 鍙栨秷鑷惎
+ lRet = RegDeleteValue(hKey, strAppName);
+ }
+ else {
+ lRet = ERROR_SUCCESS;
+ }
}
RegCloseKey(hKey);
@@ -947,6 +963,7 @@
ON_WM_DRAWITEM()
ON_WM_CLOSE()
ON_MESSAGE(WM_TRAY_ICON_NOTIFY, &CSGMeasurementDlg::OnTrayIconClick)
+ ON_COMMAND(ID_TRAY_OPEN_DIR, &CSGMeasurementDlg::OnTrayOpenDir)
ON_COMMAND(ID_TRAY_RESTORE, &CSGMeasurementDlg::OnTrayRestore)
ON_COMMAND(ID_TRAY_EXIT, &CSGMeasurementDlg::OnTrayExit)
ON_BN_CLICKED(IDC_BUTTON_CONNECT, &CSGMeasurementDlg::OnBnClickedButtonConnect)
@@ -1206,6 +1223,10 @@
// 鍥炬爣
HICON hIcon = nullptr;
+ if (id == ID_TRAY_OPEN_DIR) {
+ hIcon = AfxGetApp()->LoadIcon(IDI_ICON_OPEN_DIR);
+ }
+
if (id == ID_TRAY_RESTORE) {
hIcon = AfxGetApp()->LoadIcon(IDI_ICON_RESTORE);
}
@@ -1220,6 +1241,10 @@
// 鏂囨湰
CString str;
+ if (id == ID_TRAY_OPEN_DIR) {
+ str = _T("鎵撳紑鐩綍");
+ }
+
if (id == ID_TRAY_RESTORE) {
str = _T("鎭㈠鐣岄潰");
}
@@ -1263,22 +1288,23 @@
// 鍙抽敭鐐瑰嚮寮瑰嚭鑿滃崟
CMenu menu;
menu.CreatePopupMenu();
+ menu.AppendMenu(MF_OWNERDRAW, ID_TRAY_OPEN_DIR, (LPCTSTR)ID_TRAY_OPEN_DIR);
menu.AppendMenu(MF_OWNERDRAW, ID_TRAY_RESTORE, (LPCTSTR)ID_TRAY_RESTORE);
menu.AppendMenu(MF_OWNERDRAW, ID_TRAY_EXIT, (LPCTSTR)ID_TRAY_EXIT);
-
- // 鍔犺浇鍥炬爣
- HICON hIconRestore = (HICON)::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON_RESTORE), IMAGE_ICON, 16, 16, LR_SHARED);
- HICON hIconExit = (HICON)::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON_EXIT), IMAGE_ICON, 16, 16, LR_SHARED);
// 璁剧疆鍥炬爣鍒拌彍鍗曢」
MENUITEMINFO mii = { sizeof(MENUITEMINFO) };
mii.fMask = MIIM_BITMAP;
- // 鎭㈠鑿滃崟椤瑰浘鏍�
+ // 鎵撳紑鐩綍鑿滃崟椤瑰浘鏍�
+ mii.hbmpItem = HBMMENU_CALLBACK;
+ menu.SetMenuItemInfo(ID_TRAY_OPEN_DIR, &mii);
+
+ // 鎭㈠绐楀彛鑿滃崟椤瑰浘鏍�
mii.hbmpItem = HBMMENU_CALLBACK;
menu.SetMenuItemInfo(ID_TRAY_RESTORE, &mii);
- // 閫�鍑鸿彍鍗曢」鍥炬爣
+ // 閫�鍑虹▼搴忚彍鍗曢」鍥炬爣
mii.hbmpItem = HBMMENU_CALLBACK;
menu.SetMenuItemInfo(ID_TRAY_EXIT, &mii);
@@ -1292,6 +1318,18 @@
return 0;
}
+void CSGMeasurementDlg::OnTrayOpenDir()
+{
+ CString strDir = GetAppDirectory();
+ if (PathFileExists(strDir)) {
+ ShellExecute(NULL, _T("open"), strDir, NULL, NULL, SW_SHOWDEFAULT);
+ AppendLogLineRichStyled(_T("宸叉墦寮�绋嬪簭鐩綍"), LOG_COLOR_SUCCESS);
+ }
+ else {
+ AppendLogLineRichStyled(_T("鐩綍涓嶅瓨鍦紝鏃犳硶鎵撳紑"), LOG_COLOR_ERROR);
+ }
+}
+
void CSGMeasurementDlg::OnTrayRestore()
{
ShowWindow(SW_SHOW); // 鎭㈠绐楀彛
--
Gitblit v1.9.3