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

chrysler 2001-07-14 08:33:29
我想用PostMessage发送一个自定义的消息,消息函数中的一个参数是字符串指针,如果我想在传递参数时用CString,在处理时也用CString。但是由于PostMessage的参数是UINT型,只有传递地址才行,但这样就必须在堆中开辟内存,很容易造成内存泄漏,请问各位大虾有没有好一点的办法?
...全文
130 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
不解 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
难道每人会么?
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2001-07-14 08:33
社区公告

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