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

标签 c++ function wndproc lparam

假设我想向我的 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/

相关文章:

c++ - 我如何使用 wxwidgets 在 C++ 中访问串口数据

php - 函数返回和foreach故障

c++ - 用另一个函数替换 WndProc 来处理消息?

c++ - WNDPROC声明问题,从C转C++

c++ - 在 C++ 中通过 backgroundworker ReportProgress 发送 int 数组

c++ - 创建内联 std::string

c++一个变量的多个定义

java - 通过调用 Java 方法为 H2 数据库中的新行生成默认值

c++ - 在类声明之前调用类的成员函数

c++ - WndProc 的类方法