Windows Resizen

Tech Tip: Click here to run a free scan for Windows Errors and optimize PC performance

From: David McGurty (jimmy123_at_gmx.net)
Date: 12/16/04


Date: Thu, 16 Dec 2004 18:05:21 +0100

Moin Moin!

Ich arbeite gerade an einem MFC Programm und bin auf ein kleines Problem
gestoßen:

Ich möchte, dass das Window, wenn es resized wird, nicht sofort die neue
Größe annimmt, sondern erst wenn die Größe des Windows ganzzahlig durch
einen bestimmten Wert teilbar ist. Anders gesagt: Es soll sich in bestimmten
Abständen resizen. Dafür habe ich die WM_SIZING Message abgefangen.
In der MSDN steht, dass wenn man die OnSizing Methode der Basisklasse
aufruft, werden nicht die übergeben Parameter berücksichtigt, sondern die
ursprünglichen, die auch mit der Message gesendet wurden:

"This member function is called by the framework to allow your application
to handle a Windows message. The parameters passed to your function reflect
the parameters received by the framework when the message was received. If
you call the base-class implementation of this function, that implementation
will use the parameters originally passed with the message and not the
parameters you supply to the function."

Daher kann ich die Größe des Windows nicht verändern, indem ich einfach die
Funktion der Basisklasse mit anderen Parametern aufrufe. Wenn ich aber
einfach die Größe des Windows mit SetWindowPos ändere, flickert das Window
beim resizen natürlich. Wie kann ich das also so hinbekommen, dass es nicht
flickert?

Ich habe auch versucht, die Message nicht mit den Handlern abzufangen,
sondern indem ich die WindowProc überschreibe und die WindowProc der
Basisklasse nicht aufrufe, wenn die Größe des Windows nicht ganzzahlig durch
den Wert teilbar ist, aber das hat auch nichts geändert.

Und noch eine andere Frage:

Wie kann man die minimale bzw. maximale Größe eines Windows festlegen,
sodass es beim Resizen diese Werte nicht über- bzw. untersteigt? Muss man
das auch "manuell" über die WM_SIZING Messages abfangen, oda gibts dafür
eine einfache Funktion??

Danke für eure Hilfe!!



Relevant Pages

  • Re: update rollup refuses to unstall on my pc {?}
    ... The message is in german partly. ... Equal To Specified Value ... 0.438: KB925766 Setup hat folgenden Fehler festgestellt: Setup kann nicht ... Microsoft MVP - Windows Media Center ...
    (microsoft.public.windows.mediacenter)
  • Re: Beenden von Anwendung verhindern
    ... Du musst Windows erlauben, das Programm zu beenden. ... procedure WMQueryEndSession(var Message: TWMQueryEndSession); ... var CanClose: Boolean); ...
    (de.comp.lang.delphi.misc)
  • =?Windows-1252?Q?Re:_Wie_kann_ich_den_Envent_MouseUp_=FCber_die_Windows_M?= =?Windows-1252?Q
    ... Methode WinProc(ref Message msg) überschrieben. ... Da ich mich bisher noch nicht sehr mit dem msg befaßt habe ist mir nicht bekannt welche WM_xxxxx ich nutzen muß um mitzubekommen, ob die Maus losgelassen worden ist, bzw. ob irgend etwas selektiert worden ist. ... Hier kann man eine Menge (Windows Low Level) lernen. ... Dipl.Inf. Frank Dzaebel ...
    (microsoft.public.de.german.entwickler.dotnet.csharp)
  • Re: Zweites Konto meldet sich immer noch
    ... > ungelesene Emails habe. ... wie ich dieses bloede Message von den ungelesenen ... Am Einfachsten über den Einsatz von TweakUI für Windows XP: ... Herz und Hirn von Windows, nach einem vorherigen Export des Schlüssels, ...
    (microsoft.public.de.german.inetexplorer.ie6.outlookexpress)
  • Re: Datensätze mit Milisekunden schreiben
    ... > Ich möchte ein DatumUhrzeit Feld so genau wie möglich beschreiben. ... Declare Function GetTickCount Lib "kernel32" As Long ... that have elapsed since Windows was started. ... The elapsed time is stored as a DWORD value. ...
    (microsoft.public.de.access)