关于用PostMessage发消息时所遇到的问题

chrysler 2001-07-14 08:33:29
我想用PostMessage发送一个自定义的消息,消息函数中的一个参数是字符串指针,如果我想在传递参数时用CString,在处理时也用CString。但是由于PostMessage的参数是UINT型,只有传递地址才行,但这样就必须在堆中开辟内存,很容易造成内存泄漏,请问各位大虾有没有好一点的办法?
...全文
205 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
不解 2001-07-14
  • 打赏
  • 举报
回复
好像在前天的帖子里有这方面的问题,找找看。
记得是这样:lParam=(LPARAM)&str;
PostMessage(WM_MESSAGE,wParam,lParam);
WM_MESSAGE的处理函数:
CString& canshu=lParam;
记得不很清楚了,试试吧。
chrysler 2001-07-14
  • 打赏
  • 举报
回复
真是一语说醒梦中人,我一直在想如果用TCHAR *str=new TCHAR[MAX]的方法,那么处理字符串时很麻烦,却没想到new一个CString.谢谢你,分数送上
kimo1980 2001-07-14
  • 打赏
  • 举报
回复
可以呀。我一般是 new 一个CString对象出来,将该CString对象的指针放到消息参数里发出去,消息接收者负责用 delete 删除这个CString对象。总之,这种方法要防止内存泄漏,需要消息发送方和接收方做好约定:由谁来删除 new 出来的东西。


消息发送方:
CString * str= new CString;
*str="hfakhfkjdhjkhjds";
PostMessage(hWnd,WM_MESSAGE,0,(LPARAM)str);

消息接收方:
CString *str=(CString*)lParam;
...
...
//使用str
...
...
delete str;
chrysler 2001-07-14
  • 打赏
  • 举报
回复
难道每人会么?

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧