【发布时间】:2015-10-17 08:22:06
【问题描述】:
我正在创建一个hwnd 及其各自的WndProc LRESULT CALLBACK 的IDE。我需要将WndProc 更改为自定义的。
我读到SetWindowLong 可以完成这项工作,但我找不到任何可行的示例。例如:
HWND hwnd; //My window
SetWindowLong(hwnd, GWL_WNDPROC, myNewWndProc);
SetWindowLong 的第三个参数是 Long,作为函数的名称。如何将我的WndProc 函数引用到Long?
我的WndProc:
LRESULT CALLBACK WndProcedure(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam){
msg_dev(toString(uMsg));
switch(uMsg){
case WM_MOUSEMOVE:
SetCursor(LoadCursor(NULL, IDC_HAND));
break;
case WM_LBUTTONDOWN:
msg_dev("Button down!");
break;
default:
DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return 0;
};
【问题讨论】:
-
您说的是子分类。为此使用
SetWindowSubclass。
标签: c++ winapi runtime wndproc hwnd