您的位置:首页 > 其它

窗体传递参数给有BPL包创建的MDI子窗口中的参数

2013-01-11 18:45 393 查看
procedure Tfrm_fun_01_gpsdata_newobj.Button2Click(Sender: TObject);

var

  cdds: TCopyDataStruct; // 消息体

  hd: THandle;

begin

  cdds.dwData := 0; // dwdata初始化

  cdds.cbData := length(Edit1.Text) + 1; // cbData定义消息体的字符长度,+1个长度,是为了存储结束符

  cdds.lpData := pchar(Edit1.Text); // 告诉消息体,LPDATA的指针指向memo1.Text存储位置的指针

  // fHwnd:=

  hd := FindWindow('Tform3', nil); //先查找主窗体句柄

  hd := FindWindowEx(hd, 0, 'MDIClient', nil);//根据主窗口句柄查找MDI子窗口容器

  hd := FindWindowEx(hd, 0, 'Tfrm_fun_01_gpsdata_main', nil);//根据MDI子窗口容器句柄查找子窗口

  if hd <> 0 then

    SendMessage(hd, WM_COPYDATA, 0, LongWord(@cdds)) // 发送消息体

  else

    ShowMessage('目标窗口没找到!');

  // showmessage(inttostr(integer(fardizhi)));

end;

----------------------------------------

type

  Tfrm_fun_01_gpsdata_main = class(TForm)

    top: TPanel;

    right: TPanel;

    bottom: TPanel;

    RadioGroup1: TRadioGroup;

    Splitter1: TSplitter;

    Button1: TButton;

    Edit1: TEdit;

    Label1: TLabel;

    procedure Button1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  。。。。。

    procedure Mymessage(Var Msg: TMessage); Message WM_COPYDATA; // 定义函数接收过程

  end;

procedure Tfrm_fun_01_gpsdata_main.Mymessage(var Msg: TMessage); // 定义接收消息的具体过程

var

  cdds: TcopyDataStruct;

begin

  if Msg.Msg = WM_COPYDATA then

  begin

    cdds := PcopyDataStruct(Msg.LParam)^;

    if cdds.dwData = 0 then

    begin

      Edit1.Text := '0' + (Pchar(cdds.lpData));

    end;

    if cdds.dwData = 1 then

    begin

      Edit1.Text := '1' + (Pchar(cdds.lpData));

    end;

    if cdds.dwData = 2 then

    begin

      Edit1.Text := '2' + (Pchar(cdds.lpData));

    end;

    if cdds.dwData = 3000 then

    begin

      Edit1.Text := '3000' + (Pchar(cdds.lpData));

    end;

  end;

end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: