其他应用程序通过sendmessage方法发送的字符串在vc6中应该用什么转化?CString不行啊

火电 2005-11-17 08:53:23
其他应用程序(delphi)通过sendmessage方法发送的字符串
在vc6应用程序中应该用什么转化?CString不行啊

该如何转化??

...全文
162 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zx_sanjin 2005-11-17
  • 打赏
  • 举报
回复
有什么问题?

SendMessage(hwDispatch, WM_COPYDATA, (WPARAM)hWnd, (LPARAM)p);

-------------------------------------------------------
MyCSDN - CSDN离线数据浏览工具。(恒金软件出品)
可下载论坛文件、文档文章和全文搜索论坛数据以供离线浏览。支持签名回复。
下载地址:http://nj.onlinedown.net/soft/6591.htm
火电 2005-11-17
  • 打赏
  • 举报
回复
to zx_sanjin((恒金软件)-不结贴我跟你急!)

p->dwData = bb;
p->cbData = sizeof(aa);
p->lpData = (void*)&aa;

这样时没有问题

SendMessage(hwDispatch,
WM_COPYDATA,
(WPARAM)(HWND) hWnd,
(LPARAM) (LPVOID) p);

这样有问题!!!

wenkui 2005-11-17
  • 打赏
  • 举报
回复
zx_sanjin((恒金软件)-不结贴我跟你急!) 说的很对 每个进程的虚地址是独立的 也都是相对的 你传给另一个进程一个地址 那这个进程就通过这个地址在自己的虚拟空间中寻找 当然找不到了。
建议不要用VirtualAlloc 这个函数可能会很慢
用系统的剪切板 应该能实现你的要求
具体怎么用剪切板可以查查 很容易找到的
zx_sanjin 2005-11-17
  • 打赏
  • 举报
回复
这不是一样嘛,只不过一个是指针,一个是实例:

p->dwData = bb;
p->cbData = sizeof(aa);
p->lpData = (void*)&aa;



-------------------------------------------------------
MyCSDN - CSDN离线数据浏览工具。(恒金软件出品)
可下载论坛文件、文档文章和全文搜索论坛数据以供离线浏览。支持签名回复。
下载地址:http://nj.onlinedown.net/soft/6591.htm
火电 2005-11-17
  • 打赏
  • 举报
回复
to zx_sanjin((恒金软件)-不结贴我跟你急!) :

可是我想通过
MyCDS.dwData = bb;
MyCDS.cbData = sizeof(aa);
MyCDS.lpData = &aa;
方式 来传递参数阿

你上面的方法我怎么传递参数呢?

还望详细说明一下!
火电 2005-11-17
  • 打赏
  • 举报
回复
正在试验!!!
zx_sanjin 2005-11-17
  • 打赏
  • 举报
回复
你的COPYDATASTRUCT是在当前进程分配的地址,每个进程的虚拟地址都是独立的,直接引用当然不行喽!

这样:
COPYDATASTRUCT *p =
(COPYDATASTRUCT*)
VirtualAlloc(
NULL, dwResSize, MEM_RESERVE | MEM_COMMIT,PAGE_READWRITE
);

SendMessage之后记得

VirtualFree( p, dwResSize, MEM_RELEASE );

-------------------------------------------------------
MyCSDN - CSDN离线数据浏览工具。(恒金软件出品)
可下载论坛文件、文档文章和全文搜索论坛数据以供离线浏览。支持签名回复。
下载地址:http://nj.onlinedown.net/soft/6591.htm
火电 2005-11-17
  • 打赏
  • 举报
回复
结果是一样的阿~

还是不行!!!
jxxx2967 2005-11-17
  • 打赏
  • 举报
回复
MyCDS.lpData = aa.GetBuffer(0);
火电 2005-11-17
  • 打赏
  • 举报
回复
不行啊

VC6的另一个WIN32 APP 向这个接收消息的 WIN32 APP 发送都不行

COPYDATASTRUCT MyCDS;
CString aa = "DSS-0086&192.168.1.136&123&16";
int bb = 1;
MyCDS.dwData = bb;
MyCDS.cbData = sizeof(aa);
MyCDS.lpData = &aa;

HWND hwDispatch = FindWindow("Test",NULL);
if( hwDispatch != NULL )
SendMessage(hwDispatch,
WM_COPYDATA,
(WPARAM)(HWND) hWnd,
(LPARAM) (LPVOID) &MyCDS );


接受::
PCOPYDATASTRUCT pInfo;
pInfo = (PCOPYDATASTRUCT) lParam;
int ifunc = (int)(pInfo->dwData);

LPTSTR strparams = (LPTSTR)(BSTR*)(pInfo->lpData);//** 不行 **/


应该怎么去呢????
魔芋 2005-11-17
  • 打赏
  • 举报
回复
bstr

16,471

社区成员

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

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

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