Siehe auch meinen Beitrag #29 in diesem Thread dazu
Brighty
@Brighty: ups, sorry, habe dein Link übersehen,
Da steht ja genau das drin, was jaenicke erklärt hat, habe ich mir gleich in Evernote gespeichert.
@jaenicke: Danke für den Tipp!
Jetzt habe ich aber Gewissheit, dass ich vermutlich meine Berechnungen in einem 2. Thread reingeben soll.
Ich hätte aber im Falle von Peekmessage einfach die Nachrichtenschleife wie folgt gebaut und scheint auch zu funktionieren:
Delphi-Quellcode:
procedure TDataThread.Execute;
var
Msg: TMsg;
begin
hdlg := CreateDialog(HInstance, MAKEINTRESOURCE(100), Self.Handle, @DlgFunc);
ShowWindow(hdlg, SW_SHOW);
while not terminated do
begin
BERECHNE_WAS; // <-------------- ich würde hier gerne was berechnen lassen
if PeekMessage(msg, hdlg, 0, 0, PM_REMOVE) then
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end;
end;
Laut MS Doku in C ist aber gar kein TranslateMessage und DispatchMessage mehr drin.
Code:
fDone = FALSE;
while (!fDone)
{
fDone = DoLengthyOperation(); // application-defined function
// Remove any messages that may be in the queue. If the
// queue contains any mouse or keyboard
// messages, end the operation.
while (PeekMessage(&msg, hwnd, 0, 0, PM_REMOVE))
{
switch(msg.message)
{
case WM_LBUTTONDOWN:
case WM_RBUTTONDOWN:
case WM_KEYDOWN:
//
// Perform any required cleanup.
//
fDone = TRUE;
}
}
}
Meine Frage wäre aber, wenn ich Peekmessage verwenden möchte, soll ich dann TranslateMessage u. DispatchMessage nicht verwenden, oder kann ich weiterhin TranslateMessage u. DispatchMessage verwenden, wie ich es in vorigen Delphicode gemacht habe?
lg,
jus