From 356977290e177e7096221f4e9e10a77748d0b7ea Mon Sep 17 00:00:00 2001 From: Muzychenko Andrey <33288308+k4zmu2a@users.noreply.github.com> Date: Thu, 28 Oct 2021 08:56:49 +0300 Subject: [PATCH 1/4] Added German translation. --- SpaceCadetPinball/SpaceCadetPinball.rc | Bin 165488 -> 199478 bytes SpaceCadetPinball/options.cpp | 1 + SpaceCadetPinball/options.h | 1 + SpaceCadetPinball/resource.h | 2 +- 4 files changed, 3 insertions(+), 1 deletion(-) diff --git a/SpaceCadetPinball/SpaceCadetPinball.rc b/SpaceCadetPinball/SpaceCadetPinball.rc index 11d1606855036d976ab28c2aaeef031f08cac8ae..9ea0d993f2a2dbeef2749bce812cbcb80d26e1bf 100644 GIT binary patch delta 9803 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 delta 39 xcmV+?0NDSwmJINW3a}solZFGHgFXYdJ_7+X_P6kS0_HfE2Dbthx3snbf>b~Y5BdNA diff --git a/SpaceCadetPinball/options.cpp b/SpaceCadetPinball/options.cpp index 39f718b..dd55f53 100644 --- a/SpaceCadetPinball/options.cpp +++ b/SpaceCadetPinball/options.cpp @@ -75,6 +75,7 @@ LanguageMenuEntry options::LanguageMenu[] {L"简化字", Languages::SimplifiedChinese}, {L"正體字", Languages::TraditionalChinese}, {L"Polski", Languages::Polish}, + {L"Deutsch", Languages::German}, }; void options::ReadOptions() diff --git a/SpaceCadetPinball/options.h b/SpaceCadetPinball/options.h index 03e2bc0..45965cb 100644 --- a/SpaceCadetPinball/options.h +++ b/SpaceCadetPinball/options.h @@ -9,6 +9,7 @@ enum class Languages TraditionalChinese = MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL), SimplifiedChinese = MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), Polish = MAKELANGID(LANG_POLISH, SUBLANG_POLISH_POLAND), + German = MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN), }; struct LanguageMenuEntry diff --git a/SpaceCadetPinball/resource.h b/SpaceCadetPinball/resource.h index 99480fb..5cbd7f3 100644 --- a/SpaceCadetPinball/resource.h +++ b/SpaceCadetPinball/resource.h @@ -242,7 +242,7 @@ #define DLG_HIGHSCORES_EditName5 605 #define Menu1_AlternativeRender 601 #define Menu1_Language 700 -#define Menu1_LanguageMax 705 +#define Menu1_LanguageMax 706 // Next default values for new objects // From e2f10333d963900e6bc94cbb171fb4b4e394093c Mon Sep 17 00:00:00 2001 From: Muzychenko Andrey <33288308+k4zmu2a@users.noreply.github.com> Date: Thu, 28 Oct 2021 09:56:14 +0300 Subject: [PATCH 2/4] Added Japanese translation. --- SpaceCadetPinball/SpaceCadetPinball.rc | Bin 199478 -> 229348 bytes SpaceCadetPinball/gdrv.cpp | 3 +++ SpaceCadetPinball/options.cpp | 1 + SpaceCadetPinball/options.h | 1 + SpaceCadetPinball/resource.h | 2 +- 5 files changed, 6 insertions(+), 1 deletion(-) diff --git a/SpaceCadetPinball/SpaceCadetPinball.rc b/SpaceCadetPinball/SpaceCadetPinball.rc index 9ea0d993f2a2dbeef2749bce812cbcb80d26e1bf..8b43c83e858058f6288ffde26429c9b99b447926 100644 GIT binary patch delta 6974 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 diff --git a/SpaceCadetPinball/gdrv.cpp b/SpaceCadetPinball/gdrv.cpp index 2d5791f..55dec27 100644 --- a/SpaceCadetPinball/gdrv.cpp +++ b/SpaceCadetPinball/gdrv.cpp @@ -455,6 +455,9 @@ void gdrv::grtext_draw_ttext_in_box(LPCWSTR text, int xOff, int yOff, int width, case Languages::SimplifiedChinese: font = "Microsoft YaHei"; break; + case Languages::Japanese: + font = "MS UI Gothic"; + break; default: font = "Arial"; } diff --git a/SpaceCadetPinball/options.cpp b/SpaceCadetPinball/options.cpp index dd55f53..1092ebb 100644 --- a/SpaceCadetPinball/options.cpp +++ b/SpaceCadetPinball/options.cpp @@ -76,6 +76,7 @@ LanguageMenuEntry options::LanguageMenu[] {L"正體字", Languages::TraditionalChinese}, {L"Polski", Languages::Polish}, {L"Deutsch", Languages::German}, + {L"日本", Languages::Japanese}, }; void options::ReadOptions() diff --git a/SpaceCadetPinball/options.h b/SpaceCadetPinball/options.h index 45965cb..aa4a1da 100644 --- a/SpaceCadetPinball/options.h +++ b/SpaceCadetPinball/options.h @@ -10,6 +10,7 @@ enum class Languages SimplifiedChinese = MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), Polish = MAKELANGID(LANG_POLISH, SUBLANG_POLISH_POLAND), German = MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN), + Japanese = MAKELANGID(LANG_JAPANESE, SUBLANG_JAPANESE_JAPAN), }; struct LanguageMenuEntry diff --git a/SpaceCadetPinball/resource.h b/SpaceCadetPinball/resource.h index 5cbd7f3..2141272 100644 --- a/SpaceCadetPinball/resource.h +++ b/SpaceCadetPinball/resource.h @@ -242,7 +242,7 @@ #define DLG_HIGHSCORES_EditName5 605 #define Menu1_AlternativeRender 601 #define Menu1_Language 700 -#define Menu1_LanguageMax 706 +#define Menu1_LanguageMax 707 // Next default values for new objects // From 457a982f72f3e7bf95137d90d7d499386a783179 Mon Sep 17 00:00:00 2001 From: "Raymai (Chee Boon)" Date: Thu, 28 Oct 2021 15:58:19 +0800 Subject: [PATCH 3/4] Change only a few key places to make the program works as if it's Unicode build. (#75) --- SpaceCadetPinball/high_score.cpp | 4 +- SpaceCadetPinball/options.cpp | 106 +++++++++++++++--------------- SpaceCadetPinball/options.h | 2 +- SpaceCadetPinball/winmain.cpp | 108 +++++++++++++++---------------- 4 files changed, 109 insertions(+), 111 deletions(-) diff --git a/SpaceCadetPinball/high_score.cpp b/SpaceCadetPinball/high_score.cpp index 6bb9c7c..1e3fb8c 100644 --- a/SpaceCadetPinball/high_score.cpp +++ b/SpaceCadetPinball/high_score.cpp @@ -166,7 +166,7 @@ void high_score::show_high_score_dialog(high_score_struct* table) dlg_enter_name = 0; dlg_score = 0; dlg_hst = table; - DialogBoxParamA(winmain::hinst, "dlg_highscores", winmain::hwnd_frame, HighScore, 0); + DialogBoxParamW(winmain::hinst, L"dlg_highscores", winmain::hwnd_frame, HighScore, 0); } void high_score::show_and_set_high_score_dialog(high_score_struct* table, int score, int pos, LPCSTR defaultName) @@ -176,7 +176,7 @@ void high_score::show_and_set_high_score_dialog(high_score_struct* table, int sc dlg_hst = table; dlg_enter_name = 1; default_name = defaultName; - while (DialogBoxParamA(winmain::hinst, "dlg_highscores", winmain::hwnd_frame, HighScore, 0)) + while (DialogBoxParamW(winmain::hinst, L"dlg_highscores", winmain::hwnd_frame, HighScore, 0)) { } } diff --git a/SpaceCadetPinball/options.cpp b/SpaceCadetPinball/options.cpp index 1092ebb..127aff2 100644 --- a/SpaceCadetPinball/options.cpp +++ b/SpaceCadetPinball/options.cpp @@ -434,9 +434,9 @@ void options::update_resolution_menu() { auto maxResolution = fullscrn::get_max_supported_resolution(); fullscrn::SetMaxResolution(maxResolution); - const CHAR* maxResText = pinball::get_rc_string(maxResolution + 2030, 0); + PCWSTR maxResText = pinball::get_rc_Wstring(maxResolution + 2030, 0); if (MenuHandle) - ModifyMenuA(MenuHandle, Menu1_MaximumResolution, 0, Menu1_MaximumResolution, maxResText); + ModifyMenuW(MenuHandle, Menu1_MaximumResolution, 0, Menu1_MaximumResolution, maxResText); for (auto resIndex = 0; resIndex < 3; resIndex++) { @@ -469,14 +469,14 @@ void options::init_resolution() void options::keyboard() { - DialogBoxParamA(winmain::hinst, "KEYMAPPER", winmain::hwnd_frame, KeyMapDlgProc, 0); + DialogBoxParamW(winmain::hinst, L"KEYMAPPER", winmain::hwnd_frame, KeyMapDlgProc, 0); } INT_PTR _stdcall options::KeyMapDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) { - char keyName[20]; + WCHAR keyName[20]; int keyBindings[6]; - char rcString[256]; + WCHAR rcString[256]; switch (msg) { @@ -500,7 +500,7 @@ INT_PTR _stdcall options::KeyMapDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPAR auto index = 128; do { - if (vkChar == MapVirtualKeyA(index, MAPVK_VK_TO_CHAR)) + if (vkChar == MapVirtualKeyW(index, MAPVK_VK_TO_CHAR)) break; ++index; } @@ -537,30 +537,30 @@ INT_PTR _stdcall options::KeyMapDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPAR { if (vk2And || get_vk_key_name(curVK, keyName)) { - auto ind = SendDlgItemMessageA(hDlg, KEYMAPPER_FlipperL,CB_INSERTSTRING, -1, (LPARAM)keyName); - SendDlgItemMessageA(hDlg, KEYMAPPER_FlipperL, CB_SETITEMDATA, ind, curVK); + auto ind = SendDlgItemMessageW(hDlg, KEYMAPPER_FlipperL,CB_INSERTSTRING, -1, (LPARAM)keyName); + SendDlgItemMessageW(hDlg, KEYMAPPER_FlipperL, CB_SETITEMDATA, ind, curVK); if (curVK == Options.LeftFlipperKey) - SendDlgItemMessageA(hDlg, KEYMAPPER_FlipperL, CB_SETCURSEL, ind, 0); - ind = SendDlgItemMessageA(hDlg, KEYMAPPER_FlipperR, CB_INSERTSTRING, -1, (LPARAM)keyName); - SendDlgItemMessageA(hDlg, KEYMAPPER_FlipperR, CB_SETITEMDATA, ind, curVK); + SendDlgItemMessageW(hDlg, KEYMAPPER_FlipperL, CB_SETCURSEL, ind, 0); + ind = SendDlgItemMessageW(hDlg, KEYMAPPER_FlipperR, CB_INSERTSTRING, -1, (LPARAM)keyName); + SendDlgItemMessageW(hDlg, KEYMAPPER_FlipperR, CB_SETITEMDATA, ind, curVK); if (curVK == Options.RightFlipperKey) - SendDlgItemMessageA(hDlg, KEYMAPPER_FlipperR, CB_SETCURSEL, ind, 0); - ind = SendDlgItemMessageA(hDlg, KEYMAPPER_Plunger, CB_INSERTSTRING, -1, (LPARAM)keyName); - SendDlgItemMessageA(hDlg, KEYMAPPER_Plunger, CB_SETITEMDATA, ind, curVK); + SendDlgItemMessageW(hDlg, KEYMAPPER_FlipperR, CB_SETCURSEL, ind, 0); + ind = SendDlgItemMessageW(hDlg, KEYMAPPER_Plunger, CB_INSERTSTRING, -1, (LPARAM)keyName); + SendDlgItemMessageW(hDlg, KEYMAPPER_Plunger, CB_SETITEMDATA, ind, curVK); if (curVK == Options.PlungerKey) - SendDlgItemMessageA(hDlg, KEYMAPPER_Plunger, CB_SETCURSEL, ind, 0); - ind = SendDlgItemMessageA(hDlg, KEYMAPPER_BumpLeft, CB_INSERTSTRING, -1, (LPARAM)keyName); - SendDlgItemMessageA(hDlg, KEYMAPPER_BumpLeft, CB_SETITEMDATA, ind, curVK); + SendDlgItemMessageW(hDlg, KEYMAPPER_Plunger, CB_SETCURSEL, ind, 0); + ind = SendDlgItemMessageW(hDlg, KEYMAPPER_BumpLeft, CB_INSERTSTRING, -1, (LPARAM)keyName); + SendDlgItemMessageW(hDlg, KEYMAPPER_BumpLeft, CB_SETITEMDATA, ind, curVK); if (curVK == Options.LeftTableBumpKey) - SendDlgItemMessageA(hDlg, KEYMAPPER_BumpLeft, CB_SETCURSEL, ind, 0); - ind = SendDlgItemMessageA(hDlg, KEYMAPPER_BumpRight, CB_INSERTSTRING, -1, (LPARAM)keyName); - SendDlgItemMessageA(hDlg, KEYMAPPER_BumpRight, CB_SETITEMDATA, ind, curVK); + SendDlgItemMessageW(hDlg, KEYMAPPER_BumpLeft, CB_SETCURSEL, ind, 0); + ind = SendDlgItemMessageW(hDlg, KEYMAPPER_BumpRight, CB_INSERTSTRING, -1, (LPARAM)keyName); + SendDlgItemMessageW(hDlg, KEYMAPPER_BumpRight, CB_SETITEMDATA, ind, curVK); if (curVK == Options.RightTableBumpKey) - SendDlgItemMessageA(hDlg, KEYMAPPER_BumpRight, CB_SETCURSEL, ind, 0); - ind = SendDlgItemMessageA(hDlg, KEYMAPPER_BumpBottom, CB_INSERTSTRING, -1, (LPARAM)keyName); - SendDlgItemMessageA(hDlg, KEYMAPPER_BumpBottom, CB_SETITEMDATA, ind, curVK); + SendDlgItemMessageW(hDlg, KEYMAPPER_BumpRight, CB_SETCURSEL, ind, 0); + ind = SendDlgItemMessageW(hDlg, KEYMAPPER_BumpBottom, CB_INSERTSTRING, -1, (LPARAM)keyName); + SendDlgItemMessageW(hDlg, KEYMAPPER_BumpBottom, CB_SETITEMDATA, ind, curVK); if (curVK == Options.BottomTableBumpKey) - SendDlgItemMessageA(hDlg, KEYMAPPER_BumpBottom, CB_SETCURSEL, ind, 0); + SendDlgItemMessageW(hDlg, KEYMAPPER_BumpBottom, CB_SETCURSEL, ind, 0); } } } @@ -570,18 +570,18 @@ INT_PTR _stdcall options::KeyMapDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPAR { case KEYMAPPER_Ok: { - auto ind = SendDlgItemMessageA(hDlg, KEYMAPPER_FlipperL, CB_GETCURSEL, 0, 0); - keyBindings[0] = static_cast(SendDlgItemMessageA(hDlg, KEYMAPPER_FlipperL, CB_GETITEMDATA, ind, 0)); - ind = SendDlgItemMessageA(hDlg, KEYMAPPER_FlipperR, CB_GETCURSEL, 0, 0); - keyBindings[1] = static_cast(SendDlgItemMessageA(hDlg, KEYMAPPER_FlipperR, CB_GETITEMDATA, ind, 0)); - ind = SendDlgItemMessageA(hDlg, KEYMAPPER_Plunger, CB_GETCURSEL, 0, 0); - keyBindings[2] = static_cast(SendDlgItemMessageA(hDlg, KEYMAPPER_Plunger, CB_GETITEMDATA, ind, 0)); - ind = SendDlgItemMessageA(hDlg, KEYMAPPER_BumpLeft, CB_GETCURSEL, 0, 0); - keyBindings[3] = static_cast(SendDlgItemMessageA(hDlg, KEYMAPPER_BumpLeft, CB_GETITEMDATA, ind, 0)); - ind = SendDlgItemMessageA(hDlg, KEYMAPPER_BumpRight, CB_GETCURSEL, 0, 0); - keyBindings[4] = static_cast(SendDlgItemMessageA(hDlg, KEYMAPPER_BumpRight, CB_GETITEMDATA, ind, 0)); - ind = SendDlgItemMessageA(hDlg, KEYMAPPER_BumpBottom, CB_GETCURSEL, 0, 0); - keyBindings[5] = static_cast(SendDlgItemMessageA(hDlg, KEYMAPPER_BumpBottom, CB_GETITEMDATA, ind, 0)); + auto ind = SendDlgItemMessageW(hDlg, KEYMAPPER_FlipperL, CB_GETCURSEL, 0, 0); + keyBindings[0] = static_cast(SendDlgItemMessageW(hDlg, KEYMAPPER_FlipperL, CB_GETITEMDATA, ind, 0)); + ind = SendDlgItemMessageW(hDlg, KEYMAPPER_FlipperR, CB_GETCURSEL, 0, 0); + keyBindings[1] = static_cast(SendDlgItemMessageW(hDlg, KEYMAPPER_FlipperR, CB_GETITEMDATA, ind, 0)); + ind = SendDlgItemMessageW(hDlg, KEYMAPPER_Plunger, CB_GETCURSEL, 0, 0); + keyBindings[2] = static_cast(SendDlgItemMessageW(hDlg, KEYMAPPER_Plunger, CB_GETITEMDATA, ind, 0)); + ind = SendDlgItemMessageW(hDlg, KEYMAPPER_BumpLeft, CB_GETCURSEL, 0, 0); + keyBindings[3] = static_cast(SendDlgItemMessageW(hDlg, KEYMAPPER_BumpLeft, CB_GETITEMDATA, ind, 0)); + ind = SendDlgItemMessageW(hDlg, KEYMAPPER_BumpRight, CB_GETCURSEL, 0, 0); + keyBindings[4] = static_cast(SendDlgItemMessageW(hDlg, KEYMAPPER_BumpRight, CB_GETITEMDATA, ind, 0)); + ind = SendDlgItemMessageW(hDlg, KEYMAPPER_BumpBottom, CB_GETCURSEL, 0, 0); + keyBindings[5] = static_cast(SendDlgItemMessageW(hDlg, KEYMAPPER_BumpBottom, CB_GETITEMDATA, ind, 0)); auto sameKeyBound = 0; auto index = 1; @@ -594,8 +594,8 @@ INT_PTR _stdcall options::KeyMapDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPAR break; if (*optPtr == keyBindings[keyInd]) { - lstrcpyA(rcString, pinball::get_rc_string(43, 0)); - MessageBoxA(hDlg, pinball::get_rc_string(39, 0), rcString, 0x2000u); + lstrcpyW(rcString, pinball::get_rc_Wstring(43, 0)); + MessageBoxW(hDlg, pinball::get_rc_Wstring(39, 0), rcString, 0x2000u); sameKeyBound = 1; } } @@ -623,23 +623,23 @@ INT_PTR _stdcall options::KeyMapDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPAR case KEYMAPPER_Default: { auto name = (LPARAM)get_vk_key_name(Options.LeftFlipperKeyDft, keyName); - auto ind = SendDlgItemMessageA(hDlg, KEYMAPPER_FlipperL, CB_FINDSTRINGEXACT, 0, name); - SendDlgItemMessageA(hDlg, KEYMAPPER_FlipperL, CB_SETCURSEL, ind, 0); + auto ind = SendDlgItemMessageW(hDlg, KEYMAPPER_FlipperL, CB_FINDSTRINGEXACT, 0, name); + SendDlgItemMessageW(hDlg, KEYMAPPER_FlipperL, CB_SETCURSEL, ind, 0); name = (LPARAM)get_vk_key_name(Options.RightFlipperKeyDft, keyName); - ind = SendDlgItemMessageA(hDlg, KEYMAPPER_FlipperR, CB_FINDSTRINGEXACT, 0, name); - SendDlgItemMessageA(hDlg, KEYMAPPER_FlipperR, CB_SETCURSEL, ind, 0); + ind = SendDlgItemMessageW(hDlg, KEYMAPPER_FlipperR, CB_FINDSTRINGEXACT, 0, name); + SendDlgItemMessageW(hDlg, KEYMAPPER_FlipperR, CB_SETCURSEL, ind, 0); name = (LPARAM)get_vk_key_name(Options.PlungerKeyDft, keyName); - ind = SendDlgItemMessageA(hDlg, KEYMAPPER_Plunger, CB_FINDSTRINGEXACT, 0, name); - SendDlgItemMessageA(hDlg, KEYMAPPER_Plunger, CB_SETCURSEL, ind, 0); + ind = SendDlgItemMessageW(hDlg, KEYMAPPER_Plunger, CB_FINDSTRINGEXACT, 0, name); + SendDlgItemMessageW(hDlg, KEYMAPPER_Plunger, CB_SETCURSEL, ind, 0); name = (LPARAM)get_vk_key_name(Options.LeftTableBumpKeyDft, keyName); - ind = SendDlgItemMessageA(hDlg, KEYMAPPER_BumpLeft, CB_FINDSTRINGEXACT, 0, name); - SendDlgItemMessageA(hDlg, KEYMAPPER_BumpLeft, CB_SETCURSEL, ind, 0); + ind = SendDlgItemMessageW(hDlg, KEYMAPPER_BumpLeft, CB_FINDSTRINGEXACT, 0, name); + SendDlgItemMessageW(hDlg, KEYMAPPER_BumpLeft, CB_SETCURSEL, ind, 0); name = (LPARAM)get_vk_key_name(Options.RightTableBumpKeyDft, keyName); - ind = SendDlgItemMessageA(hDlg, KEYMAPPER_BumpRight, CB_FINDSTRINGEXACT, 0, name); - SendDlgItemMessageA(hDlg, KEYMAPPER_BumpRight, CB_SETCURSEL, ind, 0); + ind = SendDlgItemMessageW(hDlg, KEYMAPPER_BumpRight, CB_FINDSTRINGEXACT, 0, name); + SendDlgItemMessageW(hDlg, KEYMAPPER_BumpRight, CB_SETCURSEL, ind, 0); name = (LPARAM)get_vk_key_name(Options.BottomTableBumpKeyDft, keyName); - ind = SendDlgItemMessageA(hDlg, KEYMAPPER_BumpBottom, CB_FINDSTRINGEXACT, 0, name); - SendDlgItemMessageA(hDlg, KEYMAPPER_BumpBottom, CB_SETCURSEL, ind, 0); + ind = SendDlgItemMessageW(hDlg, KEYMAPPER_BumpBottom, CB_FINDSTRINGEXACT, 0, name); + SendDlgItemMessageW(hDlg, KEYMAPPER_BumpBottom, CB_SETCURSEL, ind, 0); return 0; } default: @@ -653,10 +653,10 @@ INT_PTR _stdcall options::KeyMapDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPAR } -LPSTR options::get_vk_key_name(uint16_t vk, LPSTR keyName) +LPWSTR options::get_vk_key_name(uint16_t vk, LPWSTR keyName) { - LONG scanCode = MapVirtualKeyA(vk, MAPVK_VK_TO_VSC) << 16; + LONG scanCode = MapVirtualKeyW(vk, MAPVK_VK_TO_VSC) << 16; if (vk >= 0x21u && vk <= 0x2Eu) scanCode |= 0x1000000u; - return GetKeyNameTextA(scanCode, keyName, 19) != 0 ? keyName : nullptr; + return GetKeyNameTextW(scanCode, keyName, 19) != 0 ? keyName : nullptr; } diff --git a/SpaceCadetPinball/options.h b/SpaceCadetPinball/options.h index aa4a1da..821eb3a 100644 --- a/SpaceCadetPinball/options.h +++ b/SpaceCadetPinball/options.h @@ -66,7 +66,7 @@ public: static void keyboard(); static INT_PTR _stdcall KeyMapDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam); - static LPSTR get_vk_key_name(uint16_t vk, LPSTR keyName); + static LPWSTR get_vk_key_name(uint16_t vk, LPWSTR keyName); static optionsStruct Options; private: diff --git a/SpaceCadetPinball/winmain.cpp b/SpaceCadetPinball/winmain.cpp index 56a1ed7..fe2f11c 100644 --- a/SpaceCadetPinball/winmain.cpp +++ b/SpaceCadetPinball/winmain.cpp @@ -131,11 +131,11 @@ int winmain::WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi } iFrostUniqueMsg = RegisterWindowMessageA("PinballThemeSwitcherUniqueMsgString"); - auto windowClass = pinball::get_rc_string(167, 0); - auto windowHandle = FindWindowA(windowClass, nullptr); + auto windowClass = pinball::get_rc_Wstring(167, 0); + auto windowHandle = FindWindowW(windowClass, nullptr); if (windowHandle) { - SendMessageA(windowHandle, iFrostUniqueMsg, 0, 0); + SendMessageW(windowHandle, iFrostUniqueMsg, 0, 0); return 0; } @@ -147,28 +147,28 @@ int winmain::WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi picce.dwICC = 5885; InitCommonControlsEx(&picce); - WNDCLASSEXA wndClass{}; + WNDCLASSEXW wndClass{}; wndClass.cbSize = sizeof wndClass; wndClass.style = CS_DBLCLKS | CS_BYTEALIGNCLIENT; wndClass.lpfnWndProc = message_handler; wndClass.cbClsExtra = 0; wndClass.cbWndExtra = 0; wndClass.hInstance = hInstance; - wndClass.hIcon = LoadIconA(hInstance, "ICON_1"); - wndClass.hCursor = LoadCursorA(nullptr, IDC_ARROW); + wndClass.hIcon = LoadIconW(hInstance, L"ICON_1"); + wndClass.hCursor = LoadCursorW(nullptr, (PWSTR)IDC_ARROW); wndClass.hbrBackground = (HBRUSH)16; - wndClass.lpszMenuName = "MENU_1"; + wndClass.lpszMenuName = L"MENU_1"; wndClass.lpszClassName = windowClass; auto splash = splash::splash_screen(hInstance, "splash_bitmap", "splash_bitmap"); - RegisterClassExA(&wndClass); + RegisterClassExW(&wndClass); pinball::FindShiftKeys(); options::init_resolution(); - char windowName[40]; - lstrcpyA(windowName, pinball::get_rc_string(38, 0)); - windowHandle = CreateWindowExA(0, windowClass, windowName, WndStyle, 0, 0, 640, 480, nullptr, nullptr, hInstance, - nullptr); + auto windowName = pinball::get_rc_Wstring(38, 0); + windowHandle = CreateWindowExW(0, windowClass, windowName, + WndStyle, 0, 0, 640, 480, nullptr, nullptr, hInstance, nullptr); + hwnd_frame = windowHandle; if (!windowHandle) { @@ -329,7 +329,7 @@ int winmain::WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi gdrv::uninit(); DestroyWindow(hwnd_frame); options::path_uninit(); - UnregisterClassA(windowClass, hinst); + UnregisterClassW(windowClass, hinst); if (restart) { @@ -388,12 +388,12 @@ LRESULT CALLBACK winmain::message_handler(HWND hWnd, UINT Msg, WPARAM wParam, LP midi::music_stop(); } - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); case WM_KILLFOCUS: has_focus = 0; gdrv::get_focus(); pb::loose_focus(); - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); case WM_CREATE: { RECT rect{}; @@ -424,18 +424,18 @@ LRESULT CALLBACK winmain::message_handler(HWND hWnd, UINT Msg, WPARAM wParam, LP changeDisplayFg); --memory::critical_allocation; - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); } case WM_MOVE: no_time_loss = 1; - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); case WM_SETFOCUS: has_focus = 1; no_time_loss = 1; gdrv::get_focus(); fullscrn::force_redraw(); pb::paint(); - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); case WM_PAINT: { PAINTSTRUCT paint{}; @@ -451,16 +451,16 @@ LRESULT CALLBACK winmain::message_handler(HWND hWnd, UINT Msg, WPARAM wParam, LP bQuit = 1; PostQuitMessage(0); fullscrn::shutdown(); - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); case WM_ERASEBKGND: break; case WM_SIZE: fullscrn::window_size_changed(); fullscrn::force_redraw(); pb::paint(); - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); default: - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); } return 0; } @@ -469,7 +469,7 @@ LRESULT CALLBACK winmain::message_handler(HWND hWnd, UINT Msg, WPARAM wParam, LP { case WM_MENUSELECT: if (lParam) - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); if (fullscrn::screen_mode) fullscrn::set_menu_mode(0); return 0; @@ -477,10 +477,10 @@ LRESULT CALLBACK winmain::message_handler(HWND hWnd, UINT Msg, WPARAM wParam, LP no_time_loss = 1; if (fullscrn::screen_mode) fullscrn::set_menu_mode(1); - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); case WM_GETMINMAXINFO: fullscrn::getminmaxinfo((MINMAXINFO*)lParam); - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); case WM_DISPLAYCHANGE: options::update_resolution_menu(); if (fullscrn::displaychange()) @@ -488,10 +488,10 @@ LRESULT CALLBACK winmain::message_handler(HWND hWnd, UINT Msg, WPARAM wParam, LP options::Options.FullScreen = 0; options::menu_check(Menu1_Full_Screen, 0); } - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); case WM_KEYUP: pb::keyup(wParamI); - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); case WM_KEYDOWN: if (!(lParam & 0x40000000)) pb::keydown(wParamI); @@ -523,26 +523,26 @@ LRESULT CALLBACK winmain::message_handler(HWND hWnd, UINT Msg, WPARAM wParam, LP break; } if (!pb::cheat_mode) - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); switch (wParam) { case 'H': DispGRhistory = 1; - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); case 'Y': SetWindowTextA(hWnd, "Pinball"); DispFrameRate = DispFrameRate == 0; - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); case VK_F1: pb::frame(10); - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); case VK_F15: single_step = single_step == 0; if (single_step == 0) no_time_loss = 1; - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); default: - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); } case WM_SYSCOMMAND: switch (wParam & 0xFFF0) @@ -554,17 +554,17 @@ LRESULT CALLBACK winmain::message_handler(HWND hWnd, UINT Msg, WPARAM wParam, LP case SC_MINIMIZE: if (!single_step) pause(); - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); case SC_SCREENSAVE: fullscrn::activate(0); - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); default: break; } end_pause(); - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); case WM_INITMENU: no_time_loss = 1; - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); case WM_COMMAND: no_time_loss = 1; switch (wParam) @@ -670,7 +670,7 @@ LRESULT CALLBACK winmain::message_handler(HWND hWnd, UINT Msg, WPARAM wParam, LP if (wParam >= Menu1_Language && wParam < Menu1_LanguageMax) options::toggle(wParamI); - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); case WM_LBUTTONDOWN: if (pb::game_mode) { @@ -686,7 +686,7 @@ LRESULT CALLBACK winmain::message_handler(HWND hWnd, UINT Msg, WPARAM wParam, LP else pb::keydown(options::Options.LeftFlipperKey); - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); } break; case WM_LBUTTONUP: @@ -698,25 +698,25 @@ LRESULT CALLBACK winmain::message_handler(HWND hWnd, UINT Msg, WPARAM wParam, LP } if (!pb::cheat_mode) pb::keyup(options::Options.LeftFlipperKey); - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); case WM_RBUTTONDOWN: if (!pb::cheat_mode) pb::keydown(options::Options.RightFlipperKey); if (pb::game_mode) - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); break; case WM_RBUTTONUP: if (!pb::cheat_mode) pb::keyup(options::Options.RightFlipperKey); - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); case WM_MBUTTONDOWN: pb::keydown(options::Options.PlungerKey); if (pb::game_mode) - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); break; case WM_MBUTTONUP: pb::keyup(options::Options.PlungerKey); - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); case WM_POWERBROADCAST: if (wParam == 4 && options::Options.FullScreen) { @@ -724,20 +724,20 @@ LRESULT CALLBACK winmain::message_handler(HWND hWnd, UINT Msg, WPARAM wParam, LP options::menu_check(Menu1_Full_Screen, 0); fullscrn::set_screen_mode(options::Options.FullScreen); } - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); case WM_PALETTECHANGED: InvalidateRect(hWnd, nullptr, 0); - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); case MM_MCINOTIFY: if (wParam == 1) midi::restart_midi_seq(lParam); - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); default: - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); } pb::mode_countdown(-1); - return DefWindowProcA(hWnd, Msg, wParam, lParam); + return DefWindowProcW(hWnd, Msg, wParam, lParam); } int winmain::ProcessWindowMessages() @@ -804,14 +804,12 @@ HDC winmain::_GetDC(HWND hWnd) int winmain::a_dialog(HINSTANCE hInstance, HWND hWnd) { - char appName[100]; - char szOtherStuff[130]; + PCWSTR appName = pinball::get_rc_Wstring(38, 0); + PWSTR szOtherStuff = pinball::get_rc_Wstring(102, 0); - lstrcpyA(appName, pinball::get_rc_string(38, 0)); - lstrcpyA(szOtherStuff, pinball::get_rc_string(102, 0)); - strcat_s(szOtherStuff, " Decompilation version 1.1.2"); - auto icon = LoadIconA(hInstance, "ICON_1"); - return ShellAboutA(hWnd, appName, szOtherStuff, icon); + lstrcatW(szOtherStuff, L" Decompilation version 1.1.2"); + auto icon = LoadIconW(hInstance, L"ICON_1"); + return ShellAboutW(hWnd, appName, szOtherStuff, icon); } void winmain::end_pause() From bd606436bd6a8a818b1c889756b71b3925ef843a Mon Sep 17 00:00:00 2001 From: Muzychenko Andrey <33288308+k4zmu2a@users.noreply.github.com> Date: Thu, 28 Oct 2021 11:41:30 +0300 Subject: [PATCH 4/4] Added French translation. --- SpaceCadetPinball/SpaceCadetPinball.rc | Bin 229348 -> 265786 bytes SpaceCadetPinball/options.cpp | 1 + SpaceCadetPinball/options.h | 1 + SpaceCadetPinball/resource.h | 2 +- 4 files changed, 3 insertions(+), 1 deletion(-) diff --git a/SpaceCadetPinball/SpaceCadetPinball.rc b/SpaceCadetPinball/SpaceCadetPinball.rc index 8b43c83e858058f6288ffde26429c9b99b447926..6e8eea6dbeb31f6d82f81444eef557a1d1b95801 100644 GIT binary patch delta 11614 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 b&Ba3>slPOr-{cq4&cp|oFHSyY-J|{wx^h+B delta 21 dcmdlrN8rhS-i8*&7N#xC8)~<+@vxXM0RU*F2gv{c diff --git a/SpaceCadetPinball/options.cpp b/SpaceCadetPinball/options.cpp index 127aff2..15000bc 100644 --- a/SpaceCadetPinball/options.cpp +++ b/SpaceCadetPinball/options.cpp @@ -77,6 +77,7 @@ LanguageMenuEntry options::LanguageMenu[] {L"Polski", Languages::Polish}, {L"Deutsch", Languages::German}, {L"日本", Languages::Japanese}, + {L"Français", Languages::French}, }; void options::ReadOptions() diff --git a/SpaceCadetPinball/options.h b/SpaceCadetPinball/options.h index 821eb3a..598ebaa 100644 --- a/SpaceCadetPinball/options.h +++ b/SpaceCadetPinball/options.h @@ -11,6 +11,7 @@ enum class Languages Polish = MAKELANGID(LANG_POLISH, SUBLANG_POLISH_POLAND), German = MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN), Japanese = MAKELANGID(LANG_JAPANESE, SUBLANG_JAPANESE_JAPAN), + French = MAKELANGID(LANG_FRENCH, SUBLANG_FRENCH), }; struct LanguageMenuEntry diff --git a/SpaceCadetPinball/resource.h b/SpaceCadetPinball/resource.h index 2141272..d1d360a 100644 --- a/SpaceCadetPinball/resource.h +++ b/SpaceCadetPinball/resource.h @@ -242,7 +242,7 @@ #define DLG_HIGHSCORES_EditName5 605 #define Menu1_AlternativeRender 601 #define Menu1_Language 700 -#define Menu1_LanguageMax 707 +#define Menu1_LanguageMax 708 // Next default values for new objects //