AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Welche Nachricht, NACHDEM das Fenster maximiert ist?
Thema durchsuchen
Ansicht
Themen-Optionen

Welche Nachricht, NACHDEM das Fenster maximiert ist?

Ein Thema von Alibi · begonnen am 12. Sep 2006 · letzter Beitrag vom 12. Sep 2006
Antwort Antwort
Alibi

Registriert seit: 15. Aug 2003
Ort: Bispingen
94 Beiträge
 
Delphi 7 Personal
 
#1

Welche Nachricht, NACHDEM das Fenster maximiert ist?

  Alt 12. Sep 2006, 13:24
Hi,
hab hier ein kleines Problem, und zwar wird ein Canvas bei mir gelöscht, sobald ich das Fenster maximiere.
Neuzeichnen tu ich im OnPaint und im OnConstrainedResize (Das, um ein anderes Problem zu beheben...).
Nun wird OnPaint aber nicht ausgelöst, wenn das Fenster maximiert wird?
Ich habe schon versucht, das ganze beim Eintreffen von WM_SYSCOMMAND mit SC_MAXIMIZE neuzuzeichnen, aber das hat keinen Effekt, da es anscheinend geschickt wird, wenn der Benutzer das Kommando zum Maximieren gegeben hat und nicht, wenn das ganze schon erledigt ist.
Insofern: Gibt es eine Msg, die auftritt, wenn das Fenster fertig mit maximieren ist?
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Welche Nachricht, NACHDEM das Fenster maximiert ist?

  Alt 12. Sep 2006, 14:01
Hast du schon OnResize ausprobiert?
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Alibi

Registriert seit: 15. Aug 2003
Ort: Bispingen
94 Beiträge
 
Delphi 7 Personal
 
#3

Re: Welche Nachricht, NACHDEM das Fenster maximiert ist?

  Alt 12. Sep 2006, 14:03
Jop. 0 Änderung. :/
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Welche Nachricht, NACHDEM das Fenster maximiert ist?

  Alt 12. Sep 2006, 14:12
Das kann eigentlich gar nicht sein. OnResize wird definitiv erst dann aufgerufen, wenn das Fenster schon maximiert wurde.
Dein Fehler muss irgendwo anders im Code liegen.

Hier der Beweis:
folgender simpler Code:
Delphi-Quellcode:
procedure TForm1.FormResize(Sender: TObject);
begin
  Caption := IntToStr(ClientWidth);
end;
Wenn ich das Fenster maximiere wird als Caption die Bildschirmbreite angezeigt, also wurde das Fenster erst maximiert (Breite des Fensters = Bildschirmbreite) und dann der Code in OnResize aufgerufen.

Noch ein Beweis:
Einfach im obigen Beispiel mal das komplette Programm mit F7 Schritt für Schritt durchgehen:
Klickt man auf Maximieren wird erst das Fenster maximiert und dann wird in die Prozedur OnResize gesprugen.

Vielleicht postest Du mal etwas mehr Code, ich bin fast sicher dass es an etwas anderem liegen muss...
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Welche Nachricht, NACHDEM das Fenster maximiert ist?

  Alt 12. Sep 2006, 14:17
Moin Alibi,

schau Dir mal die Message MSDN-Library durchsuchenWM_SIZE an.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Alibi

Registriert seit: 15. Aug 2003
Ort: Bispingen
94 Beiträge
 
Delphi 7 Personal
 
#6

Re: Welche Nachricht, NACHDEM das Fenster maximiert ist?

  Alt 12. Sep 2006, 14:52
Besten dank euch beiden.

WM_SIZE wär auch zu schön gewesen...

Selbe Syndrom immer noch...
Es wird nun an folgenden Orten neugezeichnet:
- OnPaint
- OnConstrainedResize
- WM_SIZE generell (Was ja ansich alleine ausreichen sollte?):
Delphi-Quellcode:
procedure TfrmMain.WM_SIZE(var msg: TMessage);
begin
  inherited;
  updateArrows;
end;
Nochmal beschrieben:
- updateArrows zeichnet was auf ein TBitmap. Dieses wird dann auf den Canvas einer Paintbox kopiert.
- Beim Maximieren verschwindet einfach alles von dem Canvas, als ob updateArrows zu einem falschen Zeitpunkt aufgerufen wird.

Naja, bin eben auf TImage umgestiegen, das löst das Problem.
Eine Lösung, wodran das bei der PaintBox scheitert wäre aber dennoch sehr interessant...

[edit=SirThornberry]Pascal-Tags zu Delphi-Tags korrigiert - Mfg, SirThornberry[/edit]
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Welche Nachricht, NACHDEM das Fenster maximiert ist?

  Alt 12. Sep 2006, 14:54
Ganz einfach: Die PaintBox repaintet sich selbst. Ein Image nicht. Wenn du auf ne Paintbox zeichnen willst, verwende ihr Ereignis OnPaint.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Welche Nachricht, NACHDEM das Fenster maximiert ist?

  Alt 12. Sep 2006, 15:05
Moin Alibi,

ich schlage vor, dass Du Dir die Dokumentation zu WM_SIZE mal durchliest.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Alibi

Registriert seit: 15. Aug 2003
Ort: Bispingen
94 Beiträge
 
Delphi 7 Personal
 
#9

Re: Welche Nachricht, NACHDEM das Fenster maximiert ist?

  Alt 12. Sep 2006, 15:06
Manchmal...*args*
Und dadran hab ich nun 8h verbracht, wo die Lösung doch so nahe lag.

Danke.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz