Also ich habe jetzt mal schnell eine Testanwendung geschrieben (Win7, AeroGlass aktiv) und wenn ich einen BreakPoint auf das "Write;" lege, dann hält der Debugger dort auch an und das wegen dem Timer-Event mehrmals.
Delphi-Quellcode:
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
procedure RenderProc(var Msg: TMessage);
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
RenderHandle: THandle;
TimerID: Integer;
procedure TimerProc(wTimerID: DWORD; Msg: DWORD;
dwUser: longint;
dw1: longint;
dw2: longint); stdcall;
begin
PostMessage(RenderHandle, MyTimerMessage, dw1, dw2);
end;
procedure TForm1.RenderProc(var Msg: TMessage);
begin
if Msg.Msg = MyTimerMessage then
Write; // << Breakpoint hier
with Msg do
Result := DefWindowProc(RenderHandle, Msg, WParam, LParam);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
RenderHandle := Classes.AllocateHWnd(RenderProc);
TimerID := timeSetEvent(25, 300, @TimerProc, RenderHandle, TIME_PERIODIC);
end;