From 21f75f84aa600872d119cf4b4f22bfea4a79d861 Mon Sep 17 00:00:00 2001 From: Struma Date: Thu, 16 Apr 2020 06:40:09 -0400 Subject: [PATCH] Use native SetWindowLong+RegisterHotKey on Windows --- binding/miniffi-binding.cpp | 4 ++-- src/fake-api.h | 8 ++++---- src/fake-api.mm | 32 ++++++++++++++------------------ 3 files changed, 20 insertions(+), 24 deletions(-) diff --git a/binding/miniffi-binding.cpp b/binding/miniffi-binding.cpp index 0aee4293..02900bab 100644 --- a/binding/miniffi-binding.cpp +++ b/binding/miniffi-binding.cpp @@ -60,8 +60,6 @@ static void *MiniFFI_GetFunctionHandle(void *libhandle, const char *func) { CAPTURE(SetWindowPos); CAPTURE(SetWindowTextA); CAPTURE(GetWindowRect); - CAPTURE(RegisterHotKey); - CAPTURE(SetWindowLong); CAPTURE(GetKeyboardState); #ifndef __WIN32__ // Functions only needed on Linux and macOS go here @@ -78,6 +76,8 @@ static void *MiniFFI_GetFunctionHandle(void *libhandle, const char *func) { CAPTURE(GetPrivateProfileString); CAPTURE(GetUserDefaultLangID); CAPTURE(GetUserName); + CAPTURE(RegisterHotKey); + CAPTURE(SetWindowLong); #endif #endif if (!libhandle) diff --git a/src/fake-api.h b/src/fake-api.h index 1121c5bb..efb0605e 100644 --- a/src/fake-api.h +++ b/src/fake-api.h @@ -87,10 +87,6 @@ PREFABI BOOL MKXP_SetWindowTextA(HWND hWnd, LPCSTR lpString); PREFABI BOOL MKXP_GetWindowRect(HWND hWnd, LPRECT lpRect); -PREFABI BOOL MKXP_RegisterHotKey(HWND hWnd, int id, UINT fsModifiers, UINT vk); - -PREFABI LONG MKXP_SetWindowLong(HWND hWnd, int nIndex, LONG dwNewLong); - PREFABI BOOL MKXP_GetKeyboardState(PBYTE lpKeyState); #ifndef __WIN32__ @@ -125,5 +121,9 @@ PREFABI short MKXP_GetUserDefaultLangID(void); PREFABI BOOL MKXP_GetUserName(LPSTR lpBuffer, LPDWORD pcbBuffer); +PREFABI BOOL MKXP_RegisterHotKey(HWND hWnd, int id, UINT fsModifiers, UINT vk); + +PREFABI LONG MKXP_SetWindowLong(HWND hWnd, int nIndex, LONG dwNewLong); + #endif #endif diff --git a/src/fake-api.mm b/src/fake-api.mm index 4831a62a..52dc6e22 100644 --- a/src/fake-api.mm +++ b/src/fake-api.mm @@ -122,24 +122,6 @@ PREFABI BOOL MKXP_GetWindowRect(HWND hWnd, LPRECT lpRect) { return true; } -PREFABI BOOL MKXP_RegisterHotKey(HWND hWnd, int id, UINT fsModifiers, UINT vk) - NOP_VAL(true) - - PREFABI LONG MKXP_SetWindowLong(HWND hWnd, int nIndex, LONG dwNewLong) { -#ifdef __WIN32__ - return SetWindowLong(hWnd, nIndex, dwNewLong); -#else - if (nIndex == -16) { - if (dwNewLong == 0) { - shState->eThread().requestFullscreenMode(true); - } else if (dwNewLong == 0x14ca0000) { - shState->eThread().requestFullscreenMode(false); - } - } - return DUMMY_VAL; -#endif -}; - // Shift key with GetKeyboardState doesn't work for whatever reason, // so Windows needs this too #define ks(sc) shState->eThread().keyStates[SDL_SCANCODE_##sc] @@ -384,4 +366,18 @@ PREFABI BOOL MKXP_GetUserName(LPSTR lpBuffer, LPDWORD pcbBuffer) { return true; } +PREFABI BOOL MKXP_RegisterHotKey(HWND hWnd, int id, UINT fsModifiers, UINT vk) + NOP_VAL(true); + +PREFABI LONG MKXP_SetWindowLong(HWND hWnd, int nIndex, LONG dwNewLong) { + if (nIndex == -16) { + if (dwNewLong == 0) { + shState->eThread().requestFullscreenMode(true); + } else if (dwNewLong == 0x14ca0000) { + shState->eThread().requestFullscreenMode(false); + } + } + return DUMMY_VAL; +}; + #endif