From 01d4ed0bc3692ad1ea366f20d94b519bf9a3c41b Mon Sep 17 00:00:00 2001 From: oddMLan <oddMLan2@gmail.com> Date: Sun, 17 Mar 2019 18:04:05 -0700 Subject: [PATCH 01/15] Change some error message boxes to warnings --- Source/Project64-core/Multilanguage.h | 3 ++- .../Multilanguage/LanguageClass.cpp | 3 ++- .../N64System/Interpreter/InterpreterOps.cpp | 2 +- Source/Project64-core/Notification.h | 3 +++ .../Project64/UserInterface/CheatClassUI.cpp | 2 +- .../Debugger/Debugger-MemoryDump.cpp | 2 +- .../UserInterface/EnhancementConfig.cpp | 2 +- Source/Project64/UserInterface/MainMenu.cpp | 4 ++-- Source/Project64/UserInterface/MainWindow.cpp | 6 +++--- .../Project64/UserInterface/Notification.cpp | 19 +++++++++++++++++-- Source/Project64/UserInterface/Notification.h | 3 +++ .../UserInterface/RomBrowserClass.cpp | 2 +- .../Settings/SettingsPage-Game-Plugin.cpp | 8 +++----- .../SettingsPage-KeyboardShortcuts.cpp | 14 +++++++------- .../Settings/SettingsPage-Plugin.cpp | 6 ++---- Source/Project64/main.cpp | 2 +- 16 files changed, 50 insertions(+), 31 deletions(-) diff --git a/Source/Project64-core/Multilanguage.h b/Source/Project64-core/Multilanguage.h index b6eae4ed4..f9aa8bf0e 100644 --- a/Source/Project64-core/Multilanguage.h +++ b/Source/Project64-core/Multilanguage.h @@ -523,7 +523,7 @@ enum LanguageStringID MSG_UNHANDLED_OP = 2022, MSG_NONMAPPED_SPACE = 2023, MSG_SAVE_STATE_HEADER = 2024, - MSG_MSGBOX_TITLE = 2025, + MSG_MSGBOX_ERROR_TITLE = 2025, MSG_PIF2_ERROR = 2026, MSG_PIF2_TITLE = 2027, MSG_PLUGIN_CHANGE = 2028, @@ -558,6 +558,7 @@ enum LanguageStringID MSG_SET_HLE_AUD_MSG = 2057, MSG_FAIL_IMAGE_IPL = 2058, MSG_IPL_REQUIRED = 2059, + MSG_MSGBOX_WARNING_TITLE = 2060, /********************************************************************************* * Android * diff --git a/Source/Project64-core/Multilanguage/LanguageClass.cpp b/Source/Project64-core/Multilanguage/LanguageClass.cpp index d8c070a0b..602e7fa74 100644 --- a/Source/Project64-core/Multilanguage/LanguageClass.cpp +++ b/Source/Project64-core/Multilanguage/LanguageClass.cpp @@ -489,7 +489,8 @@ void CLanguage::LoadDefaultStrings(void) DEF_STR(MSG_UNHANDLED_OP, "Unhandled R4300i opcode at"); DEF_STR(MSG_NONMAPPED_SPACE, "Executing from non-mapped space.\n\nVerify ROM and its settings."); DEF_STR(MSG_SAVE_STATE_HEADER, "This saved state does not appear to match the running ROM.\n\nStates must be saved & loaded between 100% identical ROMs.\nIn particular, the REGION and VERSION need to be the same.\nLoading this state is likely to cause the game and/or emulator to crash.\n\nAre you sure you want to continue loading?"); - DEF_STR(MSG_MSGBOX_TITLE, "Error"); + DEF_STR(MSG_MSGBOX_WARNING_TITLE, "Warning"); + DEF_STR(MSG_MSGBOX_ERROR_TITLE, "Error"); DEF_STR(MSG_PIF2_ERROR, "Copyright sequence not found in LUT. Game will no longer function."); DEF_STR(MSG_PIF2_TITLE, "Copy Protection Failure"); DEF_STR(MSG_PLUGIN_CHANGE, "Changing a plugin requires Project64 to reset a running ROM.\nIf you don't want to lose your place, answer No and save the current state first.\n\nChange plugins and reset ROM now?"); diff --git a/Source/Project64-core/N64System/Interpreter/InterpreterOps.cpp b/Source/Project64-core/N64System/Interpreter/InterpreterOps.cpp index d1647e0f6..0bc60a890 100644 --- a/Source/Project64-core/N64System/Interpreter/InterpreterOps.cpp +++ b/Source/Project64-core/N64System/Interpreter/InterpreterOps.cpp @@ -3006,7 +3006,7 @@ void R4300iOp::UnknownOpcode() strcat(Message, "\n\nDo you wish to enter the debugger ?"); - response = MessageBox(NULL, Message, GS(MSG_MSGBOX_TITLE), MB_YESNO | MB_ICONERROR); + response = MessageBox(NULL, Message, GS(MSG_MSGBOX_ERROR_TITLE), MB_YESNO | MB_ICONERROR); if (response == IDYES) { Enter_R4300i_Commands_Window(); diff --git a/Source/Project64-core/Notification.h b/Source/Project64-core/Notification.h index 176409f47..fd14bfb19 100644 --- a/Source/Project64-core/Notification.h +++ b/Source/Project64-core/Notification.h @@ -17,6 +17,9 @@ public: virtual void FatalError(LanguageStringID StringID) const = 0; //User Feedback + virtual void DisplayWarning(const char * Message) const = 0; + virtual void DisplayWarning(LanguageStringID StringID) const = 0; + virtual void DisplayMessage(int DisplayTime, const char * Message) const = 0; virtual void DisplayMessage(int DisplayTime, LanguageStringID StringID) const = 0; virtual void DisplayMessage2(const char * Message) const = 0; diff --git a/Source/Project64/UserInterface/CheatClassUI.cpp b/Source/Project64/UserInterface/CheatClassUI.cpp index fc5cb35a7..b7196fba6 100644 --- a/Source/Project64/UserInterface/CheatClassUI.cpp +++ b/Source/Project64/UserInterface/CheatClassUI.cpp @@ -301,7 +301,7 @@ int CALLBACK CCheatsUI::CheatAddProc(HWND hDlg, uint32_t uMsg, uint32_t wParam, } if (_stricmp(CheatName.c_str(), NewCheatName.c_str()) == 0) { - g_Notify->DisplayError(GS(MSG_CHEAT_NAME_IN_USE)); + g_Notify->DisplayWarning(GS(MSG_CHEAT_NAME_IN_USE)); SetFocus(GetDlgItem(hDlg, IDC_CODE_NAME)); return true; } diff --git a/Source/Project64/UserInterface/Debugger/Debugger-MemoryDump.cpp b/Source/Project64/UserInterface/Debugger/Debugger-MemoryDump.cpp index 2d2aec9a3..0263c62e4 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-MemoryDump.cpp +++ b/Source/Project64/UserInterface/Debugger/Debugger-MemoryDump.cpp @@ -112,7 +112,7 @@ LRESULT CDumpMemory::OnClicked(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, GetDlgItemText(IDC_FILENAME, FileName, sizeof(FileName)); if (strlen(FileName) == 0) { - g_Notify->DisplayError("Please Choose target file"); + g_Notify->DisplayWarning("Please Choose target file"); ::SetFocus(GetDlgItem(IDC_FILENAME)); return false; } diff --git a/Source/Project64/UserInterface/EnhancementConfig.cpp b/Source/Project64/UserInterface/EnhancementConfig.cpp index f6f038234..4528d100b 100644 --- a/Source/Project64/UserInterface/EnhancementConfig.cpp +++ b/Source/Project64/UserInterface/EnhancementConfig.cpp @@ -577,7 +577,7 @@ LRESULT CEditEnhancement::OnOkCmd(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl } if (_stricmp(Name.c_str(), NewName.c_str()) == 0) { - g_Notify->DisplayError(GS(MSG_CHEAT_NAME_IN_USE)); + g_Notify->DisplayWarning(GS(MSG_CHEAT_NAME_IN_USE)); GetDlgItem(IDC_CODE_NAME).SetFocus(); return true; } diff --git a/Source/Project64/UserInterface/MainMenu.cpp b/Source/Project64/UserInterface/MainMenu.cpp index bcb439e30..d324abb53 100644 --- a/Source/Project64/UserInterface/MainMenu.cpp +++ b/Source/Project64/UserInterface/MainMenu.cpp @@ -128,7 +128,7 @@ void CMainMenu::OnOpenRom(HWND hWnd) // Open Disk if (!CPath(g_Settings->LoadStringVal(File_DiskIPLPath)).Exists() || !g_BaseSystem->RunDiskImage(File.c_str())) { - if (!CPath(g_Settings->LoadStringVal(File_DiskIPLPath)).Exists()) { g_Notify->DisplayError(MSG_IPL_REQUIRED); } + if (!CPath(g_Settings->LoadStringVal(File_DiskIPLPath)).Exists()) { g_Notify->DisplayWarning(MSG_IPL_REQUIRED); } CPath FileNameIPL; const char * Filter = "64DD IPL ROM Image (*.zip, *.7z, *.?64, *.rom, *.usa, *.jap, *.pal, *.bin)\0*.?64;*.zip;*.7z;*.bin;*.rom;*.usa;*.jap;*.pal\0All files (*.*)\0*.*\0"; if (FileNameIPL.SelectFile(hWnd, g_Settings->LoadStringVal(RomList_GameDir).c_str(), Filter, true)) @@ -553,7 +553,7 @@ bool CMainMenu::ProcessMessage(HWND hWnd, DWORD /*FromAccelerator*/, DWORD MenuI { if (!CPath(g_Settings->LoadStringVal(File_DiskIPLPath)).Exists() || !g_BaseSystem->RunDiskImage(FileName.c_str())) { - if (!CPath(g_Settings->LoadStringVal(File_DiskIPLPath)).Exists()) { g_Notify->DisplayError(MSG_IPL_REQUIRED); } + if (!CPath(g_Settings->LoadStringVal(File_DiskIPLPath)).Exists()) { g_Notify->DisplayWarning(MSG_IPL_REQUIRED); } CPath FileNameIPL; const char * Filter = "64DD IPL ROM Image (*.zip, *.7z, *.?64, *.rom, *.usa, *.jap, *.pal, *.bin)\0*.?64;*.zip;*.7z;*.bin;*.rom;*.usa;*.jap;*.pal\0All files (*.*)\0*.*\0"; if (FileNameIPL.SelectFile(hWnd, g_Settings->LoadStringVal(RomList_GameDir).c_str(), Filter, true)) diff --git a/Source/Project64/UserInterface/MainWindow.cpp b/Source/Project64/UserInterface/MainWindow.cpp index 6bdd600e5..adc3d4d22 100644 --- a/Source/Project64/UserInterface/MainWindow.cpp +++ b/Source/Project64/UserInterface/MainWindow.cpp @@ -991,7 +991,7 @@ LRESULT CALLBACK CMainGui::MainGui_Proc(HWND hWnd, DWORD uMsg, DWORD wParam, DWO { if (!CPath(g_Settings->LoadStringVal(File_DiskIPLPath)).Exists() || !g_BaseSystem->RunDiskImage(_this->CurrentedSelectedRom())) { - if (!CPath(g_Settings->LoadStringVal(File_DiskIPLPath)).Exists()) { g_Notify->DisplayError(MSG_IPL_REQUIRED); } + if (!CPath(g_Settings->LoadStringVal(File_DiskIPLPath)).Exists()) { g_Notify->DisplayWarning(MSG_IPL_REQUIRED); } CPath FileName; const char * Filter = "64DD IPL ROM Image (*.zip, *.7z, *.?64, *.rom, *.usa, *.jap, *.pal, *.bin)\0*.?64;*.zip;*.7z;*.bin;*.rom;*.usa;*.jap;*.pal\0All files (*.*)\0*.*\0"; if (FileName.SelectFile(hWnd, g_Settings->LoadStringVal(RomList_GameDir).c_str(), Filter, true)) @@ -1011,7 +1011,7 @@ LRESULT CALLBACK CMainGui::MainGui_Proc(HWND hWnd, DWORD uMsg, DWORD wParam, DWO { if (!CPath(g_Settings->LoadStringVal(File_DiskIPLPath)).Exists() || !g_BaseSystem->RunDiskComboImage(_this->CurrentedSelectedRom(), FileName)) { - if (!CPath(g_Settings->LoadStringVal(File_DiskIPLPath)).Exists()) { g_Notify->DisplayError(MSG_IPL_REQUIRED); } + if (!CPath(g_Settings->LoadStringVal(File_DiskIPLPath)).Exists()) { g_Notify->DisplayWarning(MSG_IPL_REQUIRED); } CPath FileNameIPL; const char * Filter = "64DD IPL ROM Image (*.zip, *.7z, *.?64, *.rom, *.usa, *.jap, *.pal, *.bin)\0*.?64;*.zip;*.7z;*.bin;*.rom;*.usa;*.jap;*.pal\0All files (*.*)\0*.*\0"; if (FileNameIPL.SelectFile(hWnd, g_Settings->LoadStringVal(RomList_GameDir).c_str(), Filter, true)) @@ -1179,7 +1179,7 @@ LRESULT CALLBACK CMainGui::MainGui_Proc(HWND hWnd, DWORD uMsg, DWORD wParam, DWO // Open Disk if (!CPath(g_Settings->LoadStringVal(File_DiskIPLPath)).Exists() || !g_BaseSystem->RunDiskImage(filename)) { - if (!CPath(g_Settings->LoadStringVal(File_DiskIPLPath)).Exists()) { g_Notify->DisplayError(MSG_IPL_REQUIRED); } + if (!CPath(g_Settings->LoadStringVal(File_DiskIPLPath)).Exists()) { g_Notify->DisplayWarning(MSG_IPL_REQUIRED); } CPath FileName; const char * Filter = "64DD IPL ROM Image (*.zip, *.7z, *.?64, *.rom, *.usa, *.jap, *.pal, *.bin)\0*.?64;*.zip;*.7z;*.bin;*.rom;*.usa;*.jap;*.pal\0All files (*.*)\0*.*\0"; if (FileName.SelectFile(hWnd, g_Settings->LoadStringVal(RomList_GameDir).c_str(), Filter, true)) diff --git a/Source/Project64/UserInterface/Notification.cpp b/Source/Project64/UserInterface/Notification.cpp index 2ea0996c5..8a1fbca37 100644 --- a/Source/Project64/UserInterface/Notification.cpp +++ b/Source/Project64/UserInterface/Notification.cpp @@ -49,6 +49,21 @@ void CNotificationImp::WindowMode(void) const InsideFunc = false; } +void CNotificationImp::DisplayWarning(const char * Message) const +{ + HWND Parent = NULL; + if (m_hWnd) + { + Parent = reinterpret_cast<HWND>(m_hWnd->GetWindowHandle()); + } + MessageBoxW(Parent, stdstr(Message).ToUTF16().c_str(), wGS(MSG_MSGBOX_WARNING_TITLE).c_str(), MB_OK | MB_ICONWARNING | MB_SETFOREGROUND); +} + +void CNotificationImp::DisplayWarning(LanguageStringID StringID) const +{ + DisplayWarning(g_Lang->GetString(StringID).c_str()); +} + void CNotificationImp::DisplayError(LanguageStringID StringID) const { DisplayError(g_Lang->GetString(StringID).c_str()); @@ -64,7 +79,7 @@ void CNotificationImp::DisplayError(const char * Message) const { Parent = reinterpret_cast<HWND>(m_hWnd->GetWindowHandle()); } - MessageBoxW(Parent, stdstr(Message).ToUTF16().c_str(), wGS(MSG_MSGBOX_TITLE).c_str(), MB_OK | MB_ICONERROR | MB_SETFOREGROUND); + MessageBoxW(Parent, stdstr(Message).ToUTF16().c_str(), wGS(MSG_MSGBOX_ERROR_TITLE).c_str(), MB_OK | MB_ICONERROR | MB_SETFOREGROUND); } void CNotificationImp::DisplayMessage(int DisplayTime, LanguageStringID StringID) const @@ -125,7 +140,7 @@ bool CNotificationImp::AskYesNoQuestion(const char * Question) const { Parent = reinterpret_cast<HWND>(m_hWnd->GetWindowHandle()); } - int result = MessageBoxW(Parent, stdstr(Question).ToUTF16().c_str(), wGS(MSG_MSGBOX_TITLE).c_str(), MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON2 | MB_SETFOREGROUND); + int result = MessageBoxW(Parent, stdstr(Question).ToUTF16().c_str(), wGS(MSG_MSGBOX_WARNING_TITLE).c_str(), MB_YESNO | MB_ICONWARNING | MB_DEFBUTTON2 | MB_SETFOREGROUND); return result == IDYES; } diff --git a/Source/Project64/UserInterface/Notification.h b/Source/Project64/UserInterface/Notification.h index a48f65cdc..02fcb66d6 100644 --- a/Source/Project64/UserInterface/Notification.h +++ b/Source/Project64/UserInterface/Notification.h @@ -35,6 +35,9 @@ public: virtual void FatalError(LanguageStringID StringID) const; //User Feedback + virtual void DisplayWarning(const char * Message) const; + virtual void DisplayWarning(LanguageStringID StringID) const; + virtual void DisplayMessage(int DisplayTime, const char * Message) const; virtual void DisplayMessage(int DisplayTime, LanguageStringID StringID) const; diff --git a/Source/Project64/UserInterface/RomBrowserClass.cpp b/Source/Project64/UserInterface/RomBrowserClass.cpp index e6281fcb9..0bfd6713e 100644 --- a/Source/Project64/UserInterface/RomBrowserClass.cpp +++ b/Source/Project64/UserInterface/RomBrowserClass.cpp @@ -813,7 +813,7 @@ void CRomBrowser::RomList_OpenRom(uint32_t /*pnmh*/) { if (!CPath(g_Settings->LoadStringVal(File_DiskIPLPath)).Exists() || !g_BaseSystem->RunDiskImage(pRomInfo->szFullFileName)) { - if (!CPath(g_Settings->LoadStringVal(File_DiskIPLPath)).Exists()) { g_Notify->DisplayError(MSG_IPL_REQUIRED); } + if (!CPath(g_Settings->LoadStringVal(File_DiskIPLPath)).Exists()) { g_Notify->DisplayWarning(MSG_IPL_REQUIRED); } CPath FileName; const char * Filter = "64DD IPL ROM Image (*.zip, *.7z, *.?64, *.rom, *.usa, *.jap, *.pal, *.bin)\0*.?64;*.zip;*.7z;*.bin;*.rom;*.usa;*.jap;*.pal\0All files (*.*)\0*.*\0"; if (FileName.SelectFile(m_MainWindow, g_Settings->LoadStringVal(RomList_GameDir).c_str(), Filter, true)) diff --git a/Source/Project64/UserInterface/Settings/SettingsPage-Game-Plugin.cpp b/Source/Project64/UserInterface/Settings/SettingsPage-Game-Plugin.cpp index 64f3c5d27..df31d4754 100644 --- a/Source/Project64/UserInterface/Settings/SettingsPage-Game-Plugin.cpp +++ b/Source/Project64/UserInterface/Settings/SettingsPage-Game-Plugin.cpp @@ -312,8 +312,7 @@ void CGamePluginPage::HleGfxChanged(UINT /*Code*/, int id, HWND /*ctl*/) } if ((Button->GetCheck() & BST_CHECKED) == 0) { - int res = MessageBoxW(m_hWnd, wGS(MSG_SET_LLE_GFX_MSG).c_str(), wGS(MSG_SET_LLE_GFX_TITLE).c_str(), MB_YESNO | MB_ICONWARNING); - if (res != IDYES) + if (!g_Notify->AskYesNoQuestion(g_Lang->GetString(MSG_SET_LLE_GFX_MSG).c_str())) { Button->SetCheck(BST_CHECKED); return; @@ -335,9 +334,8 @@ void CGamePluginPage::HleAudioChanged(UINT /*Code*/, int id, HWND /*ctl*/) continue; } if ((Button->GetCheck() & BST_CHECKED) != 0) - { - int res = MessageBoxW(m_hWnd, wGS(MSG_SET_HLE_AUD_MSG).c_str(), wGS(MSG_SET_HLE_AUD_TITLE).c_str(), MB_ICONWARNING | MB_YESNO); - if (res != IDYES) + { + if (!g_Notify->AskYesNoQuestion(g_Lang->GetString(MSG_SET_HLE_AUD_MSG).c_str())) { Button->SetCheck(BST_UNCHECKED); return; diff --git a/Source/Project64/UserInterface/Settings/SettingsPage-KeyboardShortcuts.cpp b/Source/Project64/UserInterface/Settings/SettingsPage-KeyboardShortcuts.cpp index 23f591203..aa15acd2f 100644 --- a/Source/Project64/UserInterface/Settings/SettingsPage-KeyboardShortcuts.cpp +++ b/Source/Project64/UserInterface/Settings/SettingsPage-KeyboardShortcuts.cpp @@ -137,13 +137,13 @@ void COptionsShortCutsPage::OnRemoveClicked(UINT /*Code*/, int /*id*/, HWND /*ct HTREEITEM hSelectedItem = m_MenuItems.GetSelectedItem(); if (hSelectedItem == NULL) { - g_Notify->DisplayError(GS(MSG_NO_SEL_SHORTCUT)); + g_Notify->DisplayWarning(GS(MSG_NO_SEL_SHORTCUT)); return; } HTREEITEM hParent = m_MenuItems.GetParentItem(hSelectedItem); if (hParent == NULL) { - g_Notify->DisplayError(GS(MSG_NO_SEL_SHORTCUT)); + g_Notify->DisplayWarning(GS(MSG_NO_SEL_SHORTCUT)); return; } @@ -153,7 +153,7 @@ void COptionsShortCutsPage::OnRemoveClicked(UINT /*Code*/, int /*id*/, HWND /*ct int index = m_CurrentKeys.GetCurSel(); if (index < 0) { - g_Notify->DisplayError(GS(MSG_NO_SEL_SHORTCUT)); + g_Notify->DisplayWarning(GS(MSG_NO_SEL_SHORTCUT)); return; } ShortCut->RemoveItem((CMenuShortCutKey *)m_CurrentKeys.GetItemData(index)); @@ -176,7 +176,7 @@ void COptionsShortCutsPage::OnAssignClicked(UINT /*Code*/, int /*id*/, HWND /*ct int index = m_VirtualKeyList.GetCurSel(); if (index < 0) { - g_Notify->DisplayError(GS(MSG_NO_SHORTCUT_SEL)); + g_Notify->DisplayWarning(GS(MSG_NO_SHORTCUT_SEL)); return; } @@ -190,13 +190,13 @@ void COptionsShortCutsPage::OnAssignClicked(UINT /*Code*/, int /*id*/, HWND /*ct HTREEITEM hSelectedItem = m_MenuItems.GetSelectedItem(); if (hSelectedItem == NULL) { - g_Notify->DisplayError(GS(MSG_NO_MENUITEM_SEL)); + g_Notify->DisplayWarning(GS(MSG_NO_MENUITEM_SEL)); return; } HTREEITEM hParent = m_MenuItems.GetParentItem(hSelectedItem); if (hParent == NULL) { - g_Notify->DisplayError(GS(MSG_NO_MENUITEM_SEL)); + g_Notify->DisplayWarning(GS(MSG_NO_MENUITEM_SEL)); return; } @@ -204,7 +204,7 @@ void COptionsShortCutsPage::OnAssignClicked(UINT /*Code*/, int /*id*/, HWND /*ct LanguageStringID strid = m_ShortCuts.GetMenuItemName(key, bCtrl, bAlt, bShift, RunningState); if (strid != EMPTY_STRING) { - g_Notify->DisplayError(GS(MSG_MENUITEM_ASSIGNED)); + g_Notify->DisplayWarning(GS(MSG_MENUITEM_ASSIGNED)); return; } diff --git a/Source/Project64/UserInterface/Settings/SettingsPage-Plugin.cpp b/Source/Project64/UserInterface/Settings/SettingsPage-Plugin.cpp index c6697dd52..84f6f047c 100644 --- a/Source/Project64/UserInterface/Settings/SettingsPage-Plugin.cpp +++ b/Source/Project64/UserInterface/Settings/SettingsPage-Plugin.cpp @@ -296,8 +296,7 @@ void COptionPluginPage::HleGfxChanged(UINT /*Code*/, int id, HWND /*ctl*/) } if ((Button->GetCheck() & BST_CHECKED) == 0) { - int res = MessageBoxW(m_hWnd, wGS(MSG_SET_LLE_GFX_MSG).c_str(), wGS(MSG_SET_LLE_GFX_TITLE).c_str(), MB_YESNO | MB_ICONWARNING); - if (res != IDYES) + if (!g_Notify->AskYesNoQuestion(g_Lang->GetString(MSG_SET_LLE_GFX_MSG).c_str())) { Button->SetCheck(BST_CHECKED); return; @@ -320,8 +319,7 @@ void COptionPluginPage::HleAudioChanged(UINT /*Code*/, int id, HWND /*ctl*/) } if ((Button->GetCheck() & BST_CHECKED) != 0) { - int res = MessageBoxW(m_hWnd, wGS(MSG_SET_HLE_AUD_MSG).c_str(), wGS(MSG_SET_HLE_AUD_TITLE).c_str(), MB_ICONWARNING | MB_YESNO); - if (res != IDYES) + if (!g_Notify->AskYesNoQuestion(g_Lang->GetString(MSG_SET_HLE_AUD_MSG).c_str())) { Button->SetCheck(BST_UNCHECKED); return; diff --git a/Source/Project64/main.cpp b/Source/Project64/main.cpp index e3b160b93..51bd98369 100644 --- a/Source/Project64/main.cpp +++ b/Source/Project64/main.cpp @@ -39,7 +39,7 @@ int WINAPI WinMain(HINSTANCE /*hInstance*/, HINSTANCE /*hPrevInstance*/, LPSTR / //Ext is *.ndd, so it should be a disk file. if (!CPath(g_Settings->LoadStringVal(File_DiskIPLPath)).Exists() || !g_BaseSystem->RunDiskImage(g_Settings->LoadStringVal(Cmd_RomFile).c_str())) { - if (!CPath(g_Settings->LoadStringVal(File_DiskIPLPath)).Exists()) { g_Notify->DisplayError(MSG_IPL_REQUIRED); } + if (!CPath(g_Settings->LoadStringVal(File_DiskIPLPath)).Exists()) { g_Notify->DisplayWarning(MSG_IPL_REQUIRED); } CPath FileNameIPL; const char * Filter = "64DD IPL ROM Image (*.zip, *.7z, *.?64, *.rom, *.usa, *.jap, *.pal, *.bin)\0*.?64;*.zip;*.7z;*.bin;*.rom;*.usa;*.jap;*.pal\0All files (*.*)\0*.*\0"; if (FileNameIPL.SelectFile(NULL, g_Settings->LoadStringVal(RomList_GameDir).c_str(), Filter, true)) From 2555485eb9d1eb03263ccbd6213bcc2082061bd3 Mon Sep 17 00:00:00 2001 From: oddMLan <oddMLan2@gmail.com> Date: Sun, 17 Mar 2019 19:45:05 -0700 Subject: [PATCH 02/15] [Debugger UI] Center CPU Exception Breakpoints dialog Also fix capitalization in menu --- Source/Project64/UserInterface/MainMenu.cpp | 2 +- Source/Project64/UserInterface/UIResources.rc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/Project64/UserInterface/MainMenu.cpp b/Source/Project64/UserInterface/MainMenu.cpp index d324abb53..1a13ec2ce 100644 --- a/Source/Project64/UserInterface/MainMenu.cpp +++ b/Source/Project64/UserInterface/MainMenu.cpp @@ -1152,7 +1152,7 @@ void CMainMenu::FillOutMenu(HMENU hMenu) /* Debug - Exception breakpoints *******************/ - Item.Reset(ID_DEBUGGER_EXCBREAKPOINTS, EMPTY_STRING, EMPTY_STDSTR, NULL, L"CPU Exception breakpoints..."); + Item.Reset(ID_DEBUGGER_EXCBREAKPOINTS, EMPTY_STRING, EMPTY_STDSTR, NULL, L"CPU Exception Breakpoints..."); //Item.SetItemEnabled(CPURunning); DebugMenu.push_back(Item); diff --git a/Source/Project64/UserInterface/UIResources.rc b/Source/Project64/UserInterface/UIResources.rc index 61a26fd2a..7673efe25 100644 --- a/Source/Project64/UserInterface/UIResources.rc +++ b/Source/Project64/UserInterface/UIResources.rc @@ -1333,7 +1333,7 @@ BEGIN END IDD_Debugger_ExceptionBP DIALOGEX 0, 0, 213, 107 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "CPU Exception Breakpoints" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN From 564ac883a4d02f79f5d0096a0d076b3d4130fedb Mon Sep 17 00:00:00 2001 From: oddMLan <oddMLan2@gmail.com> Date: Mon, 15 Apr 2019 09:35:46 -0700 Subject: [PATCH 03/15] Revert "Delete Project64.exe.manifest" This reverts commit 3a7de999309d2afe3660527a4e34b3a38af173ea. --- Source/Project64/Project64.exe.manifest | 28 ++++++++++++++++++++++ Source/Project64/Project64.vcxproj | 5 +++- Source/Project64/Project64.vcxproj.filters | 3 +++ 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 Source/Project64/Project64.exe.manifest diff --git a/Source/Project64/Project64.exe.manifest b/Source/Project64/Project64.exe.manifest new file mode 100644 index 000000000..5cfc9b622 --- /dev/null +++ b/Source/Project64/Project64.exe.manifest @@ -0,0 +1,28 @@ +<?xml version='1.0' encoding='UTF-8' standalone='yes'?> +<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> + <trustInfo xmlns='urn:schemas-microsoft-com:asm.v3'> + <security> + <requestedPrivileges> + <requestedExecutionLevel level='asInvoker' uiAccess='false' /> + </requestedPrivileges> + </security> + </trustInfo> + <assemblyIdentity + version='2.1.0.1' + processorArchitecture='x86' + name='Project64' + type='win32' + /> + <dependency> + <dependentAssembly> + <assemblyIdentity + type='win32' + name='Microsoft.Windows.Common-Controls' + version='6.0.0.0' + processorArchitecture='X86' + publicKeyToken='6595b64144ccf1df' + language='*' + /> + </dependentAssembly> + </dependency> +</assembly> diff --git a/Source/Project64/Project64.vcxproj b/Source/Project64/Project64.vcxproj index 880497dbf..7ba01bbe8 100644 --- a/Source/Project64/Project64.vcxproj +++ b/Source/Project64/Project64.vcxproj @@ -32,7 +32,7 @@ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <PropertyGroup> - <GenerateManifest>true</GenerateManifest> + <GenerateManifest>false</GenerateManifest> </PropertyGroup> <ItemDefinitionGroup> <Link> @@ -247,6 +247,9 @@ <ItemGroup> <ResourceCompile Include="UserInterface\UIResources.rc" /> </ItemGroup> + <ItemGroup> + <Manifest Include="Project64.exe.manifest" /> + </ItemGroup> <ProjectExtensions> <VisualStudio> <UserProperties RESOURCE_FILE="UserInterface\UIResources.rc" /> diff --git a/Source/Project64/Project64.vcxproj.filters b/Source/Project64/Project64.vcxproj.filters index a415c7c12..8d220cd82 100644 --- a/Source/Project64/Project64.vcxproj.filters +++ b/Source/Project64/Project64.vcxproj.filters @@ -499,4 +499,7 @@ <Filter>Resource Files</Filter> </ResourceCompile> </ItemGroup> + <ItemGroup> + <Manifest Include="Project64.exe.manifest" /> + </ItemGroup> </Project> \ No newline at end of file From b377f48440f6d03e57d7c565d32ba4087fe6a6ff Mon Sep 17 00:00:00 2001 From: oddMLan <oddMLan2@gmail.com> Date: Mon, 15 Apr 2019 10:24:42 -0700 Subject: [PATCH 04/15] Use Per monitor scaling where supported Fixes blurriness in higher DPI systems --- Source/Project64/Project64.exe.manifest | 41 +++++++++++-------------- 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/Source/Project64/Project64.exe.manifest b/Source/Project64/Project64.exe.manifest index 5cfc9b622..275e30b0a 100644 --- a/Source/Project64/Project64.exe.manifest +++ b/Source/Project64/Project64.exe.manifest @@ -1,28 +1,23 @@ -<?xml version='1.0' encoding='UTF-8' standalone='yes'?> -<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> - <trustInfo xmlns='urn:schemas-microsoft-com:asm.v3'> +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"> + <dependency> + <dependentAssembly> + <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"></assemblyIdentity> + </dependentAssembly> + </dependency> + <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> - <requestedExecutionLevel level='asInvoker' uiAccess='false' /> + <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel> </requestedPrivileges> </security> </trustInfo> - <assemblyIdentity - version='2.1.0.1' - processorArchitecture='x86' - name='Project64' - type='win32' - /> - <dependency> - <dependentAssembly> - <assemblyIdentity - type='win32' - name='Microsoft.Windows.Common-Controls' - version='6.0.0.0' - processorArchitecture='X86' - publicKeyToken='6595b64144ccf1df' - language='*' - /> - </dependentAssembly> - </dependency> -</assembly> + <asmv3:application> + <asmv3:windowsSettings> + <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware> + <!-- Fallback for Windows XP, Vista, 7 and 8 --> + <dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">permonitorv2,permonitor</dpiAwareness> + <!-- Win10 Only: Falls back to per-monitor if per-monitor v2 is not supported --> + </asmv3:windowsSettings> + </asmv3:application> +</assembly> \ No newline at end of file From a27b3440e015b4f39873f0042915d90a8c4c368a Mon Sep 17 00:00:00 2001 From: oddMLan <oddMLan2@gmail.com> Date: Mon, 15 Apr 2019 20:48:33 -0700 Subject: [PATCH 05/15] Get rid of ugly WS_EX_CLIENTEDGE --- Source/Project64/UserInterface/UIResources.rc | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Source/Project64/UserInterface/UIResources.rc b/Source/Project64/UserInterface/UIResources.rc index 7673efe25..507b1e463 100644 --- a/Source/Project64/UserInterface/UIResources.rc +++ b/Source/Project64/UserInterface/UIResources.rc @@ -176,27 +176,27 @@ BEGIN DEFPUSHBUTTON "&Close",IDC_CLOSE_BUTTON,169,186,64,14 GROUPBOX "",IDC_STATIC,6,5,228,177 LTEXT "ROM Name:",IDC_ROM_NAME,11,16,64,10 - EDITTEXT IDC_INFO_ROMNAME,77,15,153,13,ES_AUTOHSCROLL | ES_READONLY,WS_EX_CLIENTEDGE | WS_EX_STATICEDGE + EDITTEXT IDC_INFO_ROMNAME,77,15,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_EX_STATICEDGE LTEXT "File Name:",IDC_FILE_NAME,11,31,64,10 - EDITTEXT IDC_INFO_FILENAME,77,30,153,13,ES_AUTOHSCROLL | ES_READONLY,WS_EX_CLIENTEDGE | WS_EX_STATICEDGE + EDITTEXT IDC_INFO_FILENAME,77,30,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_EX_STATICEDGE LTEXT "Rom Size:",IDC_ROM_SIZE,11,74,64,10 - EDITTEXT IDC_INFO_ROMSIZE,77,74,153,13,ES_AUTOHSCROLL | ES_READONLY,WS_EX_CLIENTEDGE | WS_EX_STATICEDGE + EDITTEXT IDC_INFO_ROMSIZE,77,74,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_EX_STATICEDGE LTEXT "Cartridge ID:",IDC_CART_ID,11,90,64,10 - EDITTEXT IDC_INFO_CARTID,77,89,153,13,ES_AUTOHSCROLL | ES_READONLY,WS_EX_CLIENTEDGE | WS_EX_STATICEDGE + EDITTEXT IDC_INFO_CARTID,77,89,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_EX_STATICEDGE LTEXT "Manufacturer:",IDC_MANUFACTURER,11,106,64,10 - EDITTEXT IDC_INFO_MANUFACTURER,77,104,153,13,ES_AUTOHSCROLL | ES_READONLY,WS_EX_CLIENTEDGE | WS_EX_STATICEDGE + EDITTEXT IDC_INFO_MANUFACTURER,77,104,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_EX_STATICEDGE LTEXT "Country:",IDC_COUNTRY,11,122,64,10 - EDITTEXT IDC_INFO_COUNTRY,77,119,153,13,ES_AUTOHSCROLL | ES_READONLY,WS_EX_CLIENTEDGE | WS_EX_STATICEDGE + EDITTEXT IDC_INFO_COUNTRY,77,119,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_EX_STATICEDGE LTEXT "CRC1:",IDC_CRC1,11,135,64,10 - EDITTEXT IDC_INFO_CRC1,77,134,153,13,ES_AUTOHSCROLL | ES_READONLY,WS_EX_CLIENTEDGE | WS_EX_STATICEDGE + EDITTEXT IDC_INFO_CRC1,77,134,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_EX_STATICEDGE LTEXT "CRC2:",IDC_CRC2,11,151,64,10 - EDITTEXT IDC_INFO_CRC2,77,149,153,13,ES_AUTOHSCROLL | ES_READONLY,WS_EX_CLIENTEDGE | WS_EX_STATICEDGE + EDITTEXT IDC_INFO_CRC2,77,149,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_EX_STATICEDGE LTEXT "CIC Chip:",IDC_CIC_CHIP,11,167,64,10 - EDITTEXT IDC_INFO_CIC,77,164,153,13,ES_AUTOHSCROLL | ES_READONLY,WS_EX_CLIENTEDGE | WS_EX_STATICEDGE + EDITTEXT IDC_INFO_CIC,77,164,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_EX_STATICEDGE LTEXT "Location:",IDC_LOCATION,11,45,64,10 - EDITTEXT IDC_INFO_LOCATION,77,45,153,13,ES_AUTOHSCROLL | ES_READONLY,WS_EX_CLIENTEDGE | WS_EX_STATICEDGE + EDITTEXT IDC_INFO_LOCATION,77,45,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_EX_STATICEDGE LTEXT "MD5:",IDC_ROM_MD5,11,60,64,10 - EDITTEXT IDC_INFO_MD5,77,59,153,13,ES_AUTOHSCROLL | ES_READONLY,WS_EX_CLIENTEDGE | WS_EX_STATICEDGE + EDITTEXT IDC_INFO_MD5,77,59,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_EX_STATICEDGE END IDD_Settings_GameGeneral DIALOGEX 0, 0, 218, 169 @@ -294,8 +294,8 @@ BEGIN EDITTEXT IDC_CHEAT_OPTIONS,82,50,101,90,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_DISABLED | WS_VSCROLL | WS_HSCROLL GROUPBOX "Cheat Notes",IDC_CHEATNOTES,2,150,188,45 EDITTEXT IDC_NOTES,7,160,176,30,ES_MULTILINE | ES_WANTRETURN | WS_VSCROLL - PUSHBUTTON "New Cheat",IDC_NEWCHEAT,21,198,70,15,0,WS_EX_CLIENTEDGE - PUSHBUTTON "Add Cheat",IDC_ADD,98,198,70,15,WS_DISABLED,WS_EX_CLIENTEDGE + PUSHBUTTON "New Cheat",IDC_NEWCHEAT,21,198,70,15,0 + PUSHBUTTON "Add Cheat",IDC_ADD,98,198,70,15,WS_DISABLED END IDD_Cheats_CodeEx DIALOGEX 0, 0, 186, 153 From b42e61f50537e86edabb52ba2e0e81634890d6b6 Mon Sep 17 00:00:00 2001 From: oddMLan <oddMLan2@gmail.com> Date: Mon, 15 Apr 2019 20:55:49 -0700 Subject: [PATCH 06/15] Remove black border around Cheat separator button --- Source/Project64/UserInterface/UIResources.rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Project64/UserInterface/UIResources.rc b/Source/Project64/UserInterface/UIResources.rc index 507b1e463..0d61669f2 100644 --- a/Source/Project64/UserInterface/UIResources.rc +++ b/Source/Project64/UserInterface/UIResources.rc @@ -264,7 +264,7 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_FIXEDSYS | DS_CENTER | CAPTION "Cheats" FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - PUSHBUTTON "Button1",IDC_STATE,195,5,20,20,BS_ICON | BS_FLAT,WS_EX_TRANSPARENT + PUSHBUTTON "Button1",IDC_STATE,195,5,20,20,BS_ICON | WS_EX_TRANSPARENT END IDD_Cheats_List DIALOGEX 0, 0, 201, 221 From d83c8597b65587aa4c2f8850405a151f4eacfa56 Mon Sep 17 00:00:00 2001 From: oddMLan <oddMLan2@gmail.com> Date: Thu, 18 Apr 2019 14:10:04 -0700 Subject: [PATCH 07/15] [Debugger] Make Debugger DPI-Aware Thanks @Shygoo for the class code --- .../UserInterface/Debugger/DebugDialog.h | 20 +++++++++++++++++++ .../Debugger/Debugger-CPULogView.cpp | 2 +- .../Debugger/Debugger-CPULogView.h | 4 ++-- .../Debugger/Debugger-Commands.cpp | 2 +- .../Debugger/Debugger-Commands.h | 2 +- .../Debugger/Debugger-DMALogView.h | 2 +- .../Debugger/Debugger-MemorySearch.cpp | 4 ++-- .../Debugger/Debugger-MemorySearch.h | 6 +++--- .../UserInterface/Debugger/Debugger-Scripts.h | 2 +- .../Debugger/Debugger-StackTrace.h | 2 +- .../Debugger/Debugger-StackView.h | 2 +- .../UserInterface/Debugger/Debugger-Symbols.h | 2 +- 12 files changed, 35 insertions(+), 15 deletions(-) diff --git a/Source/Project64/UserInterface/Debugger/DebugDialog.h b/Source/Project64/UserInterface/Debugger/DebugDialog.h index 5e3e327b0..f766bbd86 100644 --- a/Source/Project64/UserInterface/Debugger/DebugDialog.h +++ b/Source/Project64/UserInterface/Debugger/DebugDialog.h @@ -123,3 +123,23 @@ private: LONG m_SaveWndTop; LONG m_SaveWndLeft; }; + +class CListViewCtrlVarDPI : public CListViewCtrl +{ +private: + float m_ScaleX; + +public: + CListViewCtrlVarDPI() : + CListViewCtrl() + { + HDC screen = ::GetDC(0); + m_ScaleX = GetDeviceCaps(screen, LOGPIXELSX) / 96.0f; + ::ReleaseDC(0, screen); + } + + BOOL SetColumnWidth(int nColumn, int nWidth) + { + return CListViewCtrl::SetColumnWidth(nColumn, nWidth * m_ScaleX); + } +}; \ No newline at end of file diff --git a/Source/Project64/UserInterface/Debugger/Debugger-CPULogView.cpp b/Source/Project64/UserInterface/Debugger/Debugger-CPULogView.cpp index 0d68c149c..7ca6bd94f 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-CPULogView.cpp +++ b/Source/Project64/UserInterface/Debugger/Debugger-CPULogView.cpp @@ -412,7 +412,7 @@ void CDebugCPULogView::Export(void) // util -int CDebugCPULogView::GetNumVisibleRows(CListViewCtrl& list) +int CDebugCPULogView::GetNumVisibleRows(CListViewCtrlVarDPI& list) { CHeaderCtrl header = list.GetHeader(); CRect listRect, headRect; diff --git a/Source/Project64/UserInterface/Debugger/Debugger-CPULogView.h b/Source/Project64/UserInterface/Debugger/Debugger-CPULogView.h index f54d449ae..e1a0767aa 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-CPULogView.h +++ b/Source/Project64/UserInterface/Debugger/Debugger-CPULogView.h @@ -22,7 +22,7 @@ private: int m_RowHeight; int m_LogStartIndex; - CListViewCtrl m_CPUListView; + CListViewCtrlVarDPI m_CPUListView; CEdit m_StateInfoEdit; CEditNumber32 m_BuffSizeEdit; CButton m_EnabledChk; @@ -50,7 +50,7 @@ private: void ShowRegStates(size_t stateIndex); void Export(void); - int GetNumVisibleRows(CListViewCtrl& list); + int GetNumVisibleRows(CListViewCtrlVarDPI& list); bool MouseHovering(WORD ctrlId, int xMargin = 0, int yMargin = 0); BEGIN_MSG_MAP_EX(CDebugCPULogView) diff --git a/Source/Project64/UserInterface/Debugger/Debugger-Commands.cpp b/Source/Project64/UserInterface/Debugger/Debugger-Commands.cpp index 33db63dcc..92fef2526 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-Commands.cpp +++ b/Source/Project64/UserInterface/Debugger/Debugger-Commands.cpp @@ -21,7 +21,7 @@ void CCommandList::Attach(HWND hWndNew) { - CListViewCtrl::Attach(hWndNew); + CListViewCtrlVarDPI::Attach(hWndNew); ModifyStyle(LVS_OWNERDRAWFIXED, 0, 0); SetExtendedListViewStyle(LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER | LVS_EX_LABELTIP); diff --git a/Source/Project64/UserInterface/Debugger/Debugger-Commands.h b/Source/Project64/UserInterface/Debugger/Debugger-Commands.h index 0841a5e35..ed2550ce8 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-Commands.h +++ b/Source/Project64/UserInterface/Debugger/Debugger-Commands.h @@ -18,7 +18,7 @@ #include <Project64/UserInterface/WTLControls/TooltipDialog.h> class CCommandList : - public CWindowImpl<CCommandList, CListViewCtrl> + public CWindowImpl<CCommandList, CListViewCtrlVarDPI> { public: enum diff --git a/Source/Project64/UserInterface/Debugger/Debugger-DMALogView.h b/Source/Project64/UserInterface/Debugger/Debugger-DMALogView.h index d3a07a817..07f3e56ad 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-DMALogView.h +++ b/Source/Project64/UserInterface/Debugger/Debugger-DMALogView.h @@ -44,7 +44,7 @@ private: // Return true if entry meets requirements bool FilterEntry(int dmaLogIndex); - CListViewCtrl m_DMAList; + CListViewCtrlVarDPI m_DMAList; CEdit m_DMARamEdit; CEdit m_DMARomEdit; CStatic m_BlockInfo; diff --git a/Source/Project64/UserInterface/Debugger/Debugger-MemorySearch.cpp b/Source/Project64/UserInterface/Debugger/Debugger-MemorySearch.cpp index fc35096c1..033da7bf5 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-MemorySearch.cpp +++ b/Source/Project64/UserInterface/Debugger/Debugger-MemorySearch.cpp @@ -1487,7 +1487,7 @@ void CDebugMemorySearch::SeparatorMoveCtrl(WORD ctrlId, int yChange, bool bResiz ::InvalidateRect(hControl, NULL, true); } -int CDebugMemorySearch::GetNumVisibleRows(CListViewCtrl& list) +int CDebugMemorySearch::GetNumVisibleRows(CListViewCtrlVarDPI& list) { CHeaderCtrl header = list.GetHeader(); CRect listRect, headRect; @@ -2139,7 +2139,7 @@ void CDebugMemorySearch::LoadWatchList(void) } -void CDebugMemorySearch::FixListHeader(CListViewCtrl& listCtrl) +void CDebugMemorySearch::FixListHeader(CListViewCtrlVarDPI& listCtrl) { CRect listRect, headRect; CHeaderCtrl listHead = listCtrl.GetHeader(); diff --git a/Source/Project64/UserInterface/Debugger/Debugger-MemorySearch.h b/Source/Project64/UserInterface/Debugger/Debugger-MemorySearch.h index 035f32e64..61b38efe9 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-MemorySearch.h +++ b/Source/Project64/UserInterface/Debugger/Debugger-MemorySearch.h @@ -241,10 +241,10 @@ private: CPath GetWatchListPath(void); /* generic ui util */ - void FixListHeader(CListViewCtrl& listCtrl); + void FixListHeader(CListViewCtrlVarDPI& listCtrl); void SetComboBoxSelByData(CComboBox& cb, DWORD_PTR data); bool MouseHovering(WORD ctrlId, int hMargin = 0, int vMargin = 0); - int GetNumVisibleRows(CListViewCtrl& list); + int GetNumVisibleRows(CListViewCtrlVarDPI& list); /*******************/ bool m_bJalSelected; @@ -261,7 +261,7 @@ private: CEditMixed m_SearchValue; CEditNumber32 m_AddrStart, m_AddrEnd; CComboBox m_SearchTypeOptions, m_ValueTypeOptions; - CListViewCtrl m_ResultsListCtrl, m_WatchListCtrl; + CListViewCtrlVarDPI m_ResultsListCtrl, m_WatchListCtrl; CScrollBar m_ResultsScrollbar, m_WatchListScrollbar; CButton m_PhysicalCheckbox, m_HexCheckbox; CButton m_UnsignedCheckbox, m_IgnoreCaseCheckbox, m_UnkEncodingCheckbox; diff --git a/Source/Project64/UserInterface/Debugger/Debugger-Scripts.h b/Source/Project64/UserInterface/Debugger/Debugger-Scripts.h index c65d343b5..4377a65bd 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-Scripts.h +++ b/Source/Project64/UserInterface/Debugger/Debugger-Scripts.h @@ -13,7 +13,7 @@ #include "DebuggerUI.h" #include "ScriptSystem.h" -class CScriptList : public CListViewCtrl +class CScriptList : public CListViewCtrlVarDPI { public: BEGIN_MSG_MAP_EX(CScriptList) diff --git a/Source/Project64/UserInterface/Debugger/Debugger-StackTrace.h b/Source/Project64/UserInterface/Debugger/Debugger-StackTrace.h index a7f3f5681..dea72b697 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-StackTrace.h +++ b/Source/Project64/UserInterface/Debugger/Debugger-StackTrace.h @@ -44,7 +44,7 @@ private: HANDLE m_AutoRefreshThread; static DWORD WINAPI AutoRefreshProc(void* _this); - CListViewCtrl m_List; + CListViewCtrlVarDPI m_List; LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/); LRESULT OnActivate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); diff --git a/Source/Project64/UserInterface/Debugger/Debugger-StackView.h b/Source/Project64/UserInterface/Debugger/Debugger-StackView.h index f1b1fe3f9..479fe634a 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-StackView.h +++ b/Source/Project64/UserInterface/Debugger/Debugger-StackView.h @@ -24,7 +24,7 @@ public: void Refresh(); private: - CListViewCtrl m_StackList; + CListViewCtrlVarDPI m_StackList; CStatic m_SPStatic; LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); diff --git a/Source/Project64/UserInterface/Debugger/Debugger-Symbols.h b/Source/Project64/UserInterface/Debugger/Debugger-Symbols.h index 06ccb71e5..bfbc90176 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-Symbols.h +++ b/Source/Project64/UserInterface/Debugger/Debugger-Symbols.h @@ -20,7 +20,7 @@ class CDebugSymbols : public CDialogResize<CDebugSymbols> { private: - CListViewCtrl m_SymbolsListView; + CListViewCtrlVarDPI m_SymbolsListView; CAddSymbolDlg m_AddSymbolDlg; HANDLE m_AutoRefreshThread; From d21e7c8684dbbcd6d92b3b15f860b877b1dc6eab Mon Sep 17 00:00:00 2001 From: oddMLan <oddMLan2@gmail.com> Date: Thu, 18 Apr 2019 15:35:54 -0700 Subject: [PATCH 08/15] Fix warning --- Source/Project64/UserInterface/Debugger/DebugDialog.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Project64/UserInterface/Debugger/DebugDialog.h b/Source/Project64/UserInterface/Debugger/DebugDialog.h index f766bbd86..170ea80a6 100644 --- a/Source/Project64/UserInterface/Debugger/DebugDialog.h +++ b/Source/Project64/UserInterface/Debugger/DebugDialog.h @@ -140,6 +140,6 @@ public: BOOL SetColumnWidth(int nColumn, int nWidth) { - return CListViewCtrl::SetColumnWidth(nColumn, nWidth * m_ScaleX); + return CListViewCtrl::SetColumnWidth(nColumn, int (nWidth * m_ScaleX)); } }; \ No newline at end of file From df9967b782e330b6009d9f94c5a1351d7ce173b3 Mon Sep 17 00:00:00 2001 From: oddMLan <oddMLan2@gmail.com> Date: Thu, 18 Apr 2019 16:29:07 -0700 Subject: [PATCH 09/15] [Debugger] Change Commands and Registers font to Lucida Console --- .../Debugger/Debugger-Commands.cpp | 8 +++--- Source/Project64/UserInterface/UIResources.rc | 28 +++++++++---------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/Source/Project64/UserInterface/Debugger/Debugger-Commands.cpp b/Source/Project64/UserInterface/Debugger/Debugger-Commands.cpp index 92fef2526..e0a2e00f6 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-Commands.cpp +++ b/Source/Project64/UserInterface/Debugger/Debugger-Commands.cpp @@ -30,16 +30,16 @@ void CCommandList::Attach(HWND hWndNew) SetColumnWidth(COL_ARROWS, 30); AddColumn("Address", COL_ADDRESS); - SetColumnWidth(COL_ADDRESS, 65); + SetColumnWidth(COL_ADDRESS, 70); AddColumn("Command", COL_COMMAND); - SetColumnWidth(COL_COMMAND, 60); + SetColumnWidth(COL_COMMAND, 65); AddColumn("Parameters", COL_PARAMETERS); - SetColumnWidth(COL_PARAMETERS, 120); + SetColumnWidth(COL_PARAMETERS, 130); AddColumn("Symbol", COL_SYMBOL); - SetColumnWidth(COL_SYMBOL, 140); + SetColumnWidth(COL_SYMBOL, 180); } CDebugCommandsView* CDebugCommandsView::_this = NULL; diff --git a/Source/Project64/UserInterface/UIResources.rc b/Source/Project64/UserInterface/UIResources.rc index 0d61669f2..7f83932b1 100644 --- a/Source/Project64/UserInterface/UIResources.rc +++ b/Source/Project64/UserInterface/UIResources.rc @@ -677,7 +677,7 @@ END IDD_Debugger_Commands DIALOGEX 0, 0, 489, 327 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME CAPTION "Commands" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 +FONT 9, "Lucida Console", 400, 0, 0x1 BEGIN EDITTEXT IDC_ADDR_EDIT,311,2,45,14,ES_UPPERCASE | ES_AUTOHSCROLL PUSHBUTTON "�",IDC_BACK_BTN,286,1,11,15,WS_DISABLED @@ -703,7 +703,7 @@ END IDD_Debugger_RegGPR DIALOGEX 0, 0, 190, 210 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU -FONT 8, "MS Shell Dlg", 400, 0, 0x1 +FONT 9, "Lucida Console", 400, 0, 0x1 BEGIN LTEXT "R0",IDC_R0_LBL,3,15,10,8,SS_NOTIFY LTEXT "AT",IDC_R1_LBL,3,26,10,8,SS_NOTIFY @@ -792,7 +792,7 @@ END IDD_Debugger_RegFPR DIALOGEX 0, 0, 125, 210 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU -FONT 8, "MS Shell Dlg", 400, 0, 0x1 +FONT 9, "Lucida Console", 400, 0, 0x1 BEGIN LTEXT "F0",IDC_STATIC,3,15,14,8 LTEXT "F1",IDC_STATIC,3,26,14,8 @@ -879,7 +879,7 @@ END IDD_Debugger_RegPI DIALOGEX 0, 0, 190, 210 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU -FONT 8, "MS Shell Dlg", 400, 0, 0x1 +FONT 9, "Lucida Console", 400, 0, 0x1 BEGIN LTEXT "00 PI_DRAM_ADDR_REG",IDC_STATIC,3,29,94,8 LTEXT "04 PI_CART_ADDR_REG",IDC_STATIC,3,39,94,8 @@ -965,7 +965,7 @@ END IDD_Debugger_RegCOP0 DIALOGEX 0, 0, 190, 210 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU -FONT 8, "MS Shell Dlg", 400, 0, 0x1 +FONT 9, "Lucida Console", 400, 0, 0x1 BEGIN LTEXT "Index",-1,3,15,33,8 LTEXT "Random",-1,3,26,33,8 @@ -1021,7 +1021,7 @@ END IDD_Debugger_RegSP DIALOGEX 0, 0, 190, 210 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU -FONT 8, "MS Shell Dlg", 400, 0, 0x1 +FONT 9, "Lucida Console", 400, 0, 0x1 BEGIN LTEXT "00 SP_MEM_ADDR_REG",IDC_STATIC,3,29,94,8 LTEXT "04 SP_DRAM_ADDR_REG",IDC_STATIC,3,39,94,8 @@ -1048,7 +1048,7 @@ END IDD_Debugger_RegMI DIALOGEX 0, 0, 190, 210 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU -FONT 8, "MS Shell Dlg", 400, 0, 0x1 +FONT 9, "Lucida Console", 400, 0, 0x1 BEGIN LTEXT "00 MI_INIT_MODE/MODE_REG",-1,3,29,102,8 LTEXT "04 MI_VERSION/NOOP_REG",-1,3,39,92,8 @@ -1064,7 +1064,7 @@ END IDD_Debugger_RegAI DIALOGEX 0, 0, 190, 210 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU -FONT 8, "MS Shell Dlg", 400, 0, 0x1 +FONT 9, "Lucida Console", 400, 0, 0x1 BEGIN LTEXT "00 AI_DRAM_ADDR_REG",IDC_STATIC,3,29,94,8 LTEXT "04 AI_LEN_REG",IDC_STATIC,3,39,94,8 @@ -1084,7 +1084,7 @@ END IDD_Debugger_RegSI DIALOGEX 0, 0, 190, 210 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU -FONT 8, "MS Shell Dlg", 400, 0, 0x1 +FONT 9, "Lucida Console", 400, 0, 0x1 BEGIN LTEXT "00 SI_DRAM_ADDR_REG",-1,3,29,94,8 LTEXT "04 SI_PIF_ADDR_RD64B_REG",-1,3,39,98,8 @@ -1100,7 +1100,7 @@ END IDD_Debugger_RegRI DIALOGEX 0, 0, 190, 210 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU -FONT 8, "MS Shell Dlg", 400, 0, 0x1 +FONT 9, "Lucida Console", 400, 0, 0x1 BEGIN LTEXT "00 RI_MODE_REG",-1,3,29,94,8 LTEXT "04 RI_CONFIG_REG",-1,3,39,94,8 @@ -1124,7 +1124,7 @@ END IDD_Debugger_RegDPC DIALOGEX 0, 0, 190, 210 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU -FONT 8, "MS Shell Dlg", 400, 0, 0x1 +FONT 9, "Lucida Console", 400, 0, 0x1 BEGIN LTEXT "00 DPC_START_REG",-1,3,29,94,8 LTEXT "04 DPC_END_REG",-1,3,39,94,8 @@ -1148,7 +1148,7 @@ END IDD_Debugger_RegRDRAM DIALOGEX 0, 0, 190, 210 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU -FONT 8, "MS Shell Dlg", 400, 0, 0x1 +FONT 9, "Lucida Console", 400, 0, 0x1 BEGIN LTEXT "00 RDRAM_CONFIG/DEVICE_TYPE_REG",-1,3,29,128,8 LTEXT "04 RDRAM_DEVICE_ID_REG",-1,3,39,94,8 @@ -1176,7 +1176,7 @@ END IDD_Debugger_RegVI DIALOGEX 0, 0, 190, 210 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU -FONT 8, "MS Shell Dlg", 400, 0, 0x1 +FONT 9, "Lucida Console", 400, 0, 0x1 BEGIN LTEXT "00 VI_STATUS/CONTROL_REG",IDC_STATIC,3,29,103,8 LTEXT "04 VI_ORIGIN/DRAM_ADDR_REG",IDC_STATIC,3,39,117,8 @@ -1212,7 +1212,7 @@ END IDD_Debugger_RegDD DIALOGEX 0, 0, 190, 238 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU -FONT 8, "MS Shell Dlg", 400, 0, 0x1 +FONT 9, "Lucida Console", 400, 0, 0x1 BEGIN LTEXT "00 ASIC_DATA",IDC_STATIC,3,29,103,8 LTEXT "04 ASIC_MISC_REG",IDC_STATIC,3,39,68,8 From b9025667f8f0b736f182772dc2faf915d078a909 Mon Sep 17 00:00:00 2001 From: oddMLan <oddMLan2@gmail.com> Date: Thu, 18 Apr 2019 18:18:55 -0700 Subject: [PATCH 10/15] [Debugger UI] Save window size only when the window is resizable. Prevents some dialogs from becoming clipped at high DPI --- .../Project64/UserInterface/Debugger/DebugDialog.h | 14 ++++++++++++-- .../UserInterface/Debugger/Debugger-CPULogView.cpp | 2 +- .../UserInterface/Debugger/Debugger-Commands.cpp | 2 +- .../UserInterface/Debugger/Debugger-DMALogView.cpp | 2 +- .../Debugger/Debugger-ExceptionBreakpoints.cpp | 2 +- .../UserInterface/Debugger/Debugger-MemoryDump.cpp | 2 +- .../Debugger/Debugger-MemorySearch.cpp | 2 +- .../UserInterface/Debugger/Debugger-Scripts.cpp | 2 +- .../UserInterface/Debugger/Debugger-StackTrace.cpp | 2 +- .../UserInterface/Debugger/Debugger-StackView.cpp | 2 +- .../UserInterface/Debugger/Debugger-Symbols.cpp | 2 +- .../UserInterface/Debugger/Debugger-TLB.cpp | 2 +- .../UserInterface/Debugger/Debugger-ViewMemory.cpp | 2 +- 13 files changed, 24 insertions(+), 14 deletions(-) diff --git a/Source/Project64/UserInterface/Debugger/DebugDialog.h b/Source/Project64/UserInterface/Debugger/DebugDialog.h index 170ea80a6..e0fdb898f 100644 --- a/Source/Project64/UserInterface/Debugger/DebugDialog.h +++ b/Source/Project64/UserInterface/Debugger/DebugDialog.h @@ -47,18 +47,28 @@ protected: pT->SetWindowPos(NULL, left, top, width, height, 0); pT->RedrawWindow(); } + if (nParams == 2) { + pT->SetWindowPos(NULL, left, top, width, height, 1); + pT->RedrawWindow(); + } } - void SaveWindowPos() + void SaveWindowPos(bool bSaveSize) { if (!m_bInitialized) { return; } + T* pT = static_cast<T*>(this); CRect rect; pT->GetWindowRect(&rect); - UISettingsSaveString(m_UISettingID, stdstr_f("%d,%d,%d,%d", rect.left, rect.top, rect.Width(), rect.Height()).c_str()); + if (!bSaveSize) { + UISettingsSaveString(m_UISettingID, stdstr_f("%d,%d", rect.left, rect.top).c_str()); + } + else { + UISettingsSaveString(m_UISettingID, stdstr_f("%d,%d,%d,%d", rect.left, rect.top, rect.Width(), rect.Height()).c_str()); + } } public: diff --git a/Source/Project64/UserInterface/Debugger/Debugger-CPULogView.cpp b/Source/Project64/UserInterface/Debugger/Debugger-CPULogView.cpp index 7ca6bd94f..ecddce9e0 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-CPULogView.cpp +++ b/Source/Project64/UserInterface/Debugger/Debugger-CPULogView.cpp @@ -243,7 +243,7 @@ void CDebugCPULogView::InterceptMouseWheel(WPARAM wParam, LPARAM /*lParam*/) void CDebugCPULogView::OnExitSizeMove(void) { RefreshList(false); - SaveWindowPos(); + SaveWindowPos(true); } void CDebugCPULogView::ToggleLoggingEnabled(void) diff --git a/Source/Project64/UserInterface/Debugger/Debugger-Commands.cpp b/Source/Project64/UserInterface/Debugger/Debugger-Commands.cpp index e0a2e00f6..6bbde1fc8 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-Commands.cpp +++ b/Source/Project64/UserInterface/Debugger/Debugger-Commands.cpp @@ -150,7 +150,7 @@ LRESULT CDebugCommandsView::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARA void CDebugCommandsView::OnExitSizeMove(void) { - SaveWindowPos(); + SaveWindowPos(true); } LRESULT CDebugCommandsView::OnDestroy(void) diff --git a/Source/Project64/UserInterface/Debugger/Debugger-DMALogView.cpp b/Source/Project64/UserInterface/Debugger/Debugger-DMALogView.cpp index 7ad287e5c..1c8231277 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-DMALogView.cpp +++ b/Source/Project64/UserInterface/Debugger/Debugger-DMALogView.cpp @@ -206,7 +206,7 @@ LRESULT CDebugDMALogView::OnRefresh(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lPara void CDebugDMALogView::OnExitSizeMove(void) { - SaveWindowPos(); + SaveWindowPos(true); } LRESULT CDebugDMALogView::OnDestroy(void) diff --git a/Source/Project64/UserInterface/Debugger/Debugger-ExceptionBreakpoints.cpp b/Source/Project64/UserInterface/Debugger/Debugger-ExceptionBreakpoints.cpp index 4ec0c39e6..e396294ac 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-ExceptionBreakpoints.cpp +++ b/Source/Project64/UserInterface/Debugger/Debugger-ExceptionBreakpoints.cpp @@ -96,5 +96,5 @@ LRESULT CDebugExcBreakpoints::OnClicked(WORD /*wNotifyCode*/, WORD wID, HWND, BO void CDebugExcBreakpoints::OnExitSizeMove(void) { - SaveWindowPos(); + SaveWindowPos(0); } diff --git a/Source/Project64/UserInterface/Debugger/Debugger-MemoryDump.cpp b/Source/Project64/UserInterface/Debugger/Debugger-MemoryDump.cpp index 0263c62e4..4153bf430 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-MemoryDump.cpp +++ b/Source/Project64/UserInterface/Debugger/Debugger-MemoryDump.cpp @@ -59,7 +59,7 @@ LRESULT CDumpMemory::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lPa void CDumpMemory::OnExitSizeMove(void) { - SaveWindowPos(); + SaveWindowPos(0); } LRESULT CDumpMemory::OnClicked(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/) diff --git a/Source/Project64/UserInterface/Debugger/Debugger-MemorySearch.cpp b/Source/Project64/UserInterface/Debugger/Debugger-MemorySearch.cpp index 033da7bf5..0343e41cd 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-MemorySearch.cpp +++ b/Source/Project64/UserInterface/Debugger/Debugger-MemorySearch.cpp @@ -216,7 +216,7 @@ LRESULT CALLBACK CDebugMemorySearch::HookProc(int nCode, WPARAM wParam, LPARAM l void CDebugMemorySearch::OnExitSizeMove(void) { UpdateWatchList(true); - SaveWindowPos(); + SaveWindowPos(true); } void CDebugMemorySearch::OnSizing(UINT /*fwSide*/, LPRECT /*pRect*/) diff --git a/Source/Project64/UserInterface/Debugger/Debugger-Scripts.cpp b/Source/Project64/UserInterface/Debugger/Debugger-Scripts.cpp index cf2ee6189..815f8166a 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-Scripts.cpp +++ b/Source/Project64/UserInterface/Debugger/Debugger-Scripts.cpp @@ -64,7 +64,7 @@ LRESULT CDebugScripts::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*l void CDebugScripts::OnExitSizeMove(void) { - SaveWindowPos(); + SaveWindowPos(true); } void CDebugScripts::ConsolePrint(const char* text) diff --git a/Source/Project64/UserInterface/Debugger/Debugger-StackTrace.cpp b/Source/Project64/UserInterface/Debugger/Debugger-StackTrace.cpp index 51352e3e4..9d7108242 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-StackTrace.cpp +++ b/Source/Project64/UserInterface/Debugger/Debugger-StackTrace.cpp @@ -70,7 +70,7 @@ LRESULT CDebugStackTrace::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM void CDebugStackTrace::OnExitSizeMove(void) { - SaveWindowPos(); + SaveWindowPos(true); } LRESULT CDebugStackTrace::OnActivate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) diff --git a/Source/Project64/UserInterface/Debugger/Debugger-StackView.cpp b/Source/Project64/UserInterface/Debugger/Debugger-StackView.cpp index a4cc480cd..8962b5858 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-StackView.cpp +++ b/Source/Project64/UserInterface/Debugger/Debugger-StackView.cpp @@ -51,7 +51,7 @@ LRESULT CDebugStackView::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM / void CDebugStackView::OnExitSizeMove(void) { - SaveWindowPos(); + SaveWindowPos(true); } LRESULT CDebugStackView::OnDestroy(void) diff --git a/Source/Project64/UserInterface/Debugger/Debugger-Symbols.cpp b/Source/Project64/UserInterface/Debugger/Debugger-Symbols.cpp index 043718198..7cc5be1cf 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-Symbols.cpp +++ b/Source/Project64/UserInterface/Debugger/Debugger-Symbols.cpp @@ -53,7 +53,7 @@ LRESULT CDebugSymbols::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*l void CDebugSymbols::OnExitSizeMove(void) { - SaveWindowPos(); + SaveWindowPos(true); } LRESULT CDebugSymbols::OnDestroy(void) diff --git a/Source/Project64/UserInterface/Debugger/Debugger-TLB.cpp b/Source/Project64/UserInterface/Debugger/Debugger-TLB.cpp index 63ec05317..1a089533c 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-TLB.cpp +++ b/Source/Project64/UserInterface/Debugger/Debugger-TLB.cpp @@ -85,7 +85,7 @@ LRESULT CDebugTlb::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lPara void CDebugTlb::OnExitSizeMove(void) { - SaveWindowPos(); + SaveWindowPos(0); } LRESULT CDebugTlb::OnClicked(WORD /*wNotifyCode*/, WORD wID, HWND, BOOL& /*bHandled*/) diff --git a/Source/Project64/UserInterface/Debugger/Debugger-ViewMemory.cpp b/Source/Project64/UserInterface/Debugger/Debugger-ViewMemory.cpp index 186a6d8ae..4d390be55 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-ViewMemory.cpp +++ b/Source/Project64/UserInterface/Debugger/Debugger-ViewMemory.cpp @@ -152,7 +152,7 @@ DWORD WINAPI CDebugMemoryView::AutoRefreshProc(void* _self) void CDebugMemoryView::OnExitSizeMove() { - SaveWindowPos(); + SaveWindowPos(0); } void CDebugMemoryView::InterceptMouseWheel(WPARAM wParam, LPARAM /*lParam*/) From 2f9529a2cf699563a6d55ee4c05393ff4e250b47 Mon Sep 17 00:00:00 2001 From: oddMLan <oddMLan2@gmail.com> Date: Thu, 18 Apr 2019 22:34:27 -0700 Subject: [PATCH 11/15] [Cheats] Improved UI layout --- .../Project64/UserInterface/CheatClassUI.cpp | 14 ++--- Source/Project64/UserInterface/UIResources.rc | 58 +++++++++---------- 2 files changed, 34 insertions(+), 38 deletions(-) diff --git a/Source/Project64/UserInterface/CheatClassUI.cpp b/Source/Project64/UserInterface/CheatClassUI.cpp index b7196fba6..269146d48 100644 --- a/Source/Project64/UserInterface/CheatClassUI.cpp +++ b/Source/Project64/UserInterface/CheatClassUI.cpp @@ -188,7 +188,6 @@ int CALLBACK CCheatsUI::CheatAddProc(HWND hDlg, uint32_t uMsg, uint32_t wParam, CCheatsUI * _this = (CCheatsUI *)lParam; SetProp(hDlg, "Class", _this); - SetWindowTextW(hDlg, wGS(CHEAT_ADDCHEAT_FRAME).c_str()); SetWindowTextW(GetDlgItem(hDlg, IDC_NAME), wGS(CHEAT_ADDCHEAT_NAME).c_str()); SetWindowTextW(GetDlgItem(hDlg, IDC_CODE), wGS(CHEAT_ADDCHEAT_CODE).c_str()); SetWindowTextW(GetDlgItem(hDlg, IDC_LABEL_OPTIONS), wGS(CHEAT_ADDCHEAT_OPT).c_str()); @@ -452,18 +451,17 @@ int CALLBACK CCheatsUI::CheatListProc(HWND hDlg, uint32_t uMsg, uint32_t wParam, RECT rcList; RECT rcButton; - SetWindowTextW(GetDlgItem(hDlg, IDC_CHEATSFRAME), wGS(CHEAT_LIST_FRAME).c_str()); SetWindowTextW(GetDlgItem(hDlg, IDC_NOTESFRAME), wGS(CHEAT_NOTES_FRAME).c_str()); SetWindowTextW(GetDlgItem(hDlg, IDC_UNMARK), wGS(CHEAT_MARK_NONE).c_str()); - GetWindowRect(GetDlgItem(hDlg, IDC_CHEATSFRAME), &rcList); + GetWindowRect(hDlg, &rcList); GetWindowRect(GetDlgItem(hDlg, IDC_UNMARK), &rcButton); _this->m_hCheatTree = CreateWindowEx(WS_EX_CLIENTEDGE, WC_TREEVIEW, "", WS_CHILD | WS_VISIBLE | WS_VSCROLL | TVS_HASLINES | TVS_HASBUTTONS | TVS_LINESATROOT | TVS_DISABLEDRAGDROP | WS_TABSTOP | - TVS_FULLROWSELECT, 8, 15, rcList.right - rcList.left - 16, - rcButton.top - rcList.top - 22, hDlg, (HMENU)IDC_MYTREE, GetModuleHandle(NULL), NULL); + TVS_FULLROWSELECT, 6, 4, rcList.right - rcList.left - 13, + rcButton.top - rcList.top - 8, hDlg, (HMENU)IDC_MYTREE, GetModuleHandle(NULL), NULL); Style = GetWindowLong(_this->m_hCheatTree, GWL_STYLE); SetWindowLong(_this->m_hCheatTree, GWL_STYLE, TVS_CHECKBOXES | TVS_SHOWSELALWAYS | Style); @@ -944,7 +942,7 @@ int CALLBACK CCheatsUI::ManageCheatsProc(HWND hDlg, uint32_t uMsg, uint32_t wPar if (g_Settings->LoadDword(UserInterface_BasicMode)) { RECT * rcList = (RECT *)_this->m_rcList; - GetWindowRect(GetDlgItem(_this->m_hSelectCheat, IDC_CHEATSFRAME), rcList); + GetWindowRect(_this->m_hSelectCheat, rcList); _this->m_MinSizeDlg = rcList->right - rcList->left + 16; _this->m_MaxSizeDlg = _this->m_MinSizeDlg; @@ -961,8 +959,8 @@ int CALLBACK CCheatsUI::ManageCheatsProc(HWND hDlg, uint32_t uMsg, uint32_t wPar ShowWindow(_this->m_AddCheat, SW_HIDE); RECT * rcAdd = (RECT *)_this->m_rcAdd, *rcList = (RECT *)_this->m_rcList; - GetWindowRect(GetDlgItem(_this->m_hSelectCheat, IDC_CHEATSFRAME), rcList); - GetWindowRect(GetDlgItem(_this->m_AddCheat, IDC_ADDCHEATSFRAME), rcAdd); + GetWindowRect(_this->m_hSelectCheat, rcList); + GetWindowRect(_this->m_AddCheat, rcAdd); _this->m_MinSizeDlg = rcList->right - rcList->left + 32; _this->m_MaxSizeDlg = rcAdd->right - rcList->left + 32; diff --git a/Source/Project64/UserInterface/UIResources.rc b/Source/Project64/UserInterface/UIResources.rc index 7f83932b1..98a1ee64e 100644 --- a/Source/Project64/UserInterface/UIResources.rc +++ b/Source/Project64/UserInterface/UIResources.rc @@ -176,27 +176,27 @@ BEGIN DEFPUSHBUTTON "&Close",IDC_CLOSE_BUTTON,169,186,64,14 GROUPBOX "",IDC_STATIC,6,5,228,177 LTEXT "ROM Name:",IDC_ROM_NAME,11,16,64,10 - EDITTEXT IDC_INFO_ROMNAME,77,15,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_EX_STATICEDGE + EDITTEXT IDC_INFO_ROMNAME,77,15,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_GROUP LTEXT "File Name:",IDC_FILE_NAME,11,31,64,10 - EDITTEXT IDC_INFO_FILENAME,77,30,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_EX_STATICEDGE + EDITTEXT IDC_INFO_FILENAME,77,30,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_GROUP LTEXT "Rom Size:",IDC_ROM_SIZE,11,74,64,10 - EDITTEXT IDC_INFO_ROMSIZE,77,74,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_EX_STATICEDGE + EDITTEXT IDC_INFO_ROMSIZE,77,74,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_GROUP LTEXT "Cartridge ID:",IDC_CART_ID,11,90,64,10 - EDITTEXT IDC_INFO_CARTID,77,89,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_EX_STATICEDGE + EDITTEXT IDC_INFO_CARTID,77,89,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_GROUP LTEXT "Manufacturer:",IDC_MANUFACTURER,11,106,64,10 - EDITTEXT IDC_INFO_MANUFACTURER,77,104,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_EX_STATICEDGE + EDITTEXT IDC_INFO_MANUFACTURER,77,104,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_GROUP LTEXT "Country:",IDC_COUNTRY,11,122,64,10 - EDITTEXT IDC_INFO_COUNTRY,77,119,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_EX_STATICEDGE + EDITTEXT IDC_INFO_COUNTRY,77,119,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_GROUP LTEXT "CRC1:",IDC_CRC1,11,135,64,10 - EDITTEXT IDC_INFO_CRC1,77,134,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_EX_STATICEDGE + EDITTEXT IDC_INFO_CRC1,77,134,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_GROUP LTEXT "CRC2:",IDC_CRC2,11,151,64,10 - EDITTEXT IDC_INFO_CRC2,77,149,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_EX_STATICEDGE + EDITTEXT IDC_INFO_CRC2,77,149,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_GROUP LTEXT "CIC Chip:",IDC_CIC_CHIP,11,167,64,10 - EDITTEXT IDC_INFO_CIC,77,164,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_EX_STATICEDGE + EDITTEXT IDC_INFO_CIC,77,164,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_GROUP LTEXT "Location:",IDC_LOCATION,11,45,64,10 - EDITTEXT IDC_INFO_LOCATION,77,45,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_EX_STATICEDGE + EDITTEXT IDC_INFO_LOCATION,77,45,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_GROUP LTEXT "MD5:",IDC_ROM_MD5,11,60,64,10 - EDITTEXT IDC_INFO_MD5,77,59,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_EX_STATICEDGE + EDITTEXT IDC_INFO_MD5,77,59,153,13,ES_AUTOHSCROLL | ES_READONLY | WS_GROUP END IDD_Settings_GameGeneral DIALOGEX 0, 0, 218, 169 @@ -264,7 +264,7 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_FIXEDSYS | DS_CENTER | CAPTION "Cheats" FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - PUSHBUTTON "Button1",IDC_STATE,195,5,20,20,BS_ICON | WS_EX_TRANSPARENT + PUSHBUTTON "Button1",IDC_STATE,195,5,20,20,BS_LEFTTEXT | BS_ICON END IDD_Cheats_List DIALOGEX 0, 0, 201, 221 @@ -272,9 +272,8 @@ STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD EXSTYLE WS_EX_CONTROLPARENT FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - GROUPBOX "Cheats",IDC_CHEATSFRAME,0,0,199,160 - PUSHBUTTON "Unmark All",IDC_UNMARK,145,145,49,11 - GROUPBOX " Notes: ",IDC_NOTESFRAME,0,165,199,51 + PUSHBUTTON "Unmark All",IDC_UNMARK,148,152,49,11 + GROUPBOX " Notes: ",IDC_NOTESFRAME,3,165,194,48 EDITTEXT IDC_NOTES,5,175,188,36,ES_MULTILINE | ES_READONLY | ES_WANTRETURN | NOT WS_BORDER | WS_VSCROLL END @@ -283,19 +282,18 @@ STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_CHILD | WS_VISIBLE EXSTYLE WS_EX_CONTROLPARENT FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - GROUPBOX "",IDC_ADDCHEATSFRAME,2,0,188,145 - LTEXT "Name:",IDC_NAME,7,13,25,10 - EDITTEXT IDC_CODE_NAME,37,12,146,12,ES_AUTOHSCROLL - LTEXT "Code:",IDC_CODE,7,30,25,10 - LTEXT "<address> <value>",IDC_CODE_DES,7,40,60,10 - LTEXT "Options:",IDC_LABEL_OPTIONS,82,30,30,10,WS_DISABLED - LTEXT "<value> <label>",IDC_LABEL_OPTIONS_FORMAT,82,40,80,10,WS_DISABLED - EDITTEXT IDC_CHEAT_CODES,7,50,70,90,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL - EDITTEXT IDC_CHEAT_OPTIONS,82,50,101,90,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_DISABLED | WS_VSCROLL | WS_HSCROLL - GROUPBOX "Cheat Notes",IDC_CHEATNOTES,2,150,188,45 - EDITTEXT IDC_NOTES,7,160,176,30,ES_MULTILINE | ES_WANTRETURN | WS_VSCROLL - PUSHBUTTON "New Cheat",IDC_NEWCHEAT,21,198,70,15,0 - PUSHBUTTON "Add Cheat",IDC_ADD,98,198,70,15,WS_DISABLED + LTEXT "Name:",IDC_NAME,4,6,25,10 + EDITTEXT IDC_CODE_NAME,38,4,146,12,ES_AUTOHSCROLL + LTEXT "Code:",IDC_CODE,4,24,31,10 + LTEXT "<address> <value>",IDC_CODE_DES,4,34,74,10 + LTEXT "Options:",IDC_LABEL_OPTIONS,86,24,38,10,WS_DISABLED + LTEXT "<value> <label>",IDC_LABEL_OPTIONS_FORMAT,86,34,80,10,WS_DISABLED + EDITTEXT IDC_CHEAT_CODES,4,44,75,96,ES_MULTILINE | ES_UPPERCASE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL + EDITTEXT IDC_CHEAT_OPTIONS,86,44,98,96,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_DISABLED | WS_VSCROLL | WS_HSCROLL + LTEXT "Cheat Notes",IDC_CHEATNOTES,3,149,60,10 + EDITTEXT IDC_NOTES,4,160,180,32,ES_MULTILINE | ES_WANTRETURN | WS_VSCROLL + PUSHBUTTON "New Cheat",IDC_NEWCHEAT,16,198,75,15 + PUSHBUTTON "Add Cheat",IDC_ADD,98,198,75,15,WS_DISABLED END IDD_Cheats_CodeEx DIALOGEX 0, 0, 186, 153 @@ -1457,9 +1455,9 @@ BEGIN IDD_Cheats_Add, DIALOG BEGIN - LEFTMARGIN, 7 + LEFTMARGIN, 4 RIGHTMARGIN, 184 - TOPMARGIN, 7 + TOPMARGIN, 4 END IDD_Cheats_CodeEx, DIALOG From 05f98f8c09c9de2a6192fbfb0af8e976f5aa6618 Mon Sep 17 00:00:00 2001 From: oddMLan <oddMLan2@gmail.com> Date: Fri, 19 Apr 2019 12:13:37 -0700 Subject: [PATCH 12/15] Make Status Bar, About Dialog and Language Selector DPI Aware --- .../Multilanguage/LanguageSelector.cpp | 8 +++++-- .../Bitmaps/AboutScreenLogoHDPI.bmp | Bin 0 -> 504056 bytes Source/Project64/UserInterface/MainWindow.cpp | 22 ++++++++++++------ Source/Project64/UserInterface/MainWindow.h | 1 + Source/Project64/UserInterface/UIResources.rc | 2 ++ Source/Project64/UserInterface/resource.h | 1 + 6 files changed, 25 insertions(+), 9 deletions(-) create mode 100644 Source/Project64/UserInterface/Bitmaps/AboutScreenLogoHDPI.bmp diff --git a/Source/Project64/Multilanguage/LanguageSelector.cpp b/Source/Project64/Multilanguage/LanguageSelector.cpp index af1d36d98..d0cb97b2d 100644 --- a/Source/Project64/Multilanguage/LanguageSelector.cpp +++ b/Source/Project64/Multilanguage/LanguageSelector.cpp @@ -52,8 +52,11 @@ LRESULT CALLBACK CLanguageSelector::LangSelectProc(HWND hDlg, UINT uMsg, WPARAM SendMessage(GetDlgItem(hDlg, IDC_LANG_SEL), CB_SETCURSEL, 0, 0); } + //Get Windows DPI Scale + float DPIScale = CClientDC(hDlg).GetDeviceCaps(LOGPIXELSX) / 96.0f; + // Use the size of the image - hbmpBackgroundTop = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_ABOUT_LOGO)); + hbmpBackgroundTop = LoadBitmap(GetModuleHandle(NULL), DPIScale <= 1.0f ? MAKEINTRESOURCE(IDB_ABOUT_LOGO) : MAKEINTRESOURCE(IDB_ABOUT_LOGO_HDPI)); BITMAP bmTL; GetObject(hbmpBackgroundTop, sizeof(BITMAP), &bmTL); @@ -99,7 +102,8 @@ LRESULT CALLBACK CLanguageSelector::LangSelectProc(HWND hDlg, UINT uMsg, WPARAM HDC memdc = CreateCompatibleDC(ps.hdc); HGDIOBJ save = SelectObject(memdc, hbmpBackgroundTop); - BitBlt(ps.hdc, 0, 0, bmTL_top.bmWidth, bmTL_top.bmHeight, memdc, 0, 0, SRCCOPY); + SetStretchBltMode(ps.hdc, HALFTONE); + StretchBlt(ps.hdc, 0, 0, rcClient.right, (int)(bmTL_top.bmHeight * rcClient.right / bmTL_top.bmWidth), memdc, 0, 0, bmTL_top.bmWidth, bmTL_top.bmHeight, SRCCOPY); SelectObject(memdc, save); DeleteDC(memdc); diff --git a/Source/Project64/UserInterface/Bitmaps/AboutScreenLogoHDPI.bmp b/Source/Project64/UserInterface/Bitmaps/AboutScreenLogoHDPI.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c0b0dd331b2c6c8144c23ef9b6973c48aabca82c GIT binary patch literal 504056 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	NE;Ash`vahuTW-Q1)Kp{iN?-gp@spK$V#9> z5)}oO7x{n*FaajO1egF5_@5@w*co>0J0?5B&a6u+!W0eAhUELSUrAEzLA2pE#ov%i zBDY<mCykr|RSk^^Ak%>fq7i&RsG;%ee9Q!x025#WOn?dePZN0E89tvFv@`3niVi<{ zp$(W5Qq(pGZHT=_v9~C*pvtJPLf!#!hQ`hyCSgE?0n;V@Ph;W6GXW;R1egF5U;?iZ z5Y8YbE|B94aE64eD<yO!^QAT<KaishNK)*%BmW%8qO3x#QC|sXfF8W8XV7Xf#UjrC zF6M4}t=ar16JP>NfC(@GCh#{CfGwcv;Ds|J9)~joCuF6o>1fs~+JHR8@uzgQfRdh& z+m_<g%a6^bI`{@k8n8#3F()MEZo;3aWcZtJfiK4dm;e)C0!)Aj{0#&eJ3~C2p_vWp z8Q=_<J{qA0{G{g4g(A9CLObu69ar3K(LemNPSfw)y@$5J77%K{8E}9y2E-gV!tgiz z%lHyZfC(@GCcpdy*)#HACGQl+NWb9Ov|Gl;0d)iOF&K#|AF272ym-qX9w!0DkO z%W^XBn@ulN0k(h*=76dOIKw}33w%)~zyz286JP>N;BO$%*clQJpO!wcn!79ep^nna zXjewP^P1aj#zcJiqr*gp*@q4s&{mg;CW+XB5C-g#lHi4;|Av1SUxEoR0Vco%n7}_s z06jjIgA@&rouQfCoL#w_u2lE)*wwtZN4KGl5mBqNGw&l2VQFMzVZbqj0mCIM@A3f? zU;<2l2`~XB@Lm!?kB|AE#jWi<d{&Z1N?m-~4)&hnIwv*dxL#XfxohZw*q|BW0B_;z zm_`zRT0X`HOn?b60Vco%n815UK+LfqZY|~P)xN`KtX;qLdG=!xb3ixT^9x;2eu>v` zh#CeKh6Y0Xn+Y%hCcp%kz<W*r&R~f%por0E{Np-C#2H`<Vx{T#oDSa}6JP>NfC(@G zCeT0t0)V+38~*ye-v}&-L<Z^~U>ErF_dd<<F##sP1egF5U;^(Q0ZW|Wx9$w80Ixt` z0ed*cZ+(nkX97%s2`~XBzy#iJ0>8TYq=+g&5?~aFDj<dNena59V**To2`~XBzy$t~ z0Ia|gJ!q^7m~w$t;ScHY2bcg8U;<2l3H*BqV38@r6T|=t5mm4##J>ju-zgJd0!)Aj zFaaj;X9#eu!k?kUpJ4(_fC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5 zU;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5 zU;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5 zU;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5 zU;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5 iU;<2l2`~XBzyz286JP>NfC(@GCcp%kz&}nvlKu}LnLG6W literal 0 HcmV?d00001 diff --git a/Source/Project64/UserInterface/MainWindow.cpp b/Source/Project64/UserInterface/MainWindow.cpp index adc3d4d22..2e795455f 100644 --- a/Source/Project64/UserInterface/MainWindow.cpp +++ b/Source/Project64/UserInterface/MainWindow.cpp @@ -526,7 +526,7 @@ void CMainGui::Resize(DWORD /*fwSizeType*/, WORD nWidth, WORD nHeight) GetClientRect((HWND)m_hStatusWnd, &swrect); int Parts[2]; - Parts[0] = (nWidth - (int)(clrect.right * 0.25)); + Parts[0] = (int) (nWidth - 140 * DPIScale(m_hStatusWnd)); Parts[1] = nWidth; SendMessage((HWND)m_hStatusWnd, SB_SETPARTS, 2, (LPARAM)&Parts[0]); @@ -573,6 +573,10 @@ int CMainGui::Width(void) return rect.right - rect.left; } +float CMainGui::DPIScale(HWND hWnd) { + return CClientDC(hWnd).GetDeviceCaps(LOGPIXELSX) / 96.0f; +} + void CMainGui::SetPos(int X, int Y) { SetWindowPos(m_hMainWindow, NULL, X, Y, 0, 0, SWP_NOZORDER | SWP_NOSIZE); @@ -1222,6 +1226,7 @@ LRESULT CALLBACK CMainGui::MainGui_Proc(HWND hWnd, DWORD uMsg, DWORD wParam, DWO DWORD CALLBACK AboutBoxProc(HWND hWnd, DWORD uMsg, DWORD wParam, DWORD /*lParam*/) { + CMainGui * Gui = NULL; static HBITMAP hbmpBackgroundTop = NULL; static HFONT hPageHeadingFont = NULL; static HFONT hTextFont = NULL; @@ -1233,16 +1238,18 @@ DWORD CALLBACK AboutBoxProc(HWND hWnd, DWORD uMsg, DWORD wParam, DWORD /*lParam* //Title SetWindowTextW(hWnd, wGS(PLUG_ABOUT).c_str()); - // Use the size of the image - hbmpBackgroundTop = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_ABOUT_LOGO)); + // Get Windows DPI Scale + float DPIScale = Gui->DPIScale(hWnd); + // Use the size of the image + hbmpBackgroundTop = LoadBitmap(GetModuleHandle(NULL), DPIScale <= 1.0f ? MAKEINTRESOURCE(IDB_ABOUT_LOGO) : MAKEINTRESOURCE(IDB_ABOUT_LOGO_HDPI)); BITMAP bmTL; GetObject(hbmpBackgroundTop, sizeof(BITMAP), &bmTL); - hTextFont = ::CreateFont(18, 0, 0, 0, FW_NORMAL, 0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial"); - hAuthorFont = ::CreateFont(18, 0, 0, 0, FW_BOLD, 0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial"); + hTextFont = ::CreateFont((int)(18 * DPIScale), 0, 0, 0, FW_NORMAL, 0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial"); + hAuthorFont = ::CreateFont((int)(18 * DPIScale), 0, 0, 0, FW_BOLD, 0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial"); - hPageHeadingFont = ::CreateFont(24, 0, 0, 0, FW_BOLD, 0, FALSE, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial Bold"); + hPageHeadingFont = ::CreateFont((int)(24 * DPIScale), 0, 0, 0, FW_BOLD, 0, FALSE, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial Bold"); SendDlgItemMessage(hWnd, IDC_VERSION, WM_SETFONT, (WPARAM)hTextFont, TRUE); SendDlgItemMessage(hWnd, IDC_TEAM, WM_SETFONT, (WPARAM)hPageHeadingFont, TRUE); @@ -1302,7 +1309,8 @@ DWORD CALLBACK AboutBoxProc(HWND hWnd, DWORD uMsg, DWORD wParam, DWORD /*lParam* HDC memdc = CreateCompatibleDC(ps.hdc); HGDIOBJ save = SelectObject(memdc, hbmpBackgroundTop); - BitBlt(ps.hdc, 0, 0, bmTL_top.bmWidth, bmTL_top.bmHeight, memdc, 0, 0, SRCCOPY); + SetStretchBltMode(ps.hdc, HALFTONE); + StretchBlt(ps.hdc, 0, 0, rcClient.right, (int)(bmTL_top.bmHeight * rcClient.right/bmTL_top.bmWidth), memdc, 0, 0, bmTL_top.bmWidth, bmTL_top.bmHeight, SRCCOPY); SelectObject(memdc, save); DeleteDC(memdc); diff --git a/Source/Project64/UserInterface/MainWindow.h b/Source/Project64/UserInterface/MainWindow.h index 34b483819..32db17cbd 100644 --- a/Source/Project64/UserInterface/MainWindow.h +++ b/Source/Project64/UserInterface/MainWindow.h @@ -60,6 +60,7 @@ public: //Get Information about the window int Height(void); //Get the Height of the window int Width(void); //Get the Width of the window + float DPIScale(HWND hWnd); //Manipulate the state of the window void SetPos(int X, int Y); //Move the window to this screen location diff --git a/Source/Project64/UserInterface/UIResources.rc b/Source/Project64/UserInterface/UIResources.rc index 98a1ee64e..5b126ace5 100644 --- a/Source/Project64/UserInterface/UIResources.rc +++ b/Source/Project64/UserInterface/UIResources.rc @@ -1847,6 +1847,8 @@ IDB_LISTITEMS BITMAP "Bitmaps\\ListItems.bmp" IDB_ABOUT_LOGO BITMAP "Bitmaps\\AboutScreenLogo.bmp" +IDB_ABOUT_LOGO_HDPI BITMAP "Bitmaps\\AboutScreenLogoHDPI.bmp" + ///////////////////////////////////////////////////////////////////////////// // diff --git a/Source/Project64/UserInterface/resource.h b/Source/Project64/UserInterface/resource.h index 23f39913d..a7e4a9163 100644 --- a/Source/Project64/UserInterface/resource.h +++ b/Source/Project64/UserInterface/resource.h @@ -35,6 +35,7 @@ #define IDD_About_UserInfo 141 #define IDD_About_Ini 143 #define IDB_ABOUT_LOGO 143 +#define IDB_ABOUT_LOGO_HDPI 144 #define IDD_Settings_General 144 #define IDD_Settings_Accelerator 145 #define IDD_Settings_Config 149 From de29d0c15776aefa84fc766e83485e6171dbb0ac Mon Sep 17 00:00:00 2001 From: oddMLan <oddMLan2@gmail.com> Date: Fri, 19 Apr 2019 14:41:13 -0700 Subject: [PATCH 13/15] [Icon] Add 256x256 size It should be XP-compatible. XP is just going to take the 48x48 and ignore this one. --- Source/Project64/UserInterface/Icons/pj64.ico | Bin 26582 -> 91558 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Source/Project64/UserInterface/Icons/pj64.ico b/Source/Project64/UserInterface/Icons/pj64.ico index 3fcaf4b2cd043ba43e44efab2b8d610bef9cef53..acd3a708be12811718d6b64adaadb9028720d67e 100644 GIT binary patch delta 65615 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�>Pvp=k$kpTQ9>e#5iur)d;bFYp+ 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 Y?adJ#fO*uFb(AU;Y{I@WKdzJdAJNWW_W%F@ delta 144 zcmZ2>n)TXw#(D+@Mg}$p0Ra##!H~hsz>vnkz@VT2;jiFfU^oX9GcbViWf&OBfNCM? z6&NyD7#QSqVd@naRsiMN3}Nbld{qVpJtqbR4WOAoDF&diV0(ZRg9Ff9hK>F6b+*6L IV%%W`02P4}RR910 From b1e950be203aaaf5107c2c171d976ceec7b33578 Mon Sep 17 00:00:00 2001 From: oddMLan <oddMLan2@gmail.com> Date: Fri, 19 Apr 2019 16:48:53 -0700 Subject: [PATCH 14/15] Move CListViewCtrlVarDPI class code into ATL --- Source/3rdParty/WTL/atlctrls.h | 6 ++++-- .../UserInterface/Debugger/DebugDialog.h | 20 ------------------- .../Debugger/Debugger-CPULogView.cpp | 2 +- .../Debugger/Debugger-CPULogView.h | 4 ++-- .../Debugger/Debugger-Commands.cpp | 2 +- .../Debugger/Debugger-Commands.h | 2 +- .../Debugger/Debugger-DMALogView.h | 2 +- .../Debugger/Debugger-MemorySearch.cpp | 4 ++-- .../Debugger/Debugger-MemorySearch.h | 6 +++--- .../UserInterface/Debugger/Debugger-Scripts.h | 2 +- .../Debugger/Debugger-StackTrace.h | 2 +- .../Debugger/Debugger-StackView.h | 2 +- .../UserInterface/Debugger/Debugger-Symbols.h | 2 +- 13 files changed, 19 insertions(+), 37 deletions(-) diff --git a/Source/3rdParty/WTL/atlctrls.h b/Source/3rdParty/WTL/atlctrls.h index cfa5e7f18..dca3df58c 100644 --- a/Source/3rdParty/WTL/atlctrls.h +++ b/Source/3rdParty/WTL/atlctrls.h @@ -656,8 +656,9 @@ public: // Settable only attributes void SetColumnWidth(int cxWidth) { + float DPIScale = CClientDC(m_hWnd).GetDeviceCaps(LOGPIXELSX) / 96.0f; ATLASSERT(::IsWindow(m_hWnd)); - ::SendMessage(m_hWnd, LB_SETCOLUMNWIDTH, cxWidth, 0L); + ::SendMessage(m_hWnd, LB_SETCOLUMNWIDTH, int (cxWidth * DPIScale), 0L); } BOOL SetTabStops(int nTabStops, LPINT rgTabStops) @@ -3068,8 +3069,9 @@ public: BOOL SetColumnWidth(int nCol, int cx) { + float DPIScale = CClientDC(m_hWnd).GetDeviceCaps(LOGPIXELSX) / 96.0f; ATLASSERT(::IsWindow(m_hWnd)); - return (BOOL)::SendMessage(m_hWnd, LVM_SETCOLUMNWIDTH, nCol, MAKELPARAM(cx, 0)); + return (BOOL)::SendMessage(m_hWnd, LVM_SETCOLUMNWIDTH, nCol, MAKELPARAM(int(cx * DPIScale), 0)); } BOOL GetViewRect(LPRECT lpRect) const diff --git a/Source/Project64/UserInterface/Debugger/DebugDialog.h b/Source/Project64/UserInterface/Debugger/DebugDialog.h index e0fdb898f..69067e33d 100644 --- a/Source/Project64/UserInterface/Debugger/DebugDialog.h +++ b/Source/Project64/UserInterface/Debugger/DebugDialog.h @@ -132,24 +132,4 @@ private: bool m_SaveWnd; LONG m_SaveWndTop; LONG m_SaveWndLeft; -}; - -class CListViewCtrlVarDPI : public CListViewCtrl -{ -private: - float m_ScaleX; - -public: - CListViewCtrlVarDPI() : - CListViewCtrl() - { - HDC screen = ::GetDC(0); - m_ScaleX = GetDeviceCaps(screen, LOGPIXELSX) / 96.0f; - ::ReleaseDC(0, screen); - } - - BOOL SetColumnWidth(int nColumn, int nWidth) - { - return CListViewCtrl::SetColumnWidth(nColumn, int (nWidth * m_ScaleX)); - } }; \ No newline at end of file diff --git a/Source/Project64/UserInterface/Debugger/Debugger-CPULogView.cpp b/Source/Project64/UserInterface/Debugger/Debugger-CPULogView.cpp index ecddce9e0..87a5c4e19 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-CPULogView.cpp +++ b/Source/Project64/UserInterface/Debugger/Debugger-CPULogView.cpp @@ -412,7 +412,7 @@ void CDebugCPULogView::Export(void) // util -int CDebugCPULogView::GetNumVisibleRows(CListViewCtrlVarDPI& list) +int CDebugCPULogView::GetNumVisibleRows(CListViewCtrl& list) { CHeaderCtrl header = list.GetHeader(); CRect listRect, headRect; diff --git a/Source/Project64/UserInterface/Debugger/Debugger-CPULogView.h b/Source/Project64/UserInterface/Debugger/Debugger-CPULogView.h index e1a0767aa..f54d449ae 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-CPULogView.h +++ b/Source/Project64/UserInterface/Debugger/Debugger-CPULogView.h @@ -22,7 +22,7 @@ private: int m_RowHeight; int m_LogStartIndex; - CListViewCtrlVarDPI m_CPUListView; + CListViewCtrl m_CPUListView; CEdit m_StateInfoEdit; CEditNumber32 m_BuffSizeEdit; CButton m_EnabledChk; @@ -50,7 +50,7 @@ private: void ShowRegStates(size_t stateIndex); void Export(void); - int GetNumVisibleRows(CListViewCtrlVarDPI& list); + int GetNumVisibleRows(CListViewCtrl& list); bool MouseHovering(WORD ctrlId, int xMargin = 0, int yMargin = 0); BEGIN_MSG_MAP_EX(CDebugCPULogView) diff --git a/Source/Project64/UserInterface/Debugger/Debugger-Commands.cpp b/Source/Project64/UserInterface/Debugger/Debugger-Commands.cpp index 6bbde1fc8..f1795b108 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-Commands.cpp +++ b/Source/Project64/UserInterface/Debugger/Debugger-Commands.cpp @@ -21,7 +21,7 @@ void CCommandList::Attach(HWND hWndNew) { - CListViewCtrlVarDPI::Attach(hWndNew); + CListViewCtrl::Attach(hWndNew); ModifyStyle(LVS_OWNERDRAWFIXED, 0, 0); SetExtendedListViewStyle(LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER | LVS_EX_LABELTIP); diff --git a/Source/Project64/UserInterface/Debugger/Debugger-Commands.h b/Source/Project64/UserInterface/Debugger/Debugger-Commands.h index ed2550ce8..0841a5e35 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-Commands.h +++ b/Source/Project64/UserInterface/Debugger/Debugger-Commands.h @@ -18,7 +18,7 @@ #include <Project64/UserInterface/WTLControls/TooltipDialog.h> class CCommandList : - public CWindowImpl<CCommandList, CListViewCtrlVarDPI> + public CWindowImpl<CCommandList, CListViewCtrl> { public: enum diff --git a/Source/Project64/UserInterface/Debugger/Debugger-DMALogView.h b/Source/Project64/UserInterface/Debugger/Debugger-DMALogView.h index 07f3e56ad..d3a07a817 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-DMALogView.h +++ b/Source/Project64/UserInterface/Debugger/Debugger-DMALogView.h @@ -44,7 +44,7 @@ private: // Return true if entry meets requirements bool FilterEntry(int dmaLogIndex); - CListViewCtrlVarDPI m_DMAList; + CListViewCtrl m_DMAList; CEdit m_DMARamEdit; CEdit m_DMARomEdit; CStatic m_BlockInfo; diff --git a/Source/Project64/UserInterface/Debugger/Debugger-MemorySearch.cpp b/Source/Project64/UserInterface/Debugger/Debugger-MemorySearch.cpp index 0343e41cd..a4c3a5e9e 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-MemorySearch.cpp +++ b/Source/Project64/UserInterface/Debugger/Debugger-MemorySearch.cpp @@ -1487,7 +1487,7 @@ void CDebugMemorySearch::SeparatorMoveCtrl(WORD ctrlId, int yChange, bool bResiz ::InvalidateRect(hControl, NULL, true); } -int CDebugMemorySearch::GetNumVisibleRows(CListViewCtrlVarDPI& list) +int CDebugMemorySearch::GetNumVisibleRows(CListViewCtrl& list) { CHeaderCtrl header = list.GetHeader(); CRect listRect, headRect; @@ -2139,7 +2139,7 @@ void CDebugMemorySearch::LoadWatchList(void) } -void CDebugMemorySearch::FixListHeader(CListViewCtrlVarDPI& listCtrl) +void CDebugMemorySearch::FixListHeader(CListViewCtrl& listCtrl) { CRect listRect, headRect; CHeaderCtrl listHead = listCtrl.GetHeader(); diff --git a/Source/Project64/UserInterface/Debugger/Debugger-MemorySearch.h b/Source/Project64/UserInterface/Debugger/Debugger-MemorySearch.h index 61b38efe9..035f32e64 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-MemorySearch.h +++ b/Source/Project64/UserInterface/Debugger/Debugger-MemorySearch.h @@ -241,10 +241,10 @@ private: CPath GetWatchListPath(void); /* generic ui util */ - void FixListHeader(CListViewCtrlVarDPI& listCtrl); + void FixListHeader(CListViewCtrl& listCtrl); void SetComboBoxSelByData(CComboBox& cb, DWORD_PTR data); bool MouseHovering(WORD ctrlId, int hMargin = 0, int vMargin = 0); - int GetNumVisibleRows(CListViewCtrlVarDPI& list); + int GetNumVisibleRows(CListViewCtrl& list); /*******************/ bool m_bJalSelected; @@ -261,7 +261,7 @@ private: CEditMixed m_SearchValue; CEditNumber32 m_AddrStart, m_AddrEnd; CComboBox m_SearchTypeOptions, m_ValueTypeOptions; - CListViewCtrlVarDPI m_ResultsListCtrl, m_WatchListCtrl; + CListViewCtrl m_ResultsListCtrl, m_WatchListCtrl; CScrollBar m_ResultsScrollbar, m_WatchListScrollbar; CButton m_PhysicalCheckbox, m_HexCheckbox; CButton m_UnsignedCheckbox, m_IgnoreCaseCheckbox, m_UnkEncodingCheckbox; diff --git a/Source/Project64/UserInterface/Debugger/Debugger-Scripts.h b/Source/Project64/UserInterface/Debugger/Debugger-Scripts.h index 4377a65bd..c65d343b5 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-Scripts.h +++ b/Source/Project64/UserInterface/Debugger/Debugger-Scripts.h @@ -13,7 +13,7 @@ #include "DebuggerUI.h" #include "ScriptSystem.h" -class CScriptList : public CListViewCtrlVarDPI +class CScriptList : public CListViewCtrl { public: BEGIN_MSG_MAP_EX(CScriptList) diff --git a/Source/Project64/UserInterface/Debugger/Debugger-StackTrace.h b/Source/Project64/UserInterface/Debugger/Debugger-StackTrace.h index dea72b697..a7f3f5681 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-StackTrace.h +++ b/Source/Project64/UserInterface/Debugger/Debugger-StackTrace.h @@ -44,7 +44,7 @@ private: HANDLE m_AutoRefreshThread; static DWORD WINAPI AutoRefreshProc(void* _this); - CListViewCtrlVarDPI m_List; + CListViewCtrl m_List; LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/); LRESULT OnActivate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); diff --git a/Source/Project64/UserInterface/Debugger/Debugger-StackView.h b/Source/Project64/UserInterface/Debugger/Debugger-StackView.h index 479fe634a..f1b1fe3f9 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-StackView.h +++ b/Source/Project64/UserInterface/Debugger/Debugger-StackView.h @@ -24,7 +24,7 @@ public: void Refresh(); private: - CListViewCtrlVarDPI m_StackList; + CListViewCtrl m_StackList; CStatic m_SPStatic; LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); diff --git a/Source/Project64/UserInterface/Debugger/Debugger-Symbols.h b/Source/Project64/UserInterface/Debugger/Debugger-Symbols.h index bfbc90176..06ccb71e5 100644 --- a/Source/Project64/UserInterface/Debugger/Debugger-Symbols.h +++ b/Source/Project64/UserInterface/Debugger/Debugger-Symbols.h @@ -20,7 +20,7 @@ class CDebugSymbols : public CDialogResize<CDebugSymbols> { private: - CListViewCtrlVarDPI m_SymbolsListView; + CListViewCtrl m_SymbolsListView; CAddSymbolDlg m_AddSymbolDlg; HANDLE m_AutoRefreshThread; From c7a6e51d6221629b6dfefdc31cbd17c539fd88f8 Mon Sep 17 00:00:00 2001 From: oddMLan <oddMLan2@gmail.com> Date: Fri, 19 Apr 2019 16:49:25 -0700 Subject: [PATCH 15/15] Make Rom Browser DPI Aware --- Source/Project64/Settings/UISettings.cpp | 8 ++++++-- Source/Project64/Settings/UISettings.h | 1 + Source/Project64/UserInterface/MainWindow.cpp | 2 +- Source/Project64/UserInterface/RomBrowserClass.cpp | 2 +- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Source/Project64/Settings/UISettings.cpp b/Source/Project64/Settings/UISettings.cpp index 68c6e7eb4..c7ffeb106 100644 --- a/Source/Project64/Settings/UISettings.cpp +++ b/Source/Project64/Settings/UISettings.cpp @@ -48,8 +48,8 @@ void RegisterUISettings (void) g_Settings->AddHandler((SettingID)(FirstUISettings + RomBrowser_ColoumnsChanged), new CSettingTypeTempBool(false)); g_Settings->AddHandler((SettingID)(FirstUISettings + RomBrowser_Top), new CSettingTypeApplication("Rom Browser", "Top", Default_None)); g_Settings->AddHandler((SettingID)(FirstUISettings + RomBrowser_Left), new CSettingTypeApplication("Rom Browser", "Left", Default_None)); - g_Settings->AddHandler((SettingID)(FirstUISettings + RomBrowser_Width), new CSettingTypeApplication("Rom Browser", "Width", (uint32_t)640)); - g_Settings->AddHandler((SettingID)(FirstUISettings + RomBrowser_Height), new CSettingTypeApplication("Rom Browser", "Height", (uint32_t)480)); + g_Settings->AddHandler((SettingID)(FirstUISettings + RomBrowser_Width), new CSettingTypeApplication("Rom Browser", "Width", (uint32_t)(640 * DPIScale()))); + g_Settings->AddHandler((SettingID)(FirstUISettings + RomBrowser_Height), new CSettingTypeApplication("Rom Browser", "Height", (uint32_t)(480 * DPIScale()))); g_Settings->AddHandler((SettingID)(FirstUISettings + RomBrowser_PosIndex), new CSettingTypeApplicationIndex("Rom Browser\\Field Pos", "Field", Default_None)); g_Settings->AddHandler((SettingID)(FirstUISettings + RomBrowser_WidthIndex), new CSettingTypeApplicationIndex("Rom Browser\\Field Width", "Field", Default_None)); g_Settings->AddHandler((SettingID)(FirstUISettings + RomBrowser_SortFieldIndex), new CSettingTypeApplicationIndex("Rom Browser", "Sort Field", Default_None)); @@ -80,6 +80,10 @@ void RegisterUISettings (void) g_Settings->AddHandler((SettingID)(FirstUISettings + DebuggerUI_ExceptionBPPos), new CSettingTypeApplication("Debugger UI", "Exception BP Pos", Default_None)); } +float DPIScale(void) { + return CClientDC(0).GetDeviceCaps(LOGPIXELSX) / 96.0f; +} + void UISettingsSaveBool(UISettingID Type, bool Value) { g_Settings->SaveBool((SettingID)(FirstUISettings + Type), Value); diff --git a/Source/Project64/Settings/UISettings.h b/Source/Project64/Settings/UISettings.h index 304757206..45d3c4d97 100644 --- a/Source/Project64/Settings/UISettings.h +++ b/Source/Project64/Settings/UISettings.h @@ -77,6 +77,7 @@ enum UISettingID DebuggerUI_ExceptionBPPos }; +float DPIScale(void); void RegisterUISettings (void); void UISettingsSaveBool(UISettingID Type, bool Value); void UISettingsSaveBoolIndex(UISettingID Type, int32_t index, bool Value); diff --git a/Source/Project64/UserInterface/MainWindow.cpp b/Source/Project64/UserInterface/MainWindow.cpp index 2e795455f..99ca83989 100644 --- a/Source/Project64/UserInterface/MainWindow.cpp +++ b/Source/Project64/UserInterface/MainWindow.cpp @@ -682,7 +682,7 @@ LRESULT CALLBACK CMainGui::MainGui_Proc(HWND hWnd, DWORD uMsg, DWORD wParam, DWO _this->SetPos(X, Y); - _this->ChangeWinSize(640, 480); + _this->ChangeWinSize(int (640 * _this->DPIScale(hWnd)), int (480 * _this->DPIScale(hWnd))); } break; case WM_SYSCOMMAND: diff --git a/Source/Project64/UserInterface/RomBrowserClass.cpp b/Source/Project64/UserInterface/RomBrowserClass.cpp index 0bfd6713e..d5da717c5 100644 --- a/Source/Project64/UserInterface/RomBrowserClass.cpp +++ b/Source/Project64/UserInterface/RomBrowserClass.cpp @@ -40,7 +40,7 @@ CRomBrowser::~CRomBrowser(void) void CRomBrowser::AddField(ROMBROWSER_FIELDS_LIST & Fields, LPCSTR Name, int32_t Pos, int32_t ID, int32_t Width, LanguageStringID LangID, bool UseDefault) { - Fields.push_back(ROMBROWSER_FIELDS(Name, Pos, ID, Width, LangID, UseDefault)); + Fields.push_back(ROMBROWSER_FIELDS(Name, Pos, ID, Width * DPIScale(), LangID, UseDefault)); } void CRomBrowser::GetFieldInfo(ROMBROWSER_FIELDS_LIST & Fields, bool UseDefault /* = false */)