From b0b0e97aa5a06b22768bb9c9ea5e8caf383d78a4 Mon Sep 17 00:00:00 2001 From: Jonas Kümmerlin Date: Thu, 27 Dec 2018 20:50:39 +0100 Subject: split into multiple files --- alf/alfcompat.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 alf/alfcompat.cpp (limited to 'alf/alfcompat.cpp') diff --git a/alf/alfcompat.cpp b/alf/alfcompat.cpp new file mode 100644 index 0000000..452b9bc --- /dev/null +++ b/alf/alfcompat.cpp @@ -0,0 +1,23 @@ +#include "alfpriv.h" + +ALFCompatFunctions * +ALF_CreateCompatFuncTable(void) +{ + ALFCompatFunctions *compatfn = (ALFCompatFunctions*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY|HEAP_GENERATE_EXCEPTIONS, sizeof(ALFCompatFunctions)); + +#define COMPAT(dll, entrypoint, ordinal) \ + do { \ + FARPROC p = GetProcAddress(GetModuleHandleA(#dll), #entrypoint); \ + if (!p && ordinal) \ + p = GetProcAddress(GetModuleHandleA(#dll), (char*)ordinal); \ + CopyMemory(&compatfn->entrypoint, &p, sizeof(void*)); \ + } while (0) + + COMPAT(comctl32.dll, SetWindowSubclass, 410); + COMPAT(comctl32.dll, DefSubclassProc, 413); + COMPAT(comctl32.dll, RemoveWindowSubclass, 412); + +#undef COMPAT + + return compatfn; +} -- cgit v1.2.3