Delphi-Quellcode:
{!
<summary>
Remove all mouse messages from the calling thread's message queue.</summary>
}
procedure EmptyMouseQueue;
var
Msg: TMsg;
begin
while PeekMessage(Msg, 0, WM_MOUSEFIRST, WM_MOUSELAST,
PM_REMOVE or PM_NOYIELD) do
;
end;
Wann soll das aufgerufen werden?
Nach dem Opendialog.execute bringt es keinen Effekt!
Dann ist deine Diagnose nicht korrekt, oder deine Zeichenroutine prüft nicht, ob der Mausknopf eigentlich gedrückt ist oder nicht und zeichnet daher auch, wenn das nicht der Fall ist. Wenn Du EmptyMouseQueue aufgerufen hast kann das Problem nur von mouse messages stammen, die danach erzeugt werden.