2006/02/09 | 关于传递字符串问题(消息中)
类别(语言类学习笔记) | 评论(0) | 阅读(198) | 发表于 16:07
我的意思是在一个消息中传递一个字符串 ,然在消息中根据参数处理情况
然后在消息处理中再发一个消息,同样还要用到这个字符串
也就是说:
a->b, 传一字符串
b->C 同样传上一个传来的字符串,
此时,在 C中这个字符串就取不出来了。


sf:='D:\aa.cfg' //假设文件名
PostMessage(Handle, WM_ViewCD,Integer(PChar(sf)),0);
//或者
PostMessage(Handle, WM_ViewCD,Integer(PChar(sf)),1);

procedure TfmMainForm.WMViewCD(var Msg: TMessage);
var
i:integer;
sf:string;
begin
sf:=PChar(Msg.WParam);//--->sf:='D:\aa.cfg'
with TfmViewCD.Create(self) do
try
setParam(sf);
if ShowModal<>mrok then Exit;
i:=AttribID;
finally
Release;
end;

case msg.LParam of
0: PostMessage(handle,WM_BrowseCD,Msg.WParam,i);
1: PostMessage(Handle,WM_ExportCD,Integer(PChar(sf)),i);
end;
end;

procedure TfmMainForm.WMExportCD(var Msg: TMessage);
begin
with TfmExportData.Create(Self) do
try
FatbID:=Msg.LParam; //确定年度数据位置专用
FDatafile:=PChar(Msg.WParam); //发生了变化不是 q我想要的字符串 sf:='D:\aa.cfg'
showmessage(fdatafile);
ShowModal;
finally
Release;
end;
end;

procedure TfmMainForm.WMBrowseCD(var Msg: TMessage);
begin
with TfmBrowseData.Create(Self) do
try
FatbID:=Msg.LParam; //确定年度数据位置专用
FDatafile:=PChar(Msg.WParam); //发生了变化不是我想要的字符串 sf:='D:\aa.cfg'
showmessage(fdatafile);
ShowModal;
finally
Release;
end;
end;

按照目前的情况来说,是在第二次传递补的时候 地址传递补出现了错误。
稍后贴出解决办法.

0

评论Comments