Hallo!
Erstellt man in Visual Studio 2005 (weil mir immer wieder welche sagen wollen, dass es die folgende Unterstützung überhaupt gar nicht gibt ^_^: ) eine Applikation basierend auf "Mehrere Dokumente der höchsten Ebene" und Doc/View, so gehe man zur Funktion CMainFrame::LoadFrame().
Dort kann man folgenden Code sehen:
Wenn man "/*" und "*/" entfernt, so wird der "Kommentar" zum Programmcode und wird ausgeführt. (Klar.
) Es ersetzt bei weiteren Objekten von CMainFrame den Menüeintrag "Exit" mit "Close". Und wenn man nun auf diesen Menüeintrag klickt, wird nicht die ganze Applikation beendet, sondern lediglich nur das Fenster geschlossen.
Interessant ist aber, dass dies nicht nur bei sekundären Fenstern klappt. Ändert man folgende Zeile:
in
um, so wird auch im ersten und einzigen (das heißt, es ist wirklich kein einziges weiteres Fenster geöffnet) der Menüeintrag "Exit" in "Close" umgeändert. Wenn man nun auf "Close", wird tatsächlich auch nur das Fenster geschlossen! Denn: Das (einzige) Fenster ist nicht mehr vorhanden, doch im Taskmanager ist der Prozess noch da.
Die Frage nun: Welche Funktion wird denn aufgerufen, wenn man nun auf "Close" klickt? Diese könnte nämlich ganz nützlich sein und das ganze Dilemma lösen, dass beim Ausführen von "DestroyWindow()" (welche ich als einzige Funktion kenne, die mir ermöglicht ein Fenster zu schließen) nicht nur das Fenster geschlossen wird, sondern auch die ganze Applikation geschlossen wird.
J!M!
Erstellt man in Visual Studio 2005 (weil mir immer wieder welche sagen wollen, dass es die folgende Unterstützung überhaupt gar nicht gibt ^_^: ) eine Applikation basierend auf "Mehrere Dokumente der höchsten Ebene" und Doc/View, so gehe man zur Funktion CMainFrame::LoadFrame().
Dort kann man folgenden Code sehen:
Code:
// replace Exit option on File menu with Close for secondary windows
/*if (AfxGetApp()->m_pMainWnd != this)
{
CMenu *pMenu = GetMenu();
ASSERT(pMenu);
pMenu->ModifyMenu(ID_APP_EXIT, MF_BYCOMMAND | MF_STRING, ID_FILE_CLOSE, _T("&Close"));
}*/
Wenn man "/*" und "*/" entfernt, so wird der "Kommentar" zum Programmcode und wird ausgeführt. (Klar.

Interessant ist aber, dass dies nicht nur bei sekundären Fenstern klappt. Ändert man folgende Zeile:
Code:
if (AfxGetApp()->m_pMainWnd != this)
Code:
if (AfxGetApp()->m_pMainWnd == this)
Die Frage nun: Welche Funktion wird denn aufgerufen, wenn man nun auf "Close" klickt? Diese könnte nämlich ganz nützlich sein und das ganze Dilemma lösen, dass beim Ausführen von "DestroyWindow()" (welche ich als einzige Funktion kenne, die mir ermöglicht ein Fenster zu schließen) nicht nur das Fenster geschlossen wird, sondern auch die ganze Applikation geschlossen wird.
J!M!