diff --git a/cfg-tools/apps/scanner-check/CDlgItemMgr.cpp b/cfg-tools/apps/scanner-check/CDlgItemMgr.cpp index 212a7dc..10ed44d 100644 --- a/cfg-tools/apps/scanner-check/CDlgItemMgr.cpp +++ b/cfg-tools/apps/scanner-check/CDlgItemMgr.cpp @@ -5,6 +5,7 @@ #include "scanner-check.h" #include "CDlgItemMgr.h" #include "afxdialogex.h" +#include "CDlgInput.h" #include #include @@ -56,6 +57,7 @@ BOOL CDlgItemMgr::OnInitDialog() list_.InsertColumn(list_.GetHeaderCtrl()->GetItemCount(), TEXT("\u540D\u79F0"), 0, 102); list_.InsertColumn(list_.GetHeaderCtrl()->GetItemCount(), TEXT("\u5FC5\u987B\u8054\u673A\u6D4B\u8BD5"), 0, 87); list_.InsertColumn(list_.GetHeaderCtrl()->GetItemCount(), TEXT("\u4E0D\u901A\u8FC7\u5219\u505C\u6B62"), 0, 87); + list_.InsertColumn(list_.GetHeaderCtrl()->GetItemCount(), TEXT("\u63CF\u8FF0"), 0, 120); list_.SetExtendedStyle((list_.GetExStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES) & (~LVS_EX_CHECKBOXES)); list_.ModifyStyle(0, LVS_SINGLESEL); load_stored_config(); @@ -76,14 +78,17 @@ END_MESSAGE_MAP() void CDlgItemMgr::OnBnClickedButtonAdd() { // TODO: 在此添加控件通知处理程序代码 - wchar_t text[128] = { 0 }, name[128] = { 0 }; + wchar_t text[128] = { 0 }, name[128] = { 0 }, desc[128] = { 0 }; bool online = is_checked(this, IDC_CHECK_ONLINE), fatal = is_checked(this, IDC_CHECK_FATAL); int ind = -1; if (::GetWindowTextW(GetDlgItem(IDC_EDIT_TITLE)->m_hWnd, text, _countof(text) - 1) == 0 || ::GetWindowTextW(GetDlgItem(IDC_EDIT_NAME)->m_hWnd, name, _countof(name) - 1) == 0) return; - + if (::GetWindowTextW(GetDlgItem(IDC_EDIT_DESC)->m_hWnd, name, _countof(name) - 1) == 0) + { + wcscpy(desc, text); + } for (int i = 0; i < list_.GetItemCount(); ++i) { wchar_t val[128] = { 0 }; @@ -106,6 +111,7 @@ void CDlgItemMgr::OnBnClickedButtonAdd() list_.SetItemText(ind, 2, text); list_.SetItemText(ind, 3, online ? L"true" : L"false"); list_.SetItemText(ind, 4, fatal ? L"true" : L"false"); + list_.SetItemText(ind, 5, desc); list_.SetItemState(ind, LVNI_FOCUSED | LVIS_SELECTED, LVNI_FOCUSED | LVIS_SELECTED); item_changed(); } @@ -122,7 +128,7 @@ void CDlgItemMgr::OnNMDblclkList1(NMHDR* pNMHDR, LRESULT* pResult) if (r.left != -1) { std::vector width; - int ind = r.left; + int ind = r.left, hpos = list_.GetScrollPos(SB_HORZ); for (int i = 0; i < list_.GetHeaderCtrl()->GetItemCount(); ++i) { @@ -130,6 +136,7 @@ void CDlgItemMgr::OnNMDblclkList1(NMHDR* pNMHDR, LRESULT* pResult) list_.GetHeaderCtrl()->GetItemRect(i, &r); width.push_back(r.right - r.left); } + pos.x += hpos; for (int i = 0; i < width.size(); ++i) { if (pos.x <= width[i]) @@ -152,7 +159,7 @@ void CDlgItemMgr::OnNMDblclkList1(NMHDR* pNMHDR, LRESULT* pResult) } } } - else + else if(i < 5) { list_.GetItemText(ind, i, text, _countof(text) - 1); if (wcscmp(text, L"true")) @@ -160,6 +167,25 @@ void CDlgItemMgr::OnNMDblclkList1(NMHDR* pNMHDR, LRESULT* pResult) else list_.SetItemText(ind, i, L"false"); } + else + { + CDlgInput input; + wchar_t val[128] = { 0 }; + std::wstring def(L""); + + list_.GetItemText(ind, 2, val, _countof(val) - 1); + def = val; + input.set_title((std::wstring(L"\u4FEE\u6539 ") + val + L" \u63CF\u8FF0").c_str()); + list_.GetItemText(ind, 5, val, _countof(val) - 1); + input.val_ = val; + if (input.DoModal() == IDOK) + { + if(input.val_.empty()) + list_.SetItemText(ind, 5, def.c_str()); + else + list_.SetItemText(ind, 5, input.val_.c_str()); + } + } break; } @@ -199,6 +225,8 @@ void CDlgItemMgr::get_item(int ind, page_config::ITEM* item) item->man = wcscmp(text, L"false") == 0; list_.GetItemText(ind, 4, text, _countof(text) - 1); item->fatal = wcscmp(text, L"true") == 0; + list_.GetItemText(ind, 5, text, _countof(text) - 1); + item->desc = text; } void CDlgItemMgr::load_from_file(const wchar_t* file) { @@ -207,7 +235,8 @@ void CDlgItemMgr::load_from_file(const wchar_t* file) *n = sn + 40, *t = n + 40, *m = t + 40, - *f = m + 40; + *f = m + 40, + *d = f + 40; size_t pos = 0; std::string bom(""); std::wstring cont(L""); @@ -218,7 +247,7 @@ void CDlgItemMgr::load_from_file(const wchar_t* file) cont += L"\r\n"; while ((pos = cont.find(L"\r\n")) != std::wstring::npos) { - int cnt = swscanf(cont.substr(0, pos).c_str(), L"%s %s %s %s", n, t, m, f); + int cnt = swscanf(cont.substr(0, pos).c_str(), L"%s %s %s %s %s", n, t, m, f, d); if (cnt >= 2) { bool man = false, fatal = true; @@ -233,7 +262,12 @@ void CDlgItemMgr::load_from_file(const wchar_t* file) list_.SetItemText(cnt, 2, t); list_.SetItemText(cnt, 3, man ? L"false" : L"true"); list_.SetItemText(cnt, 4, f ? L"true" : L"false"); + if(*d) + list_.SetItemText(cnt, 5, d); + else + list_.SetItemText(cnt, 5, t); } + memset(path, 0, sizeof(path)); cont.erase(0, pos + 2); } @@ -256,7 +290,8 @@ void CDlgItemMgr::item_changed(void) { text += items[i].name + L" " + items[i].title + L" "; text += items[i].man ? L"false " : L"true "; - text += items[i].fatal ? L"true\r\n" : L"false\r\n"; + text += items[i].fatal ? L"true " : L"false "; + text += items[i].desc + L"\r\n"; } coding_util::bom::from_unicode(text.c_str(), text.length() * 2, got_str, &bom); file_util::save_2_file(bom.c_str(), bom.length(), get_stored_config_file().c_str()); diff --git a/cfg-tools/apps/scanner-check/CDlgMgr.cpp b/cfg-tools/apps/scanner-check/CDlgMgr.cpp index 1877908..204040e 100644 --- a/cfg-tools/apps/scanner-check/CDlgMgr.cpp +++ b/cfg-tools/apps/scanner-check/CDlgMgr.cpp @@ -330,7 +330,7 @@ void CDlgMgr::OnNMDblclkList1(NMHDR* pNMHDR, LRESULT* pResult) if (r.left != -1) { std::vector width; - int ind = r.left; + int ind = r.left, hpos = list_.GetScrollPos(SB_HORZ); for (int i = 0; i < list_.GetHeaderCtrl()->GetItemCount(); ++i) { @@ -338,6 +338,7 @@ void CDlgMgr::OnNMDblclkList1(NMHDR* pNMHDR, LRESULT* pResult) list_.GetHeaderCtrl()->GetItemRect(i, &r); width.push_back(r.right - r.left); } + pos.x += hpos; for (int i = 0; i < width.size(); ++i) { if (pos.x <= width[i]) @@ -512,6 +513,7 @@ std::wstring CDlgMgr::export_config(bool *ok, bool used_in_code, int code_ver) child->set_value(L"man", wcscmp(text, L"false") == 0); list_.GetItemText(i, 3, text, _countof(text) - 1); child->set_value(L"err-level", wcscmp(text, L"true") == 0 ? L"fatal" : L"warning"); + child->set_value(L"desc", item.desc.c_str()); } else { diff --git a/cfg-tools/apps/scanner-check/page.h b/cfg-tools/apps/scanner-check/page.h index 18d82c4..b092eed 100644 --- a/cfg-tools/apps/scanner-check/page.h +++ b/cfg-tools/apps/scanner-check/page.h @@ -24,6 +24,7 @@ public: { std::wstring name; std::wstring title; + std::wstring desc; bool man; bool fatal; diff --git a/cfg-tools/apps/scanner-check/resource.h b/cfg-tools/apps/scanner-check/resource.h index cc68c5e..10e7721 100644 --- a/cfg-tools/apps/scanner-check/resource.h +++ b/cfg-tools/apps/scanner-check/resource.h @@ -9,6 +9,7 @@ #define IDD_MANAGER 130 #define IDD_TEST_ITEM 131 #define IDR_MENU1 133 +#define IDD_INPUT 134 #define IDC_TAB1 1000 #define IDC_STATIC_RECT 1001 #define IDC_EDIT_VID_SRC 1002 @@ -33,6 +34,8 @@ #define IDC_EDIT_VER 1018 #define IDC_EDIT_NAME 1019 #define IDC_EDIT_TITLE 1020 +#define IDC_EDIT1 1020 +#define IDC_EDIT_DESC 1021 #define ID_LIST_32771 32771 #define ID_LIST_PASTE_CLIPBOARD 32772 #define ID_LIST_32773 32773 @@ -42,9 +45,9 @@ // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 134 +#define _APS_NEXT_RESOURCE_VALUE 136 #define _APS_NEXT_COMMAND_VALUE 32775 -#define _APS_NEXT_CONTROL_VALUE 1020 +#define _APS_NEXT_CONTROL_VALUE 1021 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/cfg-tools/apps/scanner-check/scanner-check.vcxproj b/cfg-tools/apps/scanner-check/scanner-check.vcxproj index 55a0730..298d9b5 100644 --- a/cfg-tools/apps/scanner-check/scanner-check.vcxproj +++ b/cfg-tools/apps/scanner-check/scanner-check.vcxproj @@ -189,6 +189,7 @@ + @@ -200,6 +201,7 @@ + diff --git a/cfg-tools/apps/scanner-check/scanner-check.vcxproj.filters b/cfg-tools/apps/scanner-check/scanner-check.vcxproj.filters index c2ea48b..0db740f 100644 --- a/cfg-tools/apps/scanner-check/scanner-check.vcxproj.filters +++ b/cfg-tools/apps/scanner-check/scanner-check.vcxproj.filters @@ -42,6 +42,9 @@ 头文件 + + 头文件 + @@ -59,6 +62,9 @@ 源文件 + + 源文件 + diff --git a/cfg-tools/apps/scanner-check/scannercheck.rc b/cfg-tools/apps/scanner-check/scannercheck.rc index 2e68ec5..0fe3a16 100644 Binary files a/cfg-tools/apps/scanner-check/scannercheck.rc and b/cfg-tools/apps/scanner-check/scannercheck.rc differ diff --git a/cfg-tools/solution/Release/scanner-check.exe b/cfg-tools/solution/Release/scanner-check.exe index 17fbd92..9605584 100644 Binary files a/cfg-tools/solution/Release/scanner-check.exe and b/cfg-tools/solution/Release/scanner-check.exe differ