warum Wndproc Funtion benutzen?
-
nicht ärgern, kleine newbie frage.
also ich will ein simples Fenster enwerfen, klasseneigenschaften alles definiert und registriert. Wenn ich aber die wndproc völlig aus dem ganzen prog rauslasse bekomm ich vom compiler keine fehlermeldung, aber mein fenster wird nicht angezeigt, danach kommt die übliche Windows Fehler Meldung ("X.exe hat ein problem festgestellt...).verwundert mich eigentlich nicht, aber kann mir einer "programmiertechnisch" nachvollziebar erläutern warum das Programm nicht laufen kann, obwohl ich nicht einmal wndproc nicht aufrufe?
letztes: warum wird bei einem fenster wie bei "messagebox" nicht die wndproc benötigt?
danke schonmal im voraus!
-
kleiner Satzbaufehler: "obwohl ich wndproc nicht einmal aufrufe?"
-
WndProc ist eine Funktion, die von Windows aufgerufen wird. Wenn das Fenster z.B. verschoben wird, dann sendet Windows die neuen Koordinaten and diese Funktion, und dein Programm kann diese Daten dann verwenden. Ohne diese Funktion kann Windows dies nicht und beendet mit einem Fehler. Der Compiler weiss nicht, dass diese Funktion enthalten sein muss, also meldet er auch keinen Fehler.
-
ok das habe ich schon in etlichen tuts gelesen, aber warum muss in Verbindung mit MessageBox keine WndProc Funktion geschrieben werden??
MessageBox produziert doch auch ein Fenster, dass man frei bewegen kann.
-
die wndproc von MessageBox ist irgendwo in den windows dlls versteckt.
-
MessageBoxen werden, soweit ich weiß, von Windows verwaltet, daher du schickst mit MessageBox "im Prinzip" eine Nachricht an Windows, dass es eine MessageBox mit dem gewünschten Text und dem Icon anzeigen soll.
cya
-
Hi,
MessageBox bringt seine WndProc schon von Haus aus mit.
In der MSDN steht:
http://msdn.microsoft.com/library/en-us/winui/WinUI/WindowsUserInterface/Windowing/DialogBoxes/DialogBoxReference/DialogBoxFunctions/MessageBox.asp?frame=trueThe MessageBox function creates, displays, and operates a message box. The message box contains an application-defined message and title, plus any combination of predefined icons and push buttons.
Das "operates" ist dabei der entscheidene Teil. MessageBox bringt seine WndProc schon von Haus aus mit. Ist in den Link-Files zur Windows-API realisiert.
W*****einlich springt die diese auch nur direkt in die DefWindowProc.
long FAR PASCAL WndProc( HWND hwnd, UINT msg, UINT wParam, LONG lParam ) { return( DefWindowProc( hwnd, msg, wParam, lParam ) ) ); }
Bryan