SendMessage使用int作为lParam或wParam的参数?

时间:2013-03-13 23:16:13

标签: c++ function wndproc lparam

假设我想向我的WndProc发送消息,但我想发送一个整数。

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

我的WndProc会收到它吗?然后我想将lParam(整数)发送给函数。

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

如何将整数作为lParam或wParam发送,然后将该整数作为参数重新发送给函数?

1 个答案:

答案 0 :(得分:1)

LPARAM和WPARAM只是一个长期的typedef。所以int可以按原样发送。

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

在你的wnd proc中,你可以做到

pD2DResource->Render((int)lParam)

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