WndProc() überschreiben..
-
ich würde gern die WndProc() meines standard formulares von Visual C++ überschreiben..
protected: System::Void WndProc(System::Windows::Forms::Message *message) { MessageBox::Show("WndProc"); switch(message->Msg) { case WM_CREATE: { MessageBox::Show("WndProc"); } } Form::WndProc(*message); } // WndProc()
leider funktioniert das nicht..
kann mir jemand helfen?
-
Was funktioniert nicht?
Welche Fehlermeldung?
Doku gelesen?Normalerweise überlädt man nicht "WndProc" sondern "PreProcessMessage"
Und dann so:
virtual bool PreProcessMessage( Message% msg ) override
-
das hier funktioniert auch nicht:
protected: bool PreProcessMessage (System::Windows::Forms::Message *message) { MessageBox::Show("WndProc"); return true; } // PreProcessMessage()
es gibt keine fehlermeldung..
die messagebox wird einfach nicht angezeigt..
Edit:
in der doku les ich gradeZusammenfassung:
Führt eine Vorverarbeitung der Tastatur- oder Eingabemeldungen in der Meldungsschleife aus, bevor sie gesendet werden.das ist nicht das was ich suche..
ich würde gerne eine funktion xyz() einfach bei jedem programmdurchlauf 1 mal aufgerufen haben..
-
Welche Version von VS verwendest Du? 2003?
PS: Was ist denn ein "Programmdurchlauf" bei einer GUI-Anwendung???
Du solltest vielleicht mal die "Timer"-Klasse anschauen...
-
na gut.. ich frag mal so:
ich hab da ne funktion: process();
WIE ist es machbar, dass diese ständig aufgerufen wird..
while(progRuns) { process(); }
ich hatte vor die WndProc() zu überschreiben, da diese ja ständig aufgerufen wird.. oder gibts da ne andere lösung?
macht man das wie oben erwähnt mit timern? sry ich bin mit GUI noch nicht so vertraut..
ich benutze Visual Studio 2005 :xmas1:
-
Du startest ein eigenen Thread (System::Threading::THread::Start)