Title

西雅图

使用 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 进行转换时可能会破坏数据的结构或出现未定义行为

posted @   WAASSTT  阅读(83)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
Title
点击右上角即可分享
微信分享提示