私は主に、この例が友人として wndproc をどのように使用するかに焦点を当てています...私はそれがどのように機能するかについて少し混乱しており、これが複数のウィンドウで機能するかどうか、またどのように機能するかを理解しようとしています
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 に答える