Lazarus 0.9.23b, FPC 2.1.5, Win2k
I've a strange problem with sending messages between Forms.
For testing purposes I've made a small app for sending and recieving.
I start two instances of the program and try to send messages between them.
Using Spy++ I can see the messages beeing delivered to the right instance of my program.
I can send a WM_USER-Message (I've set the PassWin32MessagesToLCL define), but WM_COPYDATA messages don't reach the function i defined for them.
unit uMain;
{$mode Delphi}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls,
Buttons, ExtCtrls, Windows;
const
WM_TESTMSG=WM_USER+33;
type
{ TfMain }
TfMain = class(TForm)
btCopyData: TButton;
btTestMsg: TButton;
btSize: TButton;
eNum: TEdit;
eText: TEdit;
mLog: TMemo;
Panel1: TPanel;
procedure btCopyDataClick(Sender: TObject);
procedure btSizeClick(Sender: TObject);
procedure btTestMsgClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
protected
procedure TestMsgProc(var msg: TMessage); message WM_TESTMSG;
procedure TestCopyProc(var msg: TMessage); message WM_COPYDATA;
private
{ private declarations }
public
{ public declarations }
end;
var
fMain: TfMain;
implementation
uses ussnFuncLib;
{ TfMain }
procedure TfMain.TestMsgProc(var msg: TMessage);
begin
mLog.Lines.Add('Testmessage erhalten!');
end;
procedure TfMain.TestCopyProc(var msg: TMessage);
begin
mLog.Lines.Add('Copymessage erhalten!');
end;
procedure TfMain.FormCreate(Sender: TObject);
begin
ssnDbgOutputEnabled:=True;
Caption:=ITS(self.Handle)+' '+IntToHex(Self.Handle,8);
eNum.Text:=ITS(self.Handle);
eText.Text:='Testnachricht von '+ITS(Self.Handle);
mLog.Lines.Clear;
end;
procedure TfMain.btTestMsgClick(Sender: TObject);
var W:Integer;
begin
W:=STI(eNum.Text);
mLog.Lines.Add('Sende Testnachricht an: '+ITS(W));
SendMessage(W,WM_TESTMSG,0,0);
end;
procedure TfMain.btCopyDataClick(Sender: TObject);
Var CopyData:TCopyDataStruct;
Data:TData;
W:Integer;
begin
Data.Nr:=0;
Data.Text:=eText.Text;
CopyData.dwData:=201175;
CopyData.lpData:=@Data;
CopyData.cbData:=SizeOf(Data);
W:=STI(eNum.Text);
mLog.Lines.Add('Sende Copynachricht an: '+ITS(W));
SendMessage(W,WM_COPYDATA,self.Handle,LongInt(@CopyData));
end;
procedure TfMain.btSizeClick(Sender: TObject);
begin
SendMessage(STI(eNum.Text),WM_SIZE,self.Handle,201175);
end;
initialization
{$I uMain.lrs}
end.
Anyone an Idea where to look for my WM_COPYDATA Messages?
regards
Lukas