How to process use defined message in forms(overriding WndProc method)

 

In TCustomForm class, there exists "WndProc" method which processes window messages.

 

  procedure TCustomForm.WndProc(var Message: TMessage);

 

You can override this method to process user defined message.


[Delphi]

 

unit Unit1;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls;

 

type

  TForm1 = class(TForm)

    Button1: TButton;

    procedure Button1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

    procedure WndProc(var Message: TMessage); override;

  end;

 

var

  Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

const

  WM_MY_MESSAGE = WM_USER + 10;

 

procedure TForm1.WndProc(var Message: TMessage);

begin

  case Message.Msg of

    WM_MY_MESSAGE:

      ShowMessage('WM_MY_MESSAGE');

    else

      inherited WndProc(Message);

  end;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

  SendMessage(Handle, WM_MY_MESSAGE, 0, 0);

end;

 

end.


[CBuilder]

 

class TForm1 : public TForm

{

__published: // IDE-managed Components

  TButton *Button1;

  void __fastcall Button1Click(TObject *Sender);

private:     // User declarations

public:      // User declarations

  __fastcall TForm1(TComponent* Owner);

public:

  virtual void __fastcall WndProc(TMessage &Message);

};

 

//---------------------------------------------------------------------------

#define WM_MY_MESSAGE (WM_USER + 10)

//---------------------------------------------------------------------------

void __fastcall TForm1::WndProc(TMessage &Message)

{

  switch (Message.Msg)

  {

    case WM_MY_MESSAGE:

      ShowMessage("WM_MY_MESSAGE");

      break;

    default:

      TForm::WndProc(Message);

  }

}

 

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

  SendMessage(Handle, WM_MY_MESSAGE, 0, 0);

}

//---------------------------------------------------------------------------