我一直在尝试学习如何使用SetWindowLongPtr()
和理解它,如下所示:
您可以使用以下函数来获取当前消息并将其发送到自定义协议:
LONG_PTR Some_Ptr = SetWindowLongPtr(Some_Hwnd, GWLP_WNDPROC, (LONG_PTR)Custom_Proc);
创建自定义协议,示例如下:
static LRESULT CALLBACK Custom_Proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_COMMAND: MessageBox(hwnd,"This is a window","OKAY",NULL); break; default: return CallWindowProc((WNDPROC)Some_Ptr, hwnd, msg, wParam, lParam); break; } return CallWindowProc((WNDPROC)Some_Ptr, hwnd, msg, wParam, lParam); }
我的问题如下:
- 我在这里错过了什么吗?它是否正确?
- 你在哪里打电话
SetWindowLongPtr()
?如果您需要特定情况,请想象Some_Hwnd
在 WM_CREATE 中创建了一个按钮句柄。但我宁愿它对其他情况开放。