diff options
Diffstat (limited to 'asm/window_util.c')
-rw-r--r-- | asm/window_util.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/asm/window_util.c b/asm/window_util.c new file mode 100644 index 0000000..fadc86a --- /dev/null +++ b/asm/window_util.c @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2018 Iru Cai <mytbk920423@gmail.com> + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +#include "window_util.h" + +wProc windowCallbacks[16]; // 48a010 +int callbackSize = 0; // 0x46cad8 + +extern HWND gWindowHandle; + +int Wait_0402_Message(wProc cb, int a2) +{ + callbackSize++; + windowCallbacks[callbackSize] = cb; + PostMessageA(gWindowHandle, 0x401, 0, a2); + while (1) { + MSG msg; + if (PeekMessageA(&msg, 0, 0, 0, 1) == 0) + continue; + if (msg.message == 0x402) { + callbackSize--; + return msg.lParam; + } + TranslateMessage(&msg); + DispatchMessageA(&msg); + } +} + +void Post_0402_Message(LPARAM lp) +{ + PostMessageA(gWindowHandle, 0x402, 0, lp); +} |