0

我主要关注这个例子如何使用 wndproc 作为朋友...我有点困惑它是如何工作的,我只是想弄清楚这是否以及如何在多个窗口中工作

http://www.uta.fi/~jl/pguibook/api2oo.html

4

1 回答 1

0

是的,它可以与多个窗口一起使用,因为它存储了指向具有相应 HWND 的 C++ 对象的指针:

Window *wPtr;
...
SetWindowLongPtr(hWnd, 0, (LONG_PTR) wPtr);

然后全局WndProc检索该指针并通过它调用对象的方法:

wPtr = (Window*) ::GetWindowLongPtr(hWnd, 0);
wPtr->WndProc(message, wParam, lParam);

(请注意,原始代码使用SetWindowLong,因此在 64 位程序中不起作用 - 我已将上面的代码更改为使用SetWindowLongPtr。)

于 2011-05-05T10:17:56.547 回答