20#define _WIN32_WINNT 0x0501
39#define DELETE_SELF 0x02
40#define DELETE_PREV 0x04
147 static const struct message end_of_sequence = { 0, 0 };
157 "%s: the procnum %d was expected, but got procnum %d instead\n",
160 "%s: in procnum %d expecting wParam 0x%lx got 0x%lx\n",
165 ok(!
expected->procnum,
"Received fewer messages than expected\n");
166 ok(!actual->
procnum,
"Received more messages than expected\n");
202 msg.procnum = uldSubclass;
223 100, 100, 200, 200, 0, 0, 0,
NULL);
224 ok(
hwnd !=
NULL,
"failed to create test subclass wnd\n");
298 ok(atom,
"failed to register test class\n");
314#define MAKEFUNC_ORD(f, ord) (p##f = (void*)GetProcAddress(hmod, (LPSTR)(ord)))
320 if(!pSetWindowSubclass || !pRemoveWindowSubclass || !pDefSubclassProc)
322 win_skip(
"SetWindowSubclass and friends are not available\n");
328 ok(
broken(
ptr == 0) ||
ptr != 0,
"expected named export for SetWindowSubclass\n");
331#define TESTNAMED(f) \
332 ptr = (void*)GetProcAddress(hmod, #f); \
333 ok(ptr != 0, "expected named export for " #f "\n");
static void * heap_alloc(size_t len)
static BOOL heap_free(void *mem)
static void * heap_realloc(void *mem, size_t len)
BOOL WINAPI SetWindowSubclass(HWND hWnd, SUBCLASSPROC pfnSubclass, UINT_PTR uIDSubclass, DWORD_PTR dwRef)
BOOL WINAPI RemoveWindowSubclass(HWND hWnd, SUBCLASSPROC pfnSubclass, UINT_PTR uID)
LRESULT WINAPI DefSubclassProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
#define GetProcAddress(x, y)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
static PEXPLICIT_ACCESSW *static HMODULE hmod
unsigned __int3264 UINT_PTR
#define WS_OVERLAPPEDWINDOW
_In_ SUBCLASSPROC _In_ UINT_PTR _In_ DWORD_PTR dwRefData
static void test_subclass(void)
static struct message * sequence
static BOOL init_function_pointers(void)
static const struct message Sub_MixDelPrevTest[]
static const struct message Sub_BasicTest[]
static const struct message Sub_MixTest[]
static const struct message Sub_MixNestDelTest[]
static void flush_sequence(void)
#define MAKEFUNC_ORD(f, ord)
static const struct message Sub_DeletedTest[]
static LRESULT WINAPI wnd_proc_1(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
static WNDPROC orig_proc_3
static const struct message Sub_OldAfterNewTest[]
static const struct message Sub_AfterDeletedTest[]
static LRESULT WINAPI wnd_proc_3(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
static BOOL register_window_classes(void)
static LRESULT WINAPI wnd_proc_sub(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam, UINT_PTR uldSubclass, DWORD_PTR dwRefData)
static const struct message Sub_MixAndNestTest[]
#define SetWindowLongPtrA
HWND WINAPI CreateWindowExA(_In_ DWORD dwExStyle, _In_opt_ LPCSTR lpClassName, _In_opt_ LPCSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
LRESULT WINAPI DefWindowProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
ATOM WINAPI RegisterClassA(_In_ CONST WNDCLASSA *)
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
BOOL WINAPI DestroyWindow(_In_ HWND)
LRESULT WINAPI CallWindowProcA(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)