Auf Größenänderung des Panels reagieren
-
Hallo zusammen!
Ich habe ein Problem und zwar würde ich gerne auf die Größenänderung des Panels reagieren. So habe ich das Probiert leider aber ohne Erfolg:Versuch1:
class PACKAGE MyPanel : public TPanel { private: MESSAGE void __fastcall Panel_WM_ExitSizeMove( TMessage& Msg ); public: __fastcall MyPanel(TComponent* Owner); virtual __fastcall ~MyPanel(); BEGIN_MESSAGE_MAP MESSAGE_HANDLER(WM_EXITSIZEMOVE, TMessage, Panel_WM_ExitSizeMove) END_MESSAGE_MAP(TPanel) }; void __fastcall MyPanel::Panel_WM_ExitSizeMove( TMessage& Msg ) { ShowMessage("Panel_WM_ExitSizeMove()"); }
Versuch2:
class PACKAGE MyPanel : public TPanel { private: public: __fastcall MyPanel(TComponent* Owner); virtual __fastcall ~MyPanel(); virtual void __fastcall WndProc(Messages::TMessage& Message); }; void __fastcall MyPanel::WndProc(Messages::TMessage& Message); { if ( Message.Msg == WM_EXITSIZEMOVE ) ShowMessage("ExitSizeMove"); }
Beide meine Versuche die Meldung WM_EXITSIZEMOVE des Panels abzufangen schlagen momentan fehl
Hat jemand eine Idee was ich übersehen habe?
-
Öh, warum nicht TPanel::OnResize()?
-
Hi Joe, mich interessiert das Ende der Größenänderung daher
auch die Message WM_EXITSIZEMOVE. Komisch ist auch die Tatsache,
dass die beiden Versuche bei TForm klappen jedoch nicht bei einem TPanel.
-
So wie ich das sehe, müsstest Du dafür die TPanel::WindowProc ersetzen. Schau mal in die Hilfe, bin zu faul das abzutippen...
-
Hi Joe, folgendes habe ich nun gemacht:
class PACKAGE MyPanel : public TPanel { private: void __fastcall MyWindowProc( Messages::TMessage& Message ); public: __fastcall MyPanel(TComponent* Owner); virtual __fastcall ~MyPanel(); }; __fastcall MyPanel::MyPanel(TComponent* Owner) : TPanel(Owner) { this->WindowProc = MyWindowProc; } void __fastcall MyPanel::MyWindowProc( Messages::TMessage &Message ) { if ( Message.Msg == WM_EXITSIZEMOVE ) ShowMessage("WM_EXITSIZEMOVE"); else TPanel::WndProc( Message ); }
Aber auch hier erreicht mich die WM_EXITSIZEMOVE nicht
-
Kommt das Programm in die neue WindowProc überhaupt rein? Hast du mal versucht WM_SIZE abzufangen?
-
Hi Braunstein!
Alle meine Versuche konnten die Messages abfangen bloß nicht die, die ich benötigeAuch der letzte Versuch reagiert auf die WM_SIZE aber nicht auf die WM_EXITSIZEMOVE.
Kannst du mir weiterhelfen?
-
Warum nimmst du dann nicht WM_SIZE? Die wird doch auch aufgerufen nachdem die Größe geändert wurde.
-
da bin ich aber baff....
Ich war bis jetzt der Meinung, dass das Message bei einer Änderung permanent kommt. Ich werde das mal ausprobieren, danke schön!!!
-
Dafür wäre eigentlich WM_SIZING zuständig. Ich habe das aber jetzt auch nicht ausprobiert.
-
Vielen Dank, ich kann auch mit der Message WM_SIZE gut leben