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 に答える