delphi.gif (306 バイト) Windowsメッセージの受け取り


DelphiではふつうWindowsメッセージの受け取りはカプセル化されているので、意識する必要はないのですが、Win32 APIを直接、使うときには意識する必要があります。

 

toach.gif (917 バイト) WINDOWSメッセージに応答するハンドラの宣言

message指令を使用してハンドラを宣言します。メッセージがWM_XXXのとき、ハンドラが受け取るメッセージ型はTWMxxxです。

    procedure WMTimer(var msg: TWMTimer);message WM_TIMER;
WM_USERを使うときはつぎのようにします。
    procedure WMUser(var msg: TMessage);message WM_USER + n;  // nは1以上の定数

toach.gif (917 バイト) ハンドラの記述

オンラインヘルプにTWMxxx型の記述がないので、ソースからそれがどうなっているかを調べるしかありません。次の例はWM_CHARに応答して、キーデータと文字コードを16進数で表示する例です。

  private
    { Private 宣言 }
    procedure WMChar(var msg: TWMChar);message WM_CHAR;

      (中略)

procedure TForm1.WMChar(var msg: TWMChar);
begin
  Label3.Caption := IntToHex(msg.CharCode, 4);
  Label4.Caption := IntToHex(msg.KeyData, 8);
end;