这个OO win32API示例是否适用于多个窗口?

时间:2011-05-05 10:12:30

标签: oop winapi api friend wndproc

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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