Iceman Asked:2020-07-16 16:42:40 +0800 CST2020-07-16 16:42:40 +0800 CST 2020-07-16 16:42:40 +0800 CST 如何将指向对象的指针传递给窗口过程(回调)? 772 需要在窗口回调中使用 main 中声明的类实例: long __stdcall WindowProc(HWND, UINT, WPARAM, LPARAM); 如果 WPARAM 和 LPARAM 都已被其功能“占用”,如何将指针传递给该函数? c 1 个回答 Voted Best Answer Abyx 2020-07-16T18:25:55+08:002020-07-16T18:25:55+08:00 1) SetWindowLongPtr+GetWindowLongPtr(hwnd, GWLP_USERDATA) SetWindowLongPtr通常在 WM_CREATE 处理程序中调用,通过CREATESTRUCT::lpCreateParams. 2)SetProp(hwnd, "unique str", (HANDLE)data)+ GetProp (数据可以有任何值,它不必是句柄;唯一标识符可以是全局原子) 3) 生成您自己的包装函数,就像在 WTL 中所做的那样。 那些。例如,对于 x86-32,分配内存并在那里写入mov ecx, this / jmp func。
1)
SetWindowLongPtr
+GetWindowLongPtr(hwnd, GWLP_USERDATA)
SetWindowLongPtr
通常在 WM_CREATE 处理程序中调用,通过CREATESTRUCT::lpCreateParams
.2)
SetProp(hwnd, "unique str", (HANDLE)data)
+GetProp
(数据可以有任何值,它不必是句柄;唯一标识符可以是全局原子)
3) 生成您自己的包装函数,就像在 WTL 中所做的那样。
那些。例如,对于 x86-32,分配内存并在那里写入
mov ecx, this / jmp func
。