Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
29. Apr 2021
War nur als Hinweis, falls er es sich "anzeigen" will, um es im laufenden Programm sehen zu können. :angle:
In ein Log oder OutputDebugStrings (wenn im Debugger, in dessen MessagesFenster, aber aufpassen, ist bissl langsamer) ginge natürlich auch.
Wer (zu)viel Misst, misst manchmal auch Mist.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
29. Apr 2021
OnMessage sind aber ausschließlich von PostMessage, was in der MessageQueue landete.
SendMessage kommt dort nicht vorbei. (dafür bräuchte man einen andren Hook)
Ja, für Vieles kann es dennoch einen Hinweis geben.
Aber beachte, dass wenn man z.B. die Messages in ein Memo loggt, das wiederrum Messages auslöst, was das Ergebnis verfälschen kann.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
29. Apr 2021
Aber wie gesagt, damit kann es passieren, dass dein Zeichnen (OnPaint) während der Arbeit neu gestartet wird und es so auch in einer Eindlosschleife einem Stacküberlauf endet.
Schlimmer wird es dann, wenn nicht nur mit lokalen Variablen gearbeitet wird, womit es dann zwischen den verschiedenen Ausführungen Überschneidungen geben kann. (z.B. das eingebettete Zeichnen ändert einen globalen...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
29. Apr 2021
Nein,
jedenfalls nicht wenn du die Aktualisierung der PaintBox/Canvas während des Zeichnens nicht deaktivierst.
Sonst kann es passieren, dass mitten in deinem OnPaint ein neues OnPaint ausgelöst wird und du in einer Endlosschleife landen könntest.
Wie gesagt ihr hättet die Wahl auf ein TBitmap zu zeichnen und anschließend ein Invalidate/Refresh der PaintBox auszulösen. (bzw. im OnChange...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
29. Apr 2021
Nein.
TPaintBox hat keinen Speicher, es muß also sichtbar bleiben, sonst ist das Gemalte weg und beim nächsten Show/OnPaint wird neu gezeichnet.
Bloß was auf den sichtbaren Canvas gemalt wird, das ist auch sichtbar.
(aber gerade das ist auch ein Vorteil, z.B. gegenüber TImage ... wenn schnell genug gezeichnet werden kann, dann fällt quasi der Cache/Hintergrundbitmap/DoubleBuffered/... weg...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
29. Apr 2021
gab es nicht einen "lock"-Befehl (an PaintBox oder eher am Canvas), mit dem du vor/während deinem Zeichnen die Ereignisse der Paitbox deaktivieren kannst, damit es beim Zeichnen nicht neu startet?
Ansonsten bleibt noch die Möglichkeit in ein Bitmap zu zeichnen und jenes dann im OnPaint anzuzeigen.
Und statt .Paint besser ein Refresh bzw. Invalidate aufrufen.
(alternativ ein TImage)