unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DXPlay, DirectX;

    const
  DXMES_MESSAGE = 1;

  type
  TDXMessage = record
    MessageType: DWORD;  {  MessageType is absolutely necessary.  }
    Mes: Integer;
  end;



type
  TForm1 = class(TForm)
    Button1: TButton;
    DXPlay1: TDXPlay;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure DXPlay1Message(Sender: TObject; From: TDXPlayPlayer;
      Data: Pointer; DataSize: Integer);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  try
    DXPlay1.Open;
  except
    on E: Exception do
    begin
      Application.ShowMainForm := False;
      Application.HandleException(E);
      Application.Terminate;
    end;
  end;

end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Msg: ^TDXMessage;
  MsgSize: Integer;
begin
  MsgSize := SizeOf(TDXMessage);
  GetMem(Msg, MsgSize);
  try
    Msg.MessageType := DXMES_MESSAGE;
    Msg.Mes:=random(100);
    {  The message is sent also to me.  }
    DXPlay1.SendMessage(DPID_ALLPLAYERS ,msg,msgsize);
    DXPlay1.SendMessage(DXPlay1.LocalPlayer.ID ,msg,msgsize);
  finally
    FreeMem(Msg);
 end;
end;

procedure TForm1.DXPlay1Message(Sender: TObject; From: TDXPlayPlayer;
  Data: Pointer; DataSize: Integer);
begin
Button1.Left:=TDXMessage(Data^).Mes;
Button1.Caption:=inttostr(TDXMessage(Data^).Mes)
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
DXPlay1.Close;
end;

end.
