MCoder hat gesagt.:
Du must stattdessen einen Message Handler für WM_SYSCOMMAND einfügen (z.B. mit dem Class Wizzard) und alle Messages, die du nicht selber verarbeiten willst, an die entsprechende Funktion der Basisklasse, also CDialog::OnSysCommand(), übergeben. Diese ruft dann letztendlich DefWindowProc() auf.
Die Antwort von Endurion ist vollkommen korrekt.
Ich bezweifele die Richtigkeit seiner Antwort keinesfalls. ;-)
Ja, einen Handler für WM_SYSCOMMAND einfügen, das wäre ja auch schön.
Mit dem Class-Wizard ist das bei mir nicht möglich - nicht vorhanden.
Im Quelltext ruft CDialog::OnSysCommand(), DefWindowProc() gar nicht auf.
Außerdem ist die Nachrichtenbehandlung für WM_SYSCOMMAND bereits verhanden.
Code:
BEGIN_MESSAGE_MAP(CMINDlg, CDialog)
//{{AFX_MSG_MAP(CMINDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
Etwas experimentieren schadet ja nicht. Dabei ist mir folgendes aufgefallen:
In DefWindowProc(), sowie in WindowProc() ist es möglich die Nachricht zu
erkennen und eine Funktion, oder was erwünscht ist, aufzurufen.
Dabei bleibt die Minimieren-Funktion unangetastet (Fenster wird dennoch minimiert).
Das bedeutet, dass die Funktion immer noch aufgerufen wird und wir gegebenenfalls
auf das Minimieren mittels eigener Funktionen reagieren können und mehr nicht.