delphi中使用自定义消息传送字符串的问题 我用vc6写了1个dll文件,然后在delphi7中进行调用,dll文件需要向主程序传送数据,都是字符串,我自己定义了1个消息,消息是WM_USER+1,请问大家,如何通过这个消息,把字符串数据传送给主程序,我的qq148085126,请大家帮助我,多谢了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 发送const WM_MYMSG=WM_USER+1;var Atom:TAtom; S:ShortString;begin S:='aaabbbccc'+#0; Atom:=GlobalAddAtom(@S[1]); SendMessage(self.Handle, WM_MYMSG, 0, Atom); GlobalDeleteAtom(Atom);end;接收TForm1 = class(TForm)private procedure WMMyMsg(var Msg:TMessage);message WM_MYMSG;......procedure TForm1.WMMyMsg(var Msg:TMessage);varbuf:array[0..255]of char;begin GlobalGetAtomName(Msg.LParam,buf,sizeof(buf)); showmessage(strpas(buf));end ; 我喜欢这样用,感觉优雅一些type PString=^String;var str:PString;begin New(str); str='test.........'; SendMessage(self.Handle, WM_MYMSG, 0, Integer(@str)); end;接收 TForm1 = class(TForm) private procedure WMMyMsg(var Msg:TMessage);message WM_MYMSG; ... ... procedure TForm1.WMMyMsg(var Msg:TMessage); var str:PString;begin str=Pointer(Msg.LParam); showmessage(str); dispose(str);//释放 end ; 反正是进程内的,直接把地址传过去就可以了,用SendMessage同步调用。1、分配好空间2、填充好数据3、SendMessage用lParam把地址传过去4、把lParam强转回来5、使用该数据6、SendMessage返回7、释放分配的空间 VC中的指针参数在delhpi中该如何写? 怎么在RzShellList中加入Item的同时,同样把图标也加到SmallImages中 如何使在按下最大化按钮时,窗体内的控件与窗体成比例的增长 我的全文检索忽略中文了!怎么回事? 请教注册表里头那个开机自动运行的RUN键下面的各个项目的启动顺序? 关于资源文件连接 请问怎么把一个窗口置为高亮状态? 一个问题:关于DLL的!请高手看看。 大虾帮忙 Help!! VC学习之路???? RadioGroup1 删除 问题 关于图形缩放效果
Atom:TAtom;
S:ShortString;
begin
S:='aaabbbccc'+#0;
Atom:=GlobalAddAtom(@S[1]);
SendMessage(self.Handle, WM_MYMSG, 0, Atom);
GlobalDeleteAtom(Atom);
end;接收
TForm1 = class(TForm)
private
procedure WMMyMsg(var Msg:TMessage);message WM_MYMSG;
...
...
procedure TForm1.WMMyMsg(var Msg:TMessage);
var
buf:array[0..255]of char;
begin
GlobalGetAtomName(Msg.LParam,buf,sizeof(buf));
showmessage(strpas(buf));
end ;
type PString=^String;
var
str:PString;
begin
New(str);
str='test.........';
SendMessage(self.Handle, WM_MYMSG, 0, Integer(@str));
end;
接收
TForm1 = class(TForm)
private
procedure WMMyMsg(var Msg:TMessage);message WM_MYMSG;
...
...
procedure TForm1.WMMyMsg(var Msg:TMessage);
var
str:PString;
begin
str=Pointer(Msg.LParam);
showmessage(str);
dispose(str);//释放
end ;
1、分配好空间
2、填充好数据
3、SendMessage用lParam把地址传过去
4、把lParam强转回来
5、使用该数据
6、SendMessage返回
7、释放分配的空间