Warum behandelst du nicht einfach gezielt diese eine Message und überlässt Delphi den Rest?
Delphi-Quellcode:
procedure WmPbMain(var msg: TMessage); message WM_PB_MAIN;
...
procedure TForm1.WmPbMain(var msg: TMessage);
begin
ProgressBar1.Position := msg.WParam;
case msg.LParam of
WM_PB_SET_HINT:
ProgressBar1.Hint := IntToStr(msg.WParam) + '%';
end;
end;