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 过程中你可以做

pD2DResource->Render((int)lParam)

当您将这些自定义信息作为标准 Windows 消息(WM_USER 下面的消息号)的一部分发送时,您应该小心不要将您在窗口 proc 中收到的 LPARAM 值直接传递给 DefWindowProc(默认窗口 proc) - 因为 yourInt 可能有该特定标准 Windows 消息的特殊含义。您可以将一个固定值从您的窗口 proc 传递到 DefWindowProc,或者查看其他方法通过 LPARAM/WPARAM 传递超过 4 个字节的信息。由于 SendMessage 是同步的,您可以传递结构的地址 - 就像许多标准 Windows 消息一样。

于 2013-03-13T23:32:16.250 回答