25.02.2010 19:59, Michael Schnell:
Can't anyone answer the question if in Linux the legal and compilable
construct

procedure... message;

either

is not supposed to be working
Is is working fine on linux, see my example below.

or

how I can have such a procedure be executed (e.g. by posting a message
from a thread or another application, what I successfully did in Windows.
Some sort of IPC is necessary as a ground for that.
On windows, PostMessage/GetMessage mechanism is always available and it does not require any additional libraries (as it is an integral part of the system), so it is used most of the time. On linux, there is no such "global default" (AFAICS), but you are free to choose some existing library or create your specific implementation based on OS functionality directly (like my favourite pipes or whatever).

Nikolai




------------------------------ cut -------------------------------
{$mode delphi}
{$ifdef win32 }{$apptype console }{$endif }
const
  const_my_msg = $7FFF;

type
  TMyMessage = record
    Msg: Cardinal;
    SomeData1: byte;
  end;

  TSomeTestObj = class
    procedure msg_my_msg_proc(var Msg: TMyMessage); message const_my_msg;
  end;

procedure TSomeTestObj.msg_my_msg_proc(var Msg: TMyMessage);
begin
  writeln('I got called! SomeData1 = ', Msg.SomeData1);
end;

var
  o: TSomeTestObj;
  m: TMyMessage;
begin
  m.Msg := const_my_msg;
  m.SomeData1 := 1;
  o := TSomeTestObj.Create;
  o.Dispatch(m);
  o.Free;
end.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to