使用 PostMessage 函数来发送带有 std::vector 作为参数的消息
使用 PostMessage 函数来发送带有 std::vector 作为参数的消息,您可以将 std::vector 的地址封装进 LPARAM 类型的指针中,并将其传递给 PostMessage 函数的 lParam 参数。在接收方,您需要使用 reinterpret_cast 将 LPARAM 转换回 std::vector 的指针,然后使用它来访问 std::vector。下面是一些样例代码:
在发送方:
std::vector<int>* pVec = new std::vector<int>({1, 2, 3});
PostMessage(m_hWnd, WM_MYMESSAGE, 0, reinterpret_cast<LPARAM>(pVec));
在接收方:
case WM_MYMESSAGE:
{
std::vector<int>* pVec = reinterpret_cast<std::vector<int>*>(lParam);
for (auto& i : *pVec) {
// do something with the vector elements
}
delete pVec;
break;
}
在这个例子中,我们将一个指向 std::vector 的指针传递给了 PostMessage 函数,并在接收方使用 reinterpret_cast 将它转换回 std::vector 的指针。注意,在接收方需要手动释放指针。
其中reinterpret_cast 的作用是直接将一个指针或引用转换为另一种类型的指针或引用,而不进行任何类型检查。这意味着使用 reinterpret_cast 进行转换时可能会破坏数据的结构或出现未定义行为
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)