Windowsメッセージの受け取り
DelphiではふつうWindowsメッセージの受け取りはカプセル化されているので、意識する必要はないのですが、Win32 APIを直接、使うときには意識する必要があります。
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以上の定数
ハンドラの記述
オンラインヘルプに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;