首页 > 其他分享 >使用 PostMessage 函数来发送带有 std::vector 作为参数的消息

使用 PostMessage 函数来发送带有 std::vector 作为参数的消息

时间:2023-05-26 17:34:08浏览次数:34  
标签:PostMessage std reinterpret cast 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 进行转换时可能会破坏数据的结构或出现未定义行为

标签:PostMessage,std,reinterpret,cast,vector,指针
From: https://www.cnblogs.com/INSTANTMOC/p/17435373.html

相关文章

  • RustDesk,可私有部署的远程控制软件
    一、服务端:运行压缩包里面的RustDeskServer.Setup.exe安装即可  二、客户端:输入ID服务器IP地址即可开始连接,完全免费使用,无任何限制 ......
  • java-向量(Vector)
     向量(Vector)类和传统数组非常相似,但是Vector的大小能根据需要动态的变化。和数组一样,Vector对象的元素也能通过索引访问。使用Vector类最主要的好处就是在创建对象的时候不必给对象指定大小,它的大小会根据需要动态的变化。https://www.lekaowang.com/glhjs/hty/......
  • 【如何实现tinySTL】实现小型的vector string 将 string 放入vector中
    语法细节类内的静态(static)成员在类外定义的时候不加statictypename的作用1.一种是在声明模板类、模板函数的参数的时候2.还有一种是在取别名的时候std::enable_if的几种用法定义cincoutendl都是什么endl是一个函数参数是basic_ostreamcincout是两个对象【在指定的地址构造......
  • servJump extends HttpServlet //request.getRequestDispatcher //response.sendRed
    packagecom.test;importjava.io.IOException;importjava.io.PrintWriter;importjava.util.HashMap;importjava.util.Map;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;impo......
  • pta_【CPP0039】vector应用测试
    #include<iostream>#include<vector>#include<algorithm>usingnamespacestd;intmain(void){inti,a[10],b;for(i=0;i<10;i++){scanf("%d",&a[i]);}scanf("%d",&b);//插入的数{vector<int&......
  • IO库和string、vector
    IO库重载了移位运算符C++并没有函数输出,而是奇怪的运算符scanf()   printf()实际上cin他们是一个类的对象 干脆禁止拷贝,因为要管理缓冲区,防止冲突<<移位有左结合性,所以具体应该是(cout<<a)<<b  前面应该返回一个cout细度 第一个参数是ostream对象,因为禁......
  • 编写C++时遇到"undefined reference to `std::cout'"
    今天直接将C语言的配置文件粘贴到了C++的工程里面,代码没有报错但是编译报错后面自己试了一下发现用gcc编译c++的话就会报"undefinedreferenceto`std::cout'"的错误解决方法:用g++重新编译......
  • 由于string不能输入空格,和cin不能输入空格;用了map和vector和cin.get()的题;本题都正确
    1.cin是C++中最常用的输入语句,当遇到空格或者回车键即停止。无法解决。2.cin.get()函数可以接收空格,遇回车结束输入。3.string也不能输入空格给定两个字符串 A 和 B,本题要求你输出 A+B,即两个字符串的并集。要求先输出 A,再输出 B,但重复的字符必须被剔除。输入格式:输......
  • vector传递内存参数的三种方式
    vector作为参数的三种传参方式c++中常用的vector容器作为参数时,有三种传参方式,分别如下(为说明问题,用二维vector):function1(std::vector<std::vector<int>>vec),传值function2(std::vector<std::vector<int>>&vec),传引用function3(std::vector<std::vector<int>>*ve......
  • 记一个 Duplicate class kotlin-stblib vs kotlin-stdlib-jdk7/8 编译问题引发的案例
    某天将项目kotlin版本升级到了1.8.0,然后编译报错了,Duplicateclasskotlin-stblibvskotlin-stdlib-jdk7/8然后开始寻求解决方案...Duplicateclasskotlin-stblibvskotlin-stdlib-jdk7/8kotlin-stdlibkotlin1.8.0基于JVM1.8编译,不再支持JVM1.6和1.7。后续不......