2

WndProc にメッセージを送信したいが、整数も送信したいとします。

SendMessage (m_hWnd, WM_DISPLAYCHANGE, NULL, int?);

私のWndProcはそれを正しく受け取りますか? 次に、その lParam(integer) を関数に送りたいと思います。

case WM_DISPLAYCHANGE:
    {
         pD2DResources->OnRender(lParam);
    }
    break;

整数を lParam または wParam として送信し、その整数をパラメーターとして関数に再送信するにはどうすればよいですか?

4

1 に答える 1

1

LPARAM と WPARAM は単なる typedef です。したがって、int をそのまま送信できます。

SendMessage(m_hWnd, WM_DISPLAYCHANGE, NULL, (LPARAM)yourInt)

あなたのwnd procでできること

pD2DResource->Render((int)lParam)

これらのカスタム情報を標準の Windows メッセージ (WM_USER の下のメッセージ番号) の一部として送信しているため、ウィンドウ プロシージャで受け取った LPARAM 値を直接 DefWindowProc (デフォルト ウィンドウ プロシージャ) に渡さないように注意する必要があります。その特定の標準 Windows メッセージの特別な意味。ウィンドウ プロシージャから DefWindowProc に固定値を渡すか、LPARAM/WPARAM を介して 4 バイトを超える情報を渡す他の方法を検討することができます。SendMessage は同期であるため、多くの標準的な Windows メッセージと同様に、構造体のアドレスを渡すことができます。

于 2013-03-13T23:32:16.250 に答える