summaryrefslogtreecommitdiff
path: root/asm/window_util.c
diff options
context:
space:
mode:
Diffstat (limited to 'asm/window_util.c')
-rw-r--r--asm/window_util.c34
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);
+}