будет ли этот пример OO win32API работать с несколькими окнами? - PullRequest
0 голосов
/ 05 мая 2011

Я в основном сосредоточен на том, как этот пример использует wndproc в качестве друга ... я немного запутался, как это работает, и я просто пытаюсь выяснить, будет ли и как это работать с более чем одним окном

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

1 Ответ

0 голосов
/ 05 мая 2011

Да, он будет работать с более чем одним окном, поскольку хранит указатель на объект C ++ с соответствующим HWND:

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

и глобальный WndProc затем извлекает этот указатель и через него вызывает методы объекта:

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

(Обратите внимание, что оригинальный код использует SetWindowLong, и, следовательно, не будет работать в 64-битной программе - я изменил код выше для использования SetWindowLongPtr.)

...