使用 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 进行转换时可能会破坏数据的结构或出现未定义行为
标签:PostMessage,std,reinterpret,cast,vector,指针 From: https://www.cnblogs.com/INSTANTMOC/p/17435373.html