コールバックの使い方
Win32 APIの中でコールバックが必要なものがありますが、Delphiでは容易に実現できます。(Visual Basic4.0以前では通常、不可能でした)
コールバックを使うにはコールバック関数のポインタをAPIに渡します。次の例はSetTimerにコールバック関数(手続き)を渡して100msごとに値をカウントする例です。(Timerコンポーネントを使わずにタイマー機能を実現する例でもあります)
例
var Form1: TForm1; implementation {$R *.DFM} var count: Integer; { コールバック手続き } procedure TimerProc(hwnd: HWND; uMsg:UINT; idEvent: UINT; dwTime:DWORD); begin Form1.Edit1.Text := IntToStr(count); Inc(count); end; { タイマー設定と起動 } procedure TForm1.cmdStartClick(Sender: TObject); begin count := 0; { タイマーコールバックを定義する } SetTimer(Handle, 1, 100, @TimerProc); end; { タイマー停止 } procedure TForm1.cmdStopClick(Sender: TObject); begin KillTimer(Handle, 1); end;