From 33a935812100b232168466de9951206877109dc0 Mon Sep 17 00:00:00 2001 From: Soul Dark <1012179378@qq.com> Date: Mon, 6 Nov 2017 12:19:45 +0800 Subject: [PATCH] Update to 1.1.0 --- NetSpeed/NetSpeed/Dialog/Dialog.h | 34 +++ NetSpeed/NetSpeed/DialogMain/DialogMain.cpp | 115 ---------- NetSpeed/NetSpeed/DialogMain/DialogMain.h | 7 - NetSpeed/NetSpeed/Dialog_Main/Dialog_Main.cpp | 164 +++++++++++++++ NetSpeed/NetSpeed/Dialog_Main/Dialog_Main.h | 21 ++ .../Dialog_Setting/Dialog_Setting.cpp | 178 ++++++++++++++++ .../NetSpeed/Dialog_Setting/Dialog_Setting.h | 20 ++ NetSpeed/NetSpeed/Main.cpp | 22 +- NetSpeed/NetSpeed/Main.h | 5 +- NetSpeed/NetSpeed/Menu/MENUITEM.h | 8 - NetSpeed/NetSpeed/Menu/Menu.cpp | 117 ++++++----- NetSpeed/NetSpeed/Menu/Menu.h | 18 +- NetSpeed/NetSpeed/Net/Net.cpp | 112 +++++----- NetSpeed/NetSpeed/Net/Net.h | 21 +- NetSpeed/NetSpeed/NetSpeed.vcxproj | 18 +- NetSpeed/NetSpeed/NetSpeed.vcxproj.filters | 49 +++-- NetSpeed/NetSpeed/NotifyIcon/NotifyIcon.cpp | 30 +-- NetSpeed/NetSpeed/NotifyIcon/NotifyIcon.h | 5 +- NetSpeed/NetSpeed/Registry/REGISTRYPATH.h | 4 - NetSpeed/NetSpeed/Registry/REGISTRYVALUE.h | 4 - NetSpeed/NetSpeed/Registry/Registry.cpp | 197 ++++++++++-------- NetSpeed/NetSpeed/Registry/Registry.h | 27 ++- NetSpeed/NetSpeed/Resource/NetSpeed.rc | Bin 7290 -> 9422 bytes NetSpeed/NetSpeed/Resource/RCa09792 | Bin 0 -> 7448 bytes NetSpeed/NetSpeed/Resource/RCa13076 | Bin 0 -> 9460 bytes NetSpeed/NetSpeed/Resource/RCb13076 | Bin 0 -> 8710 bytes NetSpeed/NetSpeed/Resource/WM_USER.h | 8 +- NetSpeed/NetSpeed/Resource/resource.h | 25 ++- NetSpeed/NetSpeed/Text/Text.cpp | 113 ++++++++++ NetSpeed/NetSpeed/Text/Text.h | 54 +++++ 30 files changed, 959 insertions(+), 417 deletions(-) create mode 100644 NetSpeed/NetSpeed/Dialog/Dialog.h delete mode 100644 NetSpeed/NetSpeed/DialogMain/DialogMain.cpp delete mode 100644 NetSpeed/NetSpeed/DialogMain/DialogMain.h create mode 100644 NetSpeed/NetSpeed/Dialog_Main/Dialog_Main.cpp create mode 100644 NetSpeed/NetSpeed/Dialog_Main/Dialog_Main.h create mode 100644 NetSpeed/NetSpeed/Dialog_Setting/Dialog_Setting.cpp create mode 100644 NetSpeed/NetSpeed/Dialog_Setting/Dialog_Setting.h delete mode 100644 NetSpeed/NetSpeed/Menu/MENUITEM.h delete mode 100644 NetSpeed/NetSpeed/Registry/REGISTRYPATH.h delete mode 100644 NetSpeed/NetSpeed/Registry/REGISTRYVALUE.h create mode 100644 NetSpeed/NetSpeed/Resource/RCa09792 create mode 100644 NetSpeed/NetSpeed/Resource/RCa13076 create mode 100644 NetSpeed/NetSpeed/Resource/RCb13076 create mode 100644 NetSpeed/NetSpeed/Text/Text.cpp create mode 100644 NetSpeed/NetSpeed/Text/Text.h diff --git a/NetSpeed/NetSpeed/Dialog/Dialog.h b/NetSpeed/NetSpeed/Dialog/Dialog.h new file mode 100644 index 0000000..5548411 --- /dev/null +++ b/NetSpeed/NetSpeed/Dialog/Dialog.h @@ -0,0 +1,34 @@ +#pragma once +#include +template +class Dialog; + +template +class Dialog { +public: + static VOID Destroy(); + static HWND Handle_Get(); + static VOID Handle_Set(HWND Handle); +private: + static HWND Handle_; +}; + +template +HWND Dialog::Handle_ = NULL; + +//public: + +template +VOID Dialog::Destroy() { + DestroyWindow(Handle_); +} + +template +HWND Dialog::Handle_Get() { + return Handle_; +} + +template +VOID Dialog::Handle_Set(HWND Handle) { + Handle_ = Handle; +} diff --git a/NetSpeed/NetSpeed/DialogMain/DialogMain.cpp b/NetSpeed/NetSpeed/DialogMain/DialogMain.cpp deleted file mode 100644 index 756ef34..0000000 --- a/NetSpeed/NetSpeed/DialogMain/DialogMain.cpp +++ /dev/null @@ -1,115 +0,0 @@ -#include "DialogMain.h" -#include -#include "../Menu/Menu.h" -#include "../Net/Net.h" -#include "../NotifyIcon/NotifyIcon.h" -#include "../Registry/Registry.h" -#include "../Resource/resource.h" - -HBRUSH color_background; -HWND dialog_main; - -INT_PTR WINAPI DialogMainProcess(HWND dialog, UINT message, WPARAM wparam, LPARAM lparam) { - dialog_main = dialog; - BOOL handle_result = TRUE; - switch (message) { - case WM_CTLCOLORDLG: - { - return (INT_PTR)color_background; - } - case WM_CTLCOLORSTATIC: - { - SetBkMode((HDC)wparam, TRANSPARENT); - SetTextColor((HDC)wparam, RGB(255, 255, 255)); - return (INT_PTR)color_background; - } - case WM_COMMAND: - { - switch (LOWORD(wparam)) { - case WM_MENUCLEAN: - { - Menu::Item_Clean(); - break; - } - case WM_MENUEXIT: - { - Menu::Item_Exit(); - break; - } - case WM_MENUSHOW: - { - Menu::Item_Show(); - break; - } - case WM_MENUSTARTUP: - { - Menu::Item_Startup(); - break; - } - default: - { - handle_result = FALSE; - break; - } - } - break; - } - case WM_EXITSIZEMOVE: - { - Registry::Position_Create(); - break; - } - case WM_INITDIALOG: - { - color_background= CreateSolidBrush(RGB(0, 0, 0)); - POINT dialog_position= Registry::Position_Get(); - if (dialog_position.x != -1 && dialog_position.y != -1) { - SetWindowPos(dialog_main, NULL, dialog_position.x, dialog_position.y, 0, 0, SWP_NOSIZE | SWP_NOZORDER); - } - SetWindowLongW( - dialog_main, - GWL_EXSTYLE, - GetWindowLongW(dialog_main, GWL_EXSTYLE) | WS_EX_LAYERED | WS_EX_TOOLWINDOW - ); - SetLayeredWindowAttributes(dialog_main, 0, (255 * 50) / 100, LWA_ALPHA); - Net::RefreshNetSpeedStart(); - break; - } - case WM_LBUTTONDOWN: - { - SendMessageW(dialog_main, WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(LOWORD(lparam), HIWORD(lparam))); - break; - } - case WM_NCPAINT: - { - NotifyIcon::Init(); - break; - } - case WM_NOTIFYICON: - { - switch (lparam) { - case WM_RBUTTONUP: - { - Menu::Pop(); - return TRUE; - } - default: - { - handle_result = FALSE; - break; - } - } - break; - } - case WM_RBUTTONUP: - { - Menu::Pop(); - break; - } - default: - { - handle_result = FALSE; - } - } - return handle_result; -} diff --git a/NetSpeed/NetSpeed/DialogMain/DialogMain.h b/NetSpeed/NetSpeed/DialogMain/DialogMain.h deleted file mode 100644 index 48f154c..0000000 --- a/NetSpeed/NetSpeed/DialogMain/DialogMain.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once -#include - -extern HBRUSH color_background; -extern HWND dialog_main; - -INT_PTR WINAPI DialogMainProcess(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); diff --git a/NetSpeed/NetSpeed/Dialog_Main/Dialog_Main.cpp b/NetSpeed/NetSpeed/Dialog_Main/Dialog_Main.cpp new file mode 100644 index 0000000..9e4e37e --- /dev/null +++ b/NetSpeed/NetSpeed/Dialog_Main/Dialog_Main.cpp @@ -0,0 +1,164 @@ +#include "Dialog_Main.h" +#include +#include "../Dialog_Setting/Dialog_Setting.h" +#include "../Menu/Menu.h" +#include "../Net/Net.h" +#include "../NotifyIcon/NotifyIcon.h" +#include "../Registry/Registry.h" +#include "../Resource/resource.h" + +HBRUSH Dialog_Main::Handle_Color_Background_; +BOOL Dialog_Main::Show_; + +//public: + +INT_PTR Dialog_Main::Process(HWND Handle_Dialog, UINT Message_Dialog, WPARAM Param_WORD, LPARAM Param_LONG) { + Handle_Set(Handle_Dialog); + BOOL Result_Process = TRUE; + switch (Message_Dialog) { + case WM_COMMAND: + { + switch (LOWORD(Param_WORD)) { + case WM_MENU_EXIT: + { + Menu::Item_Exit(); + break; + } + case WM_MENU_SETTING: + { + Menu::Item_Setting(); + break; + } + case WM_MENU_SHOW: + { + Menu::Item_Show(); + break; + } + case WM_MENU_STARTUP: + { + Menu::Item_Startup(); + break; + } + default: + { + Result_Process = FALSE; + break; + } + } + break; + } + case WM_CTLCOLORDLG: + { + return (INT_PTR)Handle_Color_Background_; + } + case WM_CTLCOLORSTATIC: + { + SetBkMode((HDC)Param_WORD, TRANSPARENT); + SetTextColor((HDC)Param_WORD, RGB(255, 255, 255)); + return (INT_PTR)Handle_Color_Background_; + } + case WM_DESTROY: + { + NotifyIcon::Destroy(); + return 0; + } + case WM_EXITSIZEMOVE: + { + Registry::Position_Save(); + break; + } + case WM_INITDIALOG: + { + Handle_Color_Background_ = CreateSolidBrush(RGB(0, 0, 0)); + POINT Position = Registry::Position_Get(); + Position_Set(Position); + SetWindowLongW( + Handle_Get(), + GWL_EXSTYLE, + GetWindowLongW(Handle_Get(), GWL_EXSTYLE) | WS_EX_LAYERED | WS_EX_TOOLWINDOW + ); + INT Transparency = Registry::Transparency_Get(); + Transparency_Set(Transparency); + Net::Refresh_Start(); + break; + } + case WM_LBUTTONDOWN: + { + SendMessageW(Handle_Get(), WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(LOWORD(Param_LONG), HIWORD(Param_LONG))); + break; + } + case WM_NCPAINT: + { + NotifyIcon::Init(); + break; + } + case WM_NOTIFYICON: + { + switch (Param_LONG) { + case WM_RBUTTONUP: + { + Menu::Pop(); + return TRUE; + } + default: + { + Result_Process = FALSE; + break; + } + } + break; + } + case WM_RBUTTONUP: + { + Menu::Pop(); + break; + } + default: + { + Result_Process = FALSE; + break; + } + } + return Result_Process; +} + +POINT Dialog_Main::Position_Get() { + RECT Position_RECT; + GetWindowRect(Dialog_Main::Handle_Get(), &Position_RECT); + MapWindowPoints(HWND_DESKTOP, GetParent(Dialog_Main::Handle_Get()), (LPPOINT)&Position_RECT, sizeof(RECT) / sizeof(POINT)); + POINT Position_POINT; + Position_POINT.x = Position_RECT.left; + Position_POINT.y = Position_RECT.top; + return Position_POINT; +} + +VOID Dialog_Main::Position_Set(POINT Position) { + SetWindowPos(Handle_Get(), NULL, Position.x, Position.y, 0, 0, SWP_NOSIZE | SWP_NOZORDER); +} + +BOOL Dialog_Main::Show_Get() { + return IsWindowVisible(Handle_Get()); +} + +VOID Dialog_Main::Show_Set(BOOL Show) { + if (Show == TRUE) { + ShowWindow(Dialog_Main::Handle_Get(), SW_SHOW); + } + else { + ShowWindow(Dialog_Main::Handle_Get(), SW_HIDE); + } + if (Dialog_Setting::Handle_Get() != NULL) { + Dialog_Setting::Refresh_Check_Setting_Show(); + } +} + +INT Dialog_Main::Transparency_Get() { + BYTE Transparency_BYTE; + GetLayeredWindowAttributes(Dialog_Main::Handle_Get(), NULL, &Transparency_BYTE, NULL); + INT Transparency_INT = Transparency_BYTE * 100.0 / 255.0 + 0.5; + return Transparency_INT; +} + +VOID Dialog_Main::Transparency_Set(INT Transparency) { + SetLayeredWindowAttributes(Handle_Get(), 0, (255.0* Transparency) / 100.0 + 0.5, LWA_ALPHA); +} diff --git a/NetSpeed/NetSpeed/Dialog_Main/Dialog_Main.h b/NetSpeed/NetSpeed/Dialog_Main/Dialog_Main.h new file mode 100644 index 0000000..af414a5 --- /dev/null +++ b/NetSpeed/NetSpeed/Dialog_Main/Dialog_Main.h @@ -0,0 +1,21 @@ +#pragma once +#include +class Dialog_Main; +#include "../Dialog/Dialog.h" + +class Dialog_Main :public Dialog { +public: + static INT_PTR WINAPI Process(HWND Handle_Dialog, UINT Message_Dialog, WPARAM Param_WORD, LPARAM Param_LONG); + static POINT Position_Get(); + static VOID Position_Set(POINT Position); + static BOOL Show_Get(); + static VOID Show_Set(BOOL Show); + static INT Transparency_Get(); + static VOID Transparency_Set(INT Transparency); +private: + static HBRUSH Handle_Color_Background_; + static BOOL Show_; +}; + + + diff --git a/NetSpeed/NetSpeed/Dialog_Setting/Dialog_Setting.cpp b/NetSpeed/NetSpeed/Dialog_Setting/Dialog_Setting.cpp new file mode 100644 index 0000000..79b6dc8 --- /dev/null +++ b/NetSpeed/NetSpeed/Dialog_Setting/Dialog_Setting.cpp @@ -0,0 +1,178 @@ +#include "Dialog_Setting.h" +#include +#include +#include "../Dialog_Main/Dialog_Main.h" +#include "../Registry/Registry.h" +#include "../Resource/resource.h" +#include "../Text/Text.h" + +//public: + +INT_PTR Dialog_Setting::Process(HWND Handle_Dialog, UINT Message_Dialog, WPARAM Param_WORD, LPARAM Param_LONG) { + Handle_Set(Handle_Dialog); + BOOL Result_Process = TRUE; + switch (Message_Dialog) { + case WM_CLOSE: + { + DestroyWindow(Handle_Dialog); + return 0; + } + case WM_COMMAND: + { + switch (LOWORD(Param_WORD)) { + case ID_Button_Setting_Clean: + { + Registry::Clean(); + break; + } + case ID_Button_Setting_CleanAndExit: + { + Registry::Clean(); + Destroy(); + DestroyWindow(Handle_Dialog); + break; + } + case ID_Combo_Setting_Language: + { + switch (HIWORD(Param_WORD)) { + case CBN_SELCHANGE: + { + HWND Handle_Combo_Language = GetDlgItem(Handle_Get(), ID_Combo_Setting_Language); + INT Languae = ComboBox_GetCurSel(Handle_Combo_Language); + Text::Language_Set(Languae); + Refresh_All(); + break; + } + default: + { + Result_Process = FALSE; + } + } + break; + } + case ID_Check_Setting_Show: + { + HWND Handle_Check_Show = GetDlgItem(Handle_Get(), ID_Check_Setting_Show); + BOOL Show = Button_GetCheck(Handle_Check_Show); + Dialog_Main::Show_Set(Show); + break; + } + case ID_Check_Setting_Startup: + { + HWND Handle_Check_Startup = GetDlgItem(Handle_Get(), ID_Check_Setting_Startup); + BOOL Startup = Button_GetCheck(Handle_Check_Startup); + Registry::Startup_Set(Startup); + break; + } + default: + { + Result_Process = FALSE; + } + } + break; + } + case WM_HSCROLL: + { + HWND Handle_Slider_Transparency = GetDlgItem(Handle_Dialog, ID_Slider_Transparency); + if (Param_LONG == (LPARAM)Handle_Slider_Transparency) { + INT Position_Slider = HIWORD(Param_WORD); + switch (LOWORD(Param_WORD)) { + case TB_THUMBTRACK: + { + Dialog_Main::Transparency_Set(Position_Slider); + Refresh_Static_Transparency(); + break; + } + case TB_THUMBPOSITION: + { + Registry::Transparency_Save(); + break; + } + default: + { + Result_Process = FALSE; + } + } + } + break; + } + case WM_INITDIALOG: + { + Refresh_All(); + break; + } + case WM_NCDESTROY: + { + Handle_Set(NULL); + return TRUE; + } + default: + { + Result_Process = FALSE; + } + } + return Result_Process; +} + +VOID Dialog_Setting::Refresh_All() { + Refresh_Button_Clean(); + Refresh_Button_CleanAndExit(); + Refresh_Caption(); + Refresh_Check_Setting_Show(); + Refresh_Check_Setting_Startup(); + Refresh_Combo_Setting_Language(); + Refresh_Slider_Transparency(); + Refresh_Static_Language(); + Refresh_Static_Transparency(); +} + +VOID Dialog_Setting::Refresh_Button_Clean() { + SetDlgItemTextW(Handle_Get(), ID_Button_Setting_Clean, Text::Button_Setting_Clean().c_str()); +} + +VOID Dialog_Setting::Refresh_Button_CleanAndExit() { + SetDlgItemTextW(Handle_Get(), ID_Button_Setting_CleanAndExit, Text::Button_Setting_CleanAndExit().c_str()); +} + +VOID Dialog_Setting::Refresh_Caption() { + SetWindowTextW(Handle_Get(), Text::Dialog_Setting_Caption().c_str()); +} + +VOID Dialog_Setting::Refresh_Check_Setting_Show() { + BOOL Show = Dialog_Main::Show_Get(); + HWND Handle_Check_Show = GetDlgItem(Handle_Get(), ID_Check_Setting_Show); + Button_SetCheck(Handle_Check_Show, Show); + SetDlgItemTextW(Handle_Get(), ID_Check_Setting_Show, Text::Menu_Item_Show().c_str()); +} + +VOID Dialog_Setting::Refresh_Check_Setting_Startup() { + BOOL Startup = Registry::Startup_Get(); + HWND Handle_Check_Startup = GetDlgItem(Handle_Get(), ID_Check_Setting_Startup); + Button_SetCheck(Handle_Check_Startup, Startup); + SetDlgItemTextW(Handle_Get(), ID_Check_Setting_Startup, Text::Menu_Item_Startup().c_str()); +} + +VOID Dialog_Setting::Refresh_Combo_Setting_Language() { + HWND Handle_Combo_Language = GetDlgItem(Handle_Get(), ID_Combo_Setting_Language); + ComboBox_ResetContent(Handle_Combo_Language); + for (INT Index = 0; Index <= Text::Language::Total - 1; Index++) { + ComboBox_AddString(Handle_Combo_Language, Text::Name(Index).c_str()); + } + ComboBox_SetCurSel(Handle_Combo_Language, Text::Language_Get()); +} + +VOID Dialog_Setting::Refresh_Slider_Transparency() { + HWND Handle_Slider_Transparency = GetDlgItem(Handle_Get(), ID_Slider_Transparency); + INT Transparency = Registry::Transparency_Get(); + SendMessageW(Handle_Slider_Transparency, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)Transparency); +} + +VOID Dialog_Setting::Refresh_Static_Language() { + SetDlgItemTextW(Handle_Get(), ID_Static_Language, Text::Static_Setting_Language().c_str()); +} + +VOID Dialog_Setting::Refresh_Static_Transparency() { + INT Transparency = Dialog_Main::Transparency_Get(); + std::wstring Transparency_wstring = Text::Static_Setting_Transparency() + std::to_wstring(Transparency) + L"%"; + SetDlgItemTextW(Handle_Get(), ID_Static_Transparency, Transparency_wstring.c_str()); +} diff --git a/NetSpeed/NetSpeed/Dialog_Setting/Dialog_Setting.h b/NetSpeed/NetSpeed/Dialog_Setting/Dialog_Setting.h new file mode 100644 index 0000000..3459916 --- /dev/null +++ b/NetSpeed/NetSpeed/Dialog_Setting/Dialog_Setting.h @@ -0,0 +1,20 @@ +#pragma once +#include +class Dialog_Setting; +#include "../Dialog/Dialog.h" + +class Dialog_Setting :public Dialog { +public: + static INT_PTR WINAPI Process(HWND Handle_Dialog, UINT Message_Dialog, WPARAM Param_WORD, LPARAM Param_LONG); + static VOID Refresh_All(); + static VOID Refresh_Button_Clean(); + static VOID Refresh_Button_CleanAndExit(); + static VOID Refresh_Caption(); + static VOID Refresh_Check_Setting_Show(); + static VOID Refresh_Check_Setting_Startup(); + static VOID Refresh_Combo_Setting_Language(); + static VOID Refresh_Slider_Transparency(); + static VOID Refresh_Static_Language(); + static VOID Refresh_Static_Transparency(); +private: +}; \ No newline at end of file diff --git a/NetSpeed/NetSpeed/Main.cpp b/NetSpeed/NetSpeed/Main.cpp index 90165b7..62ad1bb 100644 --- a/NetSpeed/NetSpeed/Main.cpp +++ b/NetSpeed/NetSpeed/Main.cpp @@ -2,27 +2,29 @@ #include #include #include -#include "DialogMain\DialogMain.h" +#include "Dialog_Main\Dialog_Main.h" #include "Menu\Menu.h" #include "Net\Net.h" #include "NotifyIcon\NotifyIcon.h" #include "Resource\resource.h" +#include "Text\Text.h" -std::wstring file_name; -std::wstring file_path; +std::wstring File_Name; +std::wstring File_Path; -INT WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpszCmdLine, INT iCmdShow) { +INT WINAPI wWinMain(HINSTANCE Handle_Instance, HINSTANCE Handle_Instance_Previous, LPWSTR Commond, INT Show_Commend) { SetProcessDpiAwareness(PROCESS_PER_MONITOR_DPI_AWARE); - WCHAR path_file[MAX_PATH]; - GetModuleFileNameW(NULL, path_file, MAX_PATH); - file_path = path_file; - file_name = PathFindFileNameW(path_file); - file_name.erase(file_name.end() - 4, file_name.end()); + WCHAR Path_File[MAX_PATH]; + GetModuleFileNameW(NULL, Path_File, MAX_PATH); + File_Path = Path_File; + File_Name = PathFindFileNameW(Path_File); + File_Name.erase(File_Name.end() - 4, File_Name.end()); + Text::Init(); Menu::Init(); Net::Init(); - DialogBoxW(hInstance, MAKEINTRESOURCE(DIALOG_MAIN), NULL, DialogMainProcess); + DialogBoxW(Handle_Instance, MAKEINTRESOURCE(ID_Dialog_Main), NULL, Dialog_Main::Process); return 0; } diff --git a/NetSpeed/NetSpeed/Main.h b/NetSpeed/NetSpeed/Main.h index 12f4a91..9a43dec 100644 --- a/NetSpeed/NetSpeed/Main.h +++ b/NetSpeed/NetSpeed/Main.h @@ -1,5 +1,6 @@ #pragma once +#include #include -extern std::wstring file_name; -extern std::wstring file_path; \ No newline at end of file +extern std::wstring File_Name; +extern std::wstring File_Path; diff --git a/NetSpeed/NetSpeed/Menu/MENUITEM.h b/NetSpeed/NetSpeed/Menu/MENUITEM.h deleted file mode 100644 index c31ca25..0000000 --- a/NetSpeed/NetSpeed/Menu/MENUITEM.h +++ /dev/null @@ -1,8 +0,0 @@ -#pragma once - -enum { - MENUITEM_SHOW, - MENUITEM_STARTUP, - MENUITEM_CLEAN, - MENUITEM_EXIT -}; diff --git a/NetSpeed/NetSpeed/Menu/Menu.cpp b/NetSpeed/NetSpeed/Menu/Menu.cpp index ab8594b..651b3a5 100644 --- a/NetSpeed/NetSpeed/Menu/Menu.cpp +++ b/NetSpeed/NetSpeed/Menu/Menu.cpp @@ -1,75 +1,88 @@ #include "Menu.h" -#include "MENUITEM.h" +#include +#include "../Dialog_Main/Dialog_Main.h" +#include "../Dialog_Setting/Dialog_Setting.h" #include "../Main.h" -#include "../DialogMain/DialogMain.h" #include "../NotifyIcon/NotifyIcon.h" #include "../Registry/Registry.h" -#include "../Registry/REGISTRYPATH.h" +#include "../Resource/resource.h" +#include "../Text/Text.h" -BOOL Menu::startup_ = FALSE; -HMENU Menu::handle_; -BOOL Menu::show_ = TRUE; +HMENU Menu::Handle_; +BOOL Menu::Show_ = TRUE; +BOOL Menu::Startup_ = FALSE; -VOID Menu::Pop() { - show_ = IsWindowVisible(dialog_main); - if (show_ == TRUE) { - ModifyMenu(handle_, MENUITEM_SHOW, MF_BYPOSITION | MF_STRING, WM_MENUSHOW, L"Hide"); - } - else if (show_ == FALSE) { - ModifyMenu(handle_, MENUITEM_SHOW, MF_BYPOSITION | MF_STRING, WM_MENUSHOW, L"Show"); - } - - LSTATUS startup_status = Registry::Startup_Status(); - if (startup_status == ERROR_SUCCESS) { - startup_ = TRUE; - ModifyMenuW(handle_, MENUITEM_STARTUP, MF_BYPOSITION | MF_STRING | MF_CHECKED, WM_MENUSTARTUP, L"Startup"); - } - else if (startup_status == ERROR_FILE_NOT_FOUND) { - startup_ = FALSE; - ModifyMenuW(handle_, MENUITEM_STARTUP, MF_BYPOSITION | MF_STRING | MF_UNCHECKED, WM_MENUSTARTUP, L"Startup"); - } - else { - MessageBoxW(NULL, L"Can't open registry.", L"Error", MB_OK); - } - - SetForegroundWindow(dialog_main); - POINT cursor; - GetCursorPos(&cursor); - TrackPopupMenu(handle_, TPM_BOTTOMALIGN | TPM_LEFTALIGN, cursor.x, cursor.y, 0, dialog_main, NULL); -} +//public: VOID Menu::Init() { - handle_ = CreatePopupMenu(); - InsertMenuW(handle_, 0, MF_STRING, WM_MENUSHOW, L"Hide"); - InsertMenuW(handle_, 0, MF_STRING | MF_CHECKED, WM_MENUSTARTUP, L"Startup"); - InsertMenuW(handle_, 0, MF_STRING, WM_MENUCLEAN, L"Clean"); - InsertMenuW(handle_, 0, MF_STRING, WM_MENUEXIT, L"Exit"); + Handle_ = CreatePopupMenu(); + for (INT Index = 0; Index <= Item::Total - 1; Index++) { + InsertMenuW(Handle_, 0, MF_STRING, NULL, NULL); + } } -VOID Menu::Item_Clean() { - Registry::Clean(); +VOID Menu::Item_Exit() { + if (Dialog_Setting::Handle_Get() != NULL) { + Dialog_Setting::Destroy(); + } + NotifyIcon::Destroy(); + Dialog_Main::Destroy(); } -VOID Menu::Item_Exit() { - NotifyIcon::Delete(); - EndDialog(dialog_main, 0); +VOID Menu::Item_Setting() { + HWND Handle_Dialog_Setting = Dialog_Setting::Handle_Get(); + if (Handle_Dialog_Setting != NULL) { + SetForegroundWindow(Handle_Dialog_Setting); + return; + } + DialogBoxW(NULL, MAKEINTRESOURCE(ID_Dialog_Setting), NULL, Dialog_Setting::Process); } VOID Menu::Item_Show() { - if (show_ == TRUE) { - ShowWindow(dialog_main, SW_HIDE); + if (Show_ == TRUE) { + ShowWindow(Dialog_Main::Handle_Get(), SW_HIDE); } - else if (show_ == FALSE) { - ShowWindow(dialog_main, SW_SHOW); + else if (Show_ == FALSE) { + ShowWindow(Dialog_Main::Handle_Get(), SW_SHOW); + } + if (Dialog_Setting::Handle_Get() != NULL) { + Dialog_Setting::Refresh_Check_Setting_Show(); } } VOID Menu::Item_Startup() { - if (startup_ == TRUE) { - Registry::Startup_Delete(); + Registry::Startup_Set(!Startup_); + if (Dialog_Setting::Handle_Get() != NULL) { + Dialog_Setting::Refresh_Check_Setting_Startup(); + } +} +VOID Menu::Pop() { + //Show + Show_ = IsWindowVisible(Dialog_Main::Handle_Get()); + if (Show_ == TRUE) { + ModifyMenu(Handle_, Item::Show, MF_BYPOSITION | MF_STRING, WM_MENU_SHOW, Text::Menu_Item_Hide().c_str()); } - else if (startup_ == FALSE) { - Registry::Startup_Create(); + else if (Show_ == FALSE) { + ModifyMenu(Handle_, Item::Show, MF_BYPOSITION | MF_STRING, WM_MENU_SHOW, Text::Menu_Item_Show().c_str()); } -} + //Startup + Startup_ = Registry::Startup_Get(); + if (Startup_ == TRUE) { + ModifyMenuW(Handle_, Item::Startup, MF_BYPOSITION | MF_STRING | MF_CHECKED, WM_MENU_STARTUP, Text::Menu_Item_Startup().c_str()); + } + else if (Startup_ == FALSE) { + ModifyMenuW(Handle_, Item::Startup, MF_BYPOSITION | MF_STRING | MF_UNCHECKED, WM_MENU_STARTUP, Text::Menu_Item_Startup().c_str()); + } + else { + MessageBoxW(NULL, Text::Message_AdapterFindFail().c_str(), NULL, MB_OK); + } + //Setting + ModifyMenu(Handle_, Item::Setting, MF_BYPOSITION | MF_STRING, WM_MENU_SETTING, Text::Menu_Item_Setting().c_str()); + //Exit + ModifyMenu(Handle_, Item::Exit, MF_BYPOSITION | MF_STRING, WM_MENU_EXIT, Text::Menu_Item_Exit().c_str()); + SetForegroundWindow(Dialog_Main::Handle_Get()); + POINT Point_Cursor; + GetCursorPos(&Point_Cursor); + TrackPopupMenu(Handle_, TPM_BOTTOMALIGN | TPM_LEFTALIGN, Point_Cursor.x, Point_Cursor.y, 0, Dialog_Main::Handle_Get(), NULL); +} \ No newline at end of file diff --git a/NetSpeed/NetSpeed/Menu/Menu.h b/NetSpeed/NetSpeed/Menu/Menu.h index 00ae371..d47e821 100644 --- a/NetSpeed/NetSpeed/Menu/Menu.h +++ b/NetSpeed/NetSpeed/Menu/Menu.h @@ -1,18 +1,26 @@ #pragma once #include #include +class Menu; #include "../Resource/WM_USER.h" class Menu { public: - static VOID Pop(); static VOID Init(); - static VOID Item_Clean(); static VOID Item_Exit(); + static VOID Item_Setting(); static VOID Item_Show(); static VOID Item_Startup(); + static VOID Pop(); private: - static BOOL startup_; - static BOOL show_; - static HMENU handle_; + enum Item { + Show, + Startup, + Setting, + Exit, + Total + }; + static HMENU Handle_; + static BOOL Show_; + static BOOL Startup_; }; \ No newline at end of file diff --git a/NetSpeed/NetSpeed/Net/Net.cpp b/NetSpeed/NetSpeed/Net/Net.cpp index c3e6a18..da555ea 100644 --- a/NetSpeed/NetSpeed/Net/Net.cpp +++ b/NetSpeed/NetSpeed/Net/Net.cpp @@ -1,73 +1,89 @@ #include "Net.h" #include -#include "../DialogMain/DialogMain.h" +#include "../Dialog_Main/Dialog_Main.h" #include "../Resource/resource.h" +#include "../Text/Text.h" -HANDLE Net::thread_refresh_; -PMIB_IFROW Net::adapter_info_ = nullptr; -DWORD Net::download_old_ = 0; -DWORD Net::download_new_; -DWORD Net::upload_old_ = 0; -DWORD Net::upload_new_; -BOOL Net::thread_exit_ = FALSE; +HANDLE Net::Thread_Refresh_; +PMIB_IFROW Net::Adapter_Info_ = nullptr; +DWORD Net::Download_Old_ = 0; +DWORD Net::Download_New_; +DWORD Net::Upload_Old_ = 0; +DWORD Net::Upload_New_; +BOOL Net::Thread_Exit_ = FALSE; + +//public: VOID Net::Init() { - adapter_info_ = (PMIB_IFROW)HeapAlloc(GetProcessHeap(), 0, sizeof(MIB_IFROW)); - adapter_info_->dwIndex = 0; + Adapter_Info_ = (PMIB_IFROW)HeapAlloc(GetProcessHeap(), 0, sizeof(MIB_IFROW)); + Adapter_Info_->dwIndex = 0; } -VOID Net::RefreshNetSpeedStart() { - thread_refresh_ = CreateThread(NULL, 0, RefreshNetSpeed, NULL, 0, NULL); +VOID Net::Refresh_Start() { + Thread_Refresh_ = CreateThread(NULL, 0, NetSpeed_Refresh, NULL, 0, NULL); } -VOID Net::AdapterGet() { - if (GetIfEntry(adapter_info_) == NO_ERROR) { - if (adapter_info_->dwType == IF_TYPE_IEEE80211) { + +//private: + +VOID Net::Adapter_Get() { + if (GetIfEntry(Adapter_Info_) == NO_ERROR) { + if (Adapter_Info_->dwType == IF_TYPE_IEEE80211) { return; } } - - //100 just is a joke - for (DWORD index = 0; index <= 100; index++) { - adapter_info_->dwIndex = index; - if (GetIfEntry(adapter_info_) != NO_ERROR) { + DWORD Size_Table = sizeof(MIB_IFTABLE); + MIB_IFTABLE *Adapter_Table = (MIB_IFTABLE *)HeapAlloc(GetProcessHeap(), 0, Size_Table); + GetIfTable(Adapter_Table, &Size_Table, FALSE); + HeapFree(GetProcessHeap(), 0, Adapter_Table); + Adapter_Table = (MIB_IFTABLE *)HeapAlloc(GetProcessHeap(), 0, Size_Table); + GetIfTable(Adapter_Table, &Size_Table, FALSE); + DWORD Adapter_Number = Adapter_Table->dwNumEntries; + HeapFree(GetProcessHeap(), 0, Adapter_Table); + for (DWORD Index = 0; Index <= Adapter_Number - 1; Index++) { + Adapter_Info_->dwIndex = Index; + if (GetIfEntry(Adapter_Info_) != NO_ERROR) { continue; } - if (adapter_info_->dwType == IF_TYPE_IEEE80211) { + if ( + Adapter_Info_->dwType == IF_TYPE_IEEE80211&& + Adapter_Info_->dwSpeed != 0 && + Adapter_Info_->dwOperStatus == IF_OPER_STATUS_OPERATIONAL + ) { return; } } - MessageBoxW(NULL, L"Found no adapter", L"Error", MB_OK); - EndDialog(dialog_main, 0); + MessageBoxW(NULL, Text::Message_AdapterFindFail().c_str(), L"", MB_OK); + EndDialog(Dialog_Main::Handle_Get(), 0); } -DWORD Net::RefreshNetSpeed(LPVOID) { +DWORD Net::NetSpeed_Refresh(LPVOID) { while (TRUE) { - Sleep(1000); - AdapterGet(); - download_new_ = adapter_info_->dwInOctets; - upload_new_ = adapter_info_->dwOutOctets; - DOUBLE download_disparity = (download_new_ - download_old_) / 1024.0; - DOUBLE upload_disparity = (upload_new_ - upload_old_) / 1024.0; - std::wstring unit_download = L"K"; - std::wstring unit_upload = L"K"; - if (download_disparity > 1024) { - download_disparity = download_disparity / 1024.0; - unit_download = L"M"; + Adapter_Get(); + Download_New_ = Adapter_Info_->dwInOctets; + Upload_New_ = Adapter_Info_->dwOutOctets; + DOUBLE Download_Disparity = (Download_New_ - Download_Old_) / 1024.0; + DOUBLE Upload_Disparity = (Upload_New_ - Upload_Old_) / 1024.0; + std::wstring Unit_Download = L"K"; + std::wstring Unit_Upload = L"K"; + if (Download_Disparity > 1024) { + Download_Disparity = Download_Disparity / 1024.0; + Unit_Download = L"M"; } - if (upload_disparity > 1024) { - upload_disparity = upload_disparity / 1024.0; - unit_upload = L"M"; + if (Upload_Disparity > 1024) { + Upload_Disparity = Upload_Disparity / 1024.0; + Unit_Upload = L"M"; } - std::wstring download_speed = std::to_wstring(download_disparity + 0.05); - std::wstring upload_speed = std::to_wstring(upload_disparity + 0.05); - download_speed.erase(download_speed.end() - 5, download_speed.end()); - upload_speed.erase(upload_speed.end() - 5, upload_speed.end()); - download_speed.append(unit_download); - upload_speed.append(unit_upload); - download_old_ = download_new_; - upload_old_ = upload_new_; - SetDlgItemTextW(dialog_main, STATIC_DOWNLOAD, download_speed.c_str()); - SetDlgItemTextW(dialog_main, STATIC_UPLOAD, upload_speed.c_str()); + std::wstring Download_Speed = std::to_wstring(Download_Disparity + 0.05); + std::wstring Upload_Speed = std::to_wstring(Upload_Disparity + 0.05); + Download_Speed.erase(Download_Speed.end() - 5, Download_Speed.end()); + Upload_Speed.erase(Upload_Speed.end() - 5, Upload_Speed.end()); + Download_Speed.append(Unit_Download); + Upload_Speed.append(Unit_Upload); + Download_Old_ = Download_New_; + Upload_Old_ = Upload_New_; + SetDlgItemTextW(Dialog_Main::Handle_Get(), ID_Static_Download, Download_Speed.c_str()); + SetDlgItemTextW(Dialog_Main::Handle_Get(), ID_Static_Upload, Upload_Speed.c_str()); + Sleep(1000); } return 0; } diff --git a/NetSpeed/NetSpeed/Net/Net.h b/NetSpeed/NetSpeed/Net/Net.h index fcd6deb..4319081 100644 --- a/NetSpeed/NetSpeed/Net/Net.h +++ b/NetSpeed/NetSpeed/Net/Net.h @@ -1,19 +1,20 @@ #pragma once #include #include +class Net; class Net { public: static VOID Init(); - static VOID RefreshNetSpeedStart(); + static VOID Refresh_Start(); private: - static HANDLE thread_refresh_; - static PMIB_IFROW adapter_info_; - static DWORD download_old_; - static DWORD download_new_; - static DWORD upload_old_; - static DWORD upload_new_; - static BOOL thread_exit_; - static VOID AdapterGet(); - static DWORD WINAPI RefreshNetSpeed(LPVOID); + static VOID Adapter_Get(); + static DWORD WINAPI NetSpeed_Refresh(LPVOID); + static PMIB_IFROW Adapter_Info_; + static DWORD Download_New_; + static DWORD Download_Old_; + static BOOL Thread_Exit_; + static HANDLE Thread_Refresh_; + static DWORD Upload_Old_; + static DWORD Upload_New_; }; \ No newline at end of file diff --git a/NetSpeed/NetSpeed/NetSpeed.vcxproj b/NetSpeed/NetSpeed/NetSpeed.vcxproj index f36ea09..75a9b38 100644 --- a/NetSpeed/NetSpeed/NetSpeed.vcxproj +++ b/NetSpeed/NetSpeed/NetSpeed.vcxproj @@ -22,25 +22,27 @@ - + + + - - - + - + + + @@ -49,21 +51,21 @@ 15.0 {3904678E-7C22-48DD-87A0-D938897C53BF} NetSpeed - 10.0.15063.0 + 10.0.16299.0 Application true v141 - MultiByte + Unicode Application false v141 true - MultiByte + Unicode Application diff --git a/NetSpeed/NetSpeed/NetSpeed.vcxproj.filters b/NetSpeed/NetSpeed/NetSpeed.vcxproj.filters index 8bc2133..216f546 100644 --- a/NetSpeed/NetSpeed/NetSpeed.vcxproj.filters +++ b/NetSpeed/NetSpeed/NetSpeed.vcxproj.filters @@ -14,12 +14,21 @@ {7d05ce1a-31d6-4fe5-8ff9-cdb6815dec7c} - - {a96598b7-a1ee-41f1-8973-d66e51feb8ca} - {d9257cf2-b939-421a-96fa-b6223dd76544} + + {ea13c3f3-1a7f-44bb-86c1-3ca194467bd3} + + + {437cdaed-3196-47b9-8bed-1c4e45ce4461} + + + {a96598b7-a1ee-41f1-8973-d66e51feb8ca} + + + {c9e839f1-b6a3-4f7a-9376-038f482f3e4f} + @@ -42,21 +51,21 @@ NotifyIcon - - DialogMain - - - Menu - Registry - - Registry - - - Registry + + Text + + + Dialog_Main + + + Dialog_Setting + + + Dialog @@ -70,12 +79,18 @@ NotifyIcon - - DialogMain - Registry + + Text + + + Dialog_Main + + + Dialog_Setting + diff --git a/NetSpeed/NetSpeed/NotifyIcon/NotifyIcon.cpp b/NetSpeed/NetSpeed/NotifyIcon/NotifyIcon.cpp index ef83629..d6bdfcc 100644 --- a/NetSpeed/NetSpeed/NotifyIcon/NotifyIcon.cpp +++ b/NetSpeed/NetSpeed/NotifyIcon/NotifyIcon.cpp @@ -1,22 +1,24 @@ #include "NotifyIcon.h" -#include "../DialogMain/DialogMain.h" +#include "../Dialog_Main/Dialog_Main.h" #include "../Resource/resource.h" #include "../Resource/WM_USER.h" -NOTIFYICONDATAW NotifyIcon::data_; +NOTIFYICONDATAW NotifyIcon::Data_; -VOID NotifyIcon::Init() { - data_.cbSize = sizeof(data_); - data_.hIcon = (HICON)LoadImageW(GetModuleHandleW(NULL), MAKEINTRESOURCEW(ICON_MAIN), IMAGE_ICON, 0, 0, LR_SHARED); - data_.uCallbackMessage = WM_NOTIFYICON; - data_.hWnd = dialog_main; - data_.uID = NOTIFYICON_MAIN; - data_.uVersion = NOTIFYICON_VERSION_4; - wcscpy_s(data_.szTip, L"NetSpeed"); - data_.uFlags = NIF_TIP | NIF_ICON | NIF_MESSAGE; - Shell_NotifyIconW(NIM_ADD, &data_); +//public: + +VOID NotifyIcon::Destroy() { + Shell_NotifyIconW(NIM_DELETE, &Data_); } -VOID NotifyIcon::Delete() { - Shell_NotifyIconW(NIM_DELETE, &data_); +VOID NotifyIcon::Init() { + Data_.cbSize = sizeof(Data_); + Data_.hIcon = (HICON)LoadImageW(GetModuleHandleW(NULL), MAKEINTRESOURCEW(ID_Icon_Main), IMAGE_ICON, 0, 0, LR_SHARED); + Data_.uCallbackMessage = WM_NOTIFYICON; + Data_.hWnd = Dialog_Main::Handle_Get(); + Data_.uID = ID_NotifyIcon_Main; + Data_.uVersion = NOTIFYICON_VERSION_4; + wcscpy_s(Data_.szTip, L"NetSpeed"); + Data_.uFlags = NIF_TIP | NIF_ICON | NIF_MESSAGE; + Shell_NotifyIconW(NIM_ADD, &Data_); } diff --git a/NetSpeed/NetSpeed/NotifyIcon/NotifyIcon.h b/NetSpeed/NetSpeed/NotifyIcon/NotifyIcon.h index b251dd4..bacb158 100644 --- a/NetSpeed/NetSpeed/NotifyIcon/NotifyIcon.h +++ b/NetSpeed/NetSpeed/NotifyIcon/NotifyIcon.h @@ -1,10 +1,11 @@ #pragma once #include +class NotifyIcon; class NotifyIcon { public: + static VOID Destroy(); static VOID Init(); - static VOID Delete(); private: - static NOTIFYICONDATAW data_; + static NOTIFYICONDATAW Data_; }; \ No newline at end of file diff --git a/NetSpeed/NetSpeed/Registry/REGISTRYPATH.h b/NetSpeed/NetSpeed/Registry/REGISTRYPATH.h deleted file mode 100644 index b007296..0000000 --- a/NetSpeed/NetSpeed/Registry/REGISTRYPATH.h +++ /dev/null @@ -1,4 +0,0 @@ -#pragma once - -#define REGISTRYPATH_STARTUP L"Software\\Microsoft\\Windows\\CurrentVersion\\Run" -#define REGISTRYPATH_POSITION L"Software\\NetSpeed" \ No newline at end of file diff --git a/NetSpeed/NetSpeed/Registry/REGISTRYVALUE.h b/NetSpeed/NetSpeed/Registry/REGISTRYVALUE.h deleted file mode 100644 index d6932bd..0000000 --- a/NetSpeed/NetSpeed/Registry/REGISTRYVALUE.h +++ /dev/null @@ -1,4 +0,0 @@ -#pragma once - -#define REGISTRYVALUE_POSITION_X L"position_x" -#define REGISTRYVALUE_POSITION_Y L"position_y" diff --git a/NetSpeed/NetSpeed/Registry/Registry.cpp b/NetSpeed/NetSpeed/Registry/Registry.cpp index 3658732..cc4182a 100644 --- a/NetSpeed/NetSpeed/Registry/Registry.cpp +++ b/NetSpeed/NetSpeed/Registry/Registry.cpp @@ -1,118 +1,131 @@ #include "Registry.h" -#include "REGISTRYPATH.h" -#include "REGISTRYVALUE.h" +#include "../Dialog_Main/Dialog_Main.h" +#include "../Dialog_Setting/Dialog_Setting.h" #include "../Main.h" -#include "../DialogMain/DialogMain.h" +#include "../Text/Text.h" + +const std::wstring Registry::Path_NetSpeed_ = L"Software\\NetSpeed"; +const std::wstring Registry::Path_Startup_ = L"Software\\Microsoft\\Windows\\CurrentVersion\\Run"; +const std::wstring Registry::Value_Position_X_ = L"Position_X"; +const std::wstring Registry::Value_Position_Y_ = L"Position_Y"; +const std::wstring Registry::Value_Transparency_ = L"Transparency"; +const std::wstring Registry::Value_Language_ = L"Language"; + +//public: VOID Registry::Clean() { - Startup_Delete(); - Position_Delete(); - MessageBoxW(NULL, L"Startup and Position have been cleanned.", L"Complete", MB_OK); + Startup_Set(FALSE); + RegDeleteTreeW(HKEY_CURRENT_USER, Path_NetSpeed_.c_str()); + MessageBoxW(NULL, Text::Message_CleanFinish().c_str(), L"", MB_OK); } -VOID Registry::Position_Create() { - HKEY registry_key; - RegCreateKeyExW( - HKEY_CURRENT_USER, - REGISTRYPATH_POSITION, - 0, - NULL, - REG_OPTION_NON_VOLATILE, - KEY_ALL_ACCESS, - NULL, - ®istry_key, - NULL - ); - RECT dialog_rect; - GetWindowRect(dialog_main, &dialog_rect); - MapWindowPoints(HWND_DESKTOP, GetParent(dialog_main), (LPPOINT)&dialog_rect, sizeof(RECT) / sizeof(POINT)); - RegSetValueExW( - registry_key, - REGISTRYVALUE_POSITION_X, - 0, - REG_DWORD, - (PBYTE)&dialog_rect.left, - sizeof(LONG) - ); - RegSetValueExW( - registry_key, - REGISTRYVALUE_POSITION_Y, - 0, - REG_DWORD, - (PBYTE)&dialog_rect.top, - sizeof(LONG) - ); - RegCloseKey(registry_key); +std::wstring Registry::Language_Get() { + WCHAR Language[100]; + LSTATUS Status_Language = Value_Get(Value_Language_, RRF_RT_REG_SZ, Language); + if (Status_Language == ERROR_SUCCESS) { + return Language; + } + std::wstring Language_Name = Text::Name(); + Value_Set(Value_Language_.c_str(), REG_SZ, (PBYTE)Language_Name.c_str(), Language_Name.length() * sizeof(WCHAR)); + return Language_Name; } -VOID Registry::Position_Delete() { - RegDeleteTreeW(HKEY_CURRENT_USER, REGISTRYPATH_POSITION); +VOID Registry::Language_Save() { + std::wstring Language_Name = Text::Name(); + Value_Set(Value_Language_.c_str(), REG_SZ, (PBYTE)Language_Name.c_str(), Language_Name.length() * sizeof(WCHAR)); } POINT Registry::Position_Get() { - POINT poisition = {-1, -1}; - DWORD data_size; - RegGetValueW( - HKEY_CURRENT_USER, - REGISTRYPATH_POSITION, - REGISTRYVALUE_POSITION_X, - RRF_RT_REG_DWORD, - NULL, - &poisition.x, - &data_size - ); - RegGetValueW( + POINT Poisition; + LSTATUS Status_Position_X = Value_Get(Value_Position_X_, RRF_RT_REG_DWORD, &Poisition.x); + LSTATUS Status_Position_Y = Value_Get(Value_Position_Y_, RRF_RT_REG_DWORD, &Poisition.y); + if (Status_Position_X != ERROR_SUCCESS || Status_Position_Y != ERROR_SUCCESS) { + Position_Save(); + return Position_Get(); + } + return Poisition; +} + +VOID Registry::Position_Save() { + POINT Point_Dialog = Dialog_Main::Position_Get(); + Value_Set(Value_Position_X_.c_str(), REG_DWORD, (PBYTE)&Point_Dialog.x, sizeof(LONG)); + Value_Set(Value_Position_Y_.c_str(), REG_DWORD, (PBYTE)&Point_Dialog.y, sizeof(LONG)); +} + +BOOL Registry::Startup_Get() { + LSTATUS Status_Registry_Startup = Value_Get(File_Name, RRF_RT_REG_SZ, NULL); + if (Status_Registry_Startup != ERROR_SUCCESS) { + return FALSE; + } + //Rest the .exe path + Value_Set(File_Name, REG_SZ, (PBYTE)File_Path.c_str(), File_Path.length() * sizeof(WCHAR)); + return TRUE; +} + +VOID Registry::Startup_Set(BOOL Startup) { + if (Startup == TRUE) { + Value_Set(File_Name, REG_SZ, (PBYTE)File_Path.c_str(), File_Path.length() * sizeof(WCHAR)); + } + else { + RegDeleteKeyValueW(HKEY_CURRENT_USER, Path_Startup_.c_str(), File_Name.c_str()); + } + if (Dialog_Setting::Handle_Get() != NULL) { + Dialog_Setting::Refresh_Check_Setting_Startup(); + } +} + +INT Registry::Transparency_Get() { + INT Transparency; + LSTATUS Status_Transparency = Value_Get(Value_Transparency_, RRF_RT_REG_DWORD, &Transparency); + if (Status_Transparency != ERROR_SUCCESS) { + Transparency_Save(); + return Transparency_Get(); + } + return Transparency; +} + +VOID Registry::Transparency_Save() { + INT Transparency = Dialog_Main::Transparency_Get(); + Value_Set(Value_Transparency_, REG_DWORD, (PBYTE)&Transparency, sizeof(LONG)); +} + +//private: + +LSTATUS Registry::Value_Get(std::wstring Value, DWORD Flag, PVOID Data) { + std::wstring Path = Path_NetSpeed_; + if (Value == File_Name) { + Path = Path_Startup_; + } + DWORD Size_Data; + LSTATUS Status = RegGetValueW( HKEY_CURRENT_USER, - REGISTRYPATH_POSITION, - REGISTRYVALUE_POSITION_Y, - RRF_RT_REG_DWORD, + Path.c_str(), + Value.c_str(), + Flag, NULL, - &poisition.y, - &data_size + Data, + &Size_Data ); - return poisition; + return Status; } -VOID Registry::Startup_Create() { - HKEY registry_key; +VOID Registry::Value_Set(std::wstring Value, DWORD Type, PBYTE Data, DWORD Size) { + HKEY Handle_Key; + std::wstring Path = Path_NetSpeed_; + if (Value == File_Name) { + Path = Path_Startup_; + } RegCreateKeyExW( HKEY_CURRENT_USER, - REGISTRYPATH_STARTUP, + Path.c_str(), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, - ®istry_key, + &Handle_Key, NULL ); - RegSetValueExW( - registry_key, - file_name.c_str(), - 0, - REG_SZ, - (PBYTE)file_path.c_str(), - file_path.length() * sizeof(WCHAR) - ); - RegCloseKey(registry_key); -} - -VOID Registry::Startup_Delete() { - RegDeleteKeyValueW(HKEY_CURRENT_USER, REGISTRYPATH_STARTUP, file_name.c_str()); -} - -LSTATUS Registry::Startup_Status() { - LSTATUS registry_startup = RegGetValueW( - HKEY_CURRENT_USER, - REGISTRYPATH_STARTUP, - file_name.c_str(), - RRF_RT_REG_SZ, - NULL, - NULL, - NULL - ); - if (registry_startup == ERROR_SUCCESS) { - Startup_Create(); - } - return registry_startup; + RegSetValueExW(Handle_Key, Value.c_str(), 0, Type, Data, Size); + RegCloseKey(Handle_Key); } diff --git a/NetSpeed/NetSpeed/Registry/Registry.h b/NetSpeed/NetSpeed/Registry/Registry.h index b2b8f93..073fbff 100644 --- a/NetSpeed/NetSpeed/Registry/Registry.h +++ b/NetSpeed/NetSpeed/Registry/Registry.h @@ -1,14 +1,27 @@ #pragma once #include +#include +class Registry; class Registry { public: - static VOID Clean(); - static VOID Position_Create(); - static VOID Position_Delete(); - static POINT Position_Get(); - static VOID Startup_Create(); - static VOID Startup_Delete(); - static LSTATUS Startup_Status(); + static VOID Clean(); + static std::wstring Language_Get(); + static VOID Language_Save(); + static POINT Position_Get(); + static VOID Position_Save(); + static BOOL Startup_Get(); + static VOID Startup_Set(BOOL Startup); + static INT Transparency_Get(); + static VOID Transparency_Save(); +private: + static LSTATUS Value_Get(std::wstring Value, DWORD Flag, PVOID Data); + static VOID Value_Set(std::wstring Value, DWORD Type, PBYTE Data, DWORD Size); + static const std::wstring Path_NetSpeed_; + static const std::wstring Path_Startup_; + static const std::wstring Value_Position_X_; + static const std::wstring Value_Position_Y_; + static const std::wstring Value_Transparency_; + static const std::wstring Value_Language_; private: }; \ No newline at end of file diff --git a/NetSpeed/NetSpeed/Resource/NetSpeed.rc b/NetSpeed/NetSpeed/Resource/NetSpeed.rc index a97f8416d72d2024bf82a2d33a92063240d55e3f..2692bcd33b02956095db920f37302739165ad80e 100644 GIT binary patch delta 1971 zcmbtV&rcIU6n-0H#BK|ODhh_UtQw;MZ7CrBN}vm3v84^WAb4qNA*G?T1|ijiq&NS8 z`A1Cl;9Uf@!M_~VRjRu~`hD$^RIq6m!d-~VLcKvvstbb>t+Qs-zSv1`nVuc$e2HEi?i9?X z4fy4r>r`Pw`fw~s{23vGZc~EI>&bYI@SiGQEVhN!yT?fv|>e5nrxZrY(9ZG*dJtygHN?IMRsb&_fS_k}h&- z3!yD~1hpVM2f(?h1C;^-PU20{l=w}+IsZ2%U>mUG4+oZmOc7`9zY9h*hZ2K zBrVI+^11{;R-moW9=;Wz9ied%Dn$vbCq)u+ZF#t6MI8(1V;&t_golhsT0&7;Hg=Z) zB?xc@dKR}Hhfy}P6~@k6t59U&WR6zJVZ(jr%4S=_!A1tD-42Y`Q$k4zSW}@|hT?!A zM-kx;O`tSaLIeuNJ<3k@Q}$GLGaSDYN#(HafNFc7qmR_0O|*(rPj%F9XxN6+HVtb& zm<>>w`;hdU!3c4tS)k~gU?b-d=a4sWEjSOiMR7wiWE@Osr(^+cZMaMe_dEcfVgE4^ zs)pqGjQN0qDJn<-lKLjHiW6Sw&QtL(DHxc!I)>js4PM|F*!7dz3>8jgt<8 delta 329 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 aC+D>q>XoaB0&#V}9o*pg6p1bKz2zTXeodhO literal 0 HcmV?d00001 diff --git a/NetSpeed/NetSpeed/Resource/WM_USER.h b/NetSpeed/NetSpeed/Resource/WM_USER.h index b7693c3..a38fea3 100644 --- a/NetSpeed/NetSpeed/Resource/WM_USER.h +++ b/NetSpeed/NetSpeed/Resource/WM_USER.h @@ -3,8 +3,8 @@ enum { WM_NOTIFYICON = WM_USER + 1, - WM_MENUSHOW, - WM_MENUSTARTUP, - WM_MENUCLEAN, - WM_MENUEXIT + WM_MENU_EXIT, + WM_MENU_SETTING, + WM_MENU_SHOW, + WM_MENU_STARTUP }; \ No newline at end of file diff --git a/NetSpeed/NetSpeed/Resource/resource.h b/NetSpeed/NetSpeed/Resource/resource.h index 8e34edc..926bb67 100644 --- a/NetSpeed/NetSpeed/Resource/resource.h +++ b/NetSpeed/NetSpeed/Resource/resource.h @@ -2,20 +2,29 @@ // Microsoft Visual C++ generated include file. // Used by NetSpeed.rc // -#define VERSION_MAIN 1 -#define DIALOG_MAIN 101 -#define NOTIFYICON_MAIN 102 -#define ICON_MAIN 103 -#define STATIC_DOWNLOAD 1001 -#define STATIC_UPLOAD 1002 +#define ID_Version_Main 1 +#define ID_Dialog_Main 101 +#define ID_NotifyIcon_Main 102 +#define ID_Icon_Main 103 +#define ID_Dialog_Setting 107 +#define ID_Static_Download 1001 +#define ID_Static_Upload 1002 +#define ID_Slider_Transparency 1003 +#define ID_Combo_Setting_Language 1004 +#define ID_Check_Setting_Startup 1005 +#define ID_Check_Setting_Show 1006 +#define ID_Button_Setting_Clean 1007 +#define ID_Button_Setting_CleanAndExit 1008 +#define ID_Static_Transparency 1009 +#define ID_Static_Language 1010 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 107 +#define _APS_NEXT_RESOURCE_VALUE 112 #define _APS_NEXT_COMMAND_VALUE 40006 -#define _APS_NEXT_CONTROL_VALUE 1003 +#define _APS_NEXT_CONTROL_VALUE 1014 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/NetSpeed/NetSpeed/Text/Text.cpp b/NetSpeed/NetSpeed/Text/Text.cpp new file mode 100644 index 0000000..4b8b651 --- /dev/null +++ b/NetSpeed/NetSpeed/Text/Text.cpp @@ -0,0 +1,113 @@ +#include "Text.h" +#include "../Registry/Registry.h" + +INT Text::Language_ = Text::Language::English; +std::vector Text::List_(Text::Language::Total); + +//public: + +std::wstring Text::Button_Setting_Clean() { + return List_[Language_].Button_Setting_Clean_; +} + +std::wstring Text::Button_Setting_CleanAndExit() { + return List_[Language_].Button_Setting_CleanAndExit_; +} + +std::wstring Text::Check_Setting_Show() { + return List_[Language_].Check_Setting_Show_; +} + +std::wstring Text::Check_Setting_Startup() { + return List_[Language_].Check_Setting_Startup_; +} + +std::wstring Text::Dialog_Setting_Caption() { + return List_[Language_].Dialog_Setting_Caption_; +} + +VOID Text::Init() { + List_[Language::Chinese_Simplified].Menu_Item_Clean_ = L"清理注册表"; + List_[Language::Chinese_Simplified].Menu_Item_Exit_ = L"退出"; + List_[Language::Chinese_Simplified].Menu_Item_Hide_ = L"隐藏"; + List_[Language::Chinese_Simplified].Menu_Item_Setting_ = L"设置"; + List_[Language::Chinese_Simplified].Menu_Item_Show_ = L"显示"; + List_[Language::Chinese_Simplified].Menu_Item_Startup_ = L"开机自启"; + List_[Language::Chinese_Simplified].Message_AdapterFindFail_ = L"查找网卡失败。"; + List_[Language::Chinese_Simplified].Message_RegistryOpenFail_ = L"打开注册表失败。"; + List_[Language::Chinese_Simplified].Name_ = L"简体中文"; + List_[Language::Chinese_Simplified].Button_Setting_Clean_ = L"清理"; + List_[Language::Chinese_Simplified].Button_Setting_CleanAndExit_ = L"清理并退出"; + List_[Language::Chinese_Simplified].Dialog_Setting_Caption_ = L"设置"; + List_[Language::Chinese_Simplified].Static_Setting_Language_ = L"语言"; + List_[Language::Chinese_Simplified].Static_Setting_Transparency_ = L"透明度:"; + std::wstring Language = Registry::Language_Get(); + for (INT Index = 0; Index <= Language::Total - 1; Index++) { + if (Name(Index) == Language) { + Language_ = Index; + break; + } + } + Registry::Language_Save(); +} + +INT Text::Language_Get() { + return Language_; +} + +VOID Text::Language_Set(INT Language) { + Language_ = Language; + Registry::Language_Save(); +} + +std::wstring Text::Menu_Item_Clean() { + return List_[Language_].Menu_Item_Clean_; +} + +std::wstring Text::Menu_Item_Exit() { + return List_[Language_].Menu_Item_Exit_; +} + +std::wstring Text::Menu_Item_Hide() { + return List_[Language_].Menu_Item_Hide_; +} + +std::wstring Text::Menu_Item_Setting() { + return List_[Language_].Menu_Item_Setting_; +} + +std::wstring Text::Menu_Item_Show() { + return List_[Language_].Menu_Item_Show_; +} + +std::wstring Text::Menu_Item_Startup() { + return List_[Language_].Menu_Item_Startup_; +} + +std::wstring Text::Message_AdapterFindFail() { + return List_[Language_].Message_AdapterFindFail_; +} + +std::wstring Text::Message_RegistryOpenFail() { + return List_[Language_].Message_RegistryOpenFail_; +} + +std::wstring Text::Message_CleanFinish() { + return List_[Language_].Message_CleanFinish_; +} + +std::wstring Text::Name() { + return List_[Language_].Name_; +} + +std::wstring Text::Name(INT Language) { + return List_[Language].Name_; +} + +std::wstring Text::Static_Setting_Language() { + return List_[Language_].Static_Setting_Language_; +} + +std::wstring Text::Static_Setting_Transparency() { + return List_[Language_].Static_Setting_Transparency_; +} diff --git a/NetSpeed/NetSpeed/Text/Text.h b/NetSpeed/NetSpeed/Text/Text.h new file mode 100644 index 0000000..d407e41 --- /dev/null +++ b/NetSpeed/NetSpeed/Text/Text.h @@ -0,0 +1,54 @@ +#pragma once +#include +#include +class Text; + +class Text { +public: + enum Language { + English, + Chinese_Simplified, + Total + }; + static std::wstring Button_Setting_Clean(); + static std::wstring Button_Setting_CleanAndExit(); + static std::wstring Check_Setting_Show(); + static std::wstring Check_Setting_Startup(); + static std::wstring Dialog_Setting_Caption(); + static VOID Init(); + static INT Language_Get(); + static VOID Language_Set(INT Language); + static std::wstring Menu_Item_Clean(); + static std::wstring Menu_Item_Exit(); + static std::wstring Menu_Item_Hide(); + static std::wstring Menu_Item_Setting(); + static std::wstring Menu_Item_Show(); + static std::wstring Menu_Item_Startup(); + static std::wstring Message_CleanFinish(); + static std::wstring Message_AdapterFindFail(); + static std::wstring Message_RegistryOpenFail(); + static std::wstring Name(); + static std::wstring Name(INT Language); + static std::wstring Static_Setting_Language(); + static std::wstring Static_Setting_Transparency(); +private: + static std::vector List_; + static INT Language_; + std::wstring Menu_Item_Clean_ = L"Clean"; + std::wstring Menu_Item_Exit_ = L"Exit"; + std::wstring Menu_Item_Hide_ = L"Hide"; + std::wstring Menu_Item_Setting_ = L"Setting"; + std::wstring Menu_Item_Show_ = L"Show"; + std::wstring Menu_Item_Startup_ = L"Startup"; + std::wstring Message_AdapterFindFail_ = L"Can't find adapter."; + std::wstring Message_RegistryOpenFail_ = L"Can't open registry."; + std::wstring Message_CleanFinish_ = L"All registry has been cleanned."; + std::wstring Name_ = L"English"; + std::wstring Button_Setting_Clean_ = L"Clean"; + std::wstring Button_Setting_CleanAndExit_ = L"Clean And Exit"; + std::wstring Dialog_Setting_Caption_ = L"Setting"; + std::wstring Static_Setting_Language_ = L"Language"; + std::wstring Static_Setting_Transparency_ = L"Transparency:"; + std::wstring Check_Setting_Show_ = L"Show"; + std::wstring Check_Setting_Startup_ = L"Startup"; +};