假设我想向我的 WndProc 发送一条消息,但我还想发送一个整数。
SendMessage (m_hWnd, WM_DISPLAYCHANGE, NULL, int?);
我的 WndProc 会收到它吗?然后我想将该 lParam(integer) 发送给一个函数。
case WM_DISPLAYCHANGE:
{
pD2DResources->OnRender(lParam);
}
break;
如何将整数作为 lParam 或 wParam 发送,然后将该整数作为参数重新发送到函数?
最佳答案
长期以来,LPARAM 和 WPARAM 只是一个 typedef。所以可以按原样发送一个int。
SendMessage(m_hWnd, WM_DISPLAYCHANGE, NULL, (LPARAM)yourInt)
在你的 wnd 过程中你可以做
pD2DResource->Render((int)lParam)
当您将这些自定义信息作为标准 Windows 消息的一部分(消息编号低于 WM_USER)发送时,您应该注意不要将您在窗口过程中收到的 LPARAM 值直接传递给 DefWindowProc(默认窗口过程)——因为您的 Int可能对该特定标准 Windows 消息具有特殊含义。您可以将固定值从窗口过程传递到 DefWindowProc,或者查看其他方法通过 LPARAM/WPARAM 传递超过 4 字节的信息。由于 SendMessage 是同步的,您可以传递结构的地址 - 就像许多标准 Windows 消息一样。
关于c++ - 使用 int 作为 lParam 或 wParam 的参数的 SendMessage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15398337/