首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 如何将cstring的对象作为sendmessage 的一个参数传递 ?谢谢 [已结贴,结贴人:yanglin1228]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yanglin1228
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-08-22 10:32:02 楼主
    如何将cstring的对象作为sendmessage 的一个参数传递 ?谢谢
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yyunffu
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 10:34:411楼 得分:2
    如果在同一进程内消息传递,把CString 对象转换为 char * 指针传递估计可以。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yanglin1228
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 10:50:062楼 得分:0
    没办法直接传递一个Csting 的对象吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Mackz
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 4

      6

      7

    发表于:2008-08-22 15:07:293楼 得分:2
    对象可以传指针,但是要保证其作用域。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dux003
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 15:19:044楼 得分:2
    引用 3 楼 Mackz 的回复:
    对象可以传指针,但是要保证其作用域。


    Right!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xsc2001
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 16:02:115楼 得分:6
    CString是不能直接当作消息的参数传递。
    另外转成char*后可以传递,因为SendMessage和PostMessage里的参数类型是指针类型的。但是还得考虑传递这两个参数指针所指向对象的生命周期,比如你声明了一个局部变量,然后把它的指针作为PostMessage的参数发出去了,这样那边接收到并处理后就会出错,因为这时你的这个变量已经不存在了,这个指针已经是一个野指针了。如果是用SendMessage的还可以,因为它是阻塞的,只有等待消息处理函数处理完后再返回。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yyunffu
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 16:13:436楼 得分:3
    3楼 和 5楼说的没错,要考虑变量作用域问题,最好定义成类成员数据或全局数据,保证在操作过程中不出现对象被销毁的情况,否则会出现 5楼 所述问题。
    如果在同一个进程中,感觉还是自己动态分配内存,传递指针,之后在接收端还原回CString。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cang0lang
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 16:21:587楼 得分:1
    5楼说的很详细
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • harry330
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 21:07:268楼 得分:2
    取指针就可以了。前提是注意Cstring的生命周期。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • greatws
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 23:15:289楼 得分:2
    SendMessage(hwnd, WM_XXX, NULL, (LPARAM)(LPCTSTR)str);

    SendMessage不用考虑生命周期的问题,但有可能引起阻塞,用PostMessage不会引起阻塞,但要注意生命周期
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • shanying_0
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-23 08:59:3010楼 得分:0
    学习了~~~~
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved