ERLEDIGT
NEIN
NEIN
ANTWORTEN
1
1
ZUGRIFFE
1529
1529
EMPFEHLEN
-
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:
Code :1 2 3 4 5 6 7
// 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.
) 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:
inCode :1
if (AfxGetApp()->m_pMainWnd != this)
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.Code :1
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!
-
11.11.07 13:21 #2
- Registriert seit
- Jun 2006
- Beiträge
- 36
Hallo,
normal muss nur die Methode "OnClose" überschrieben werden, dann kann man selber festlegen was beim Klick auf [X] passieren soll.
Hat die Anwendung dann aber kein weiteres Fenster mehr offen und ist auch kein Icon im Systray abgelegt, bleibt der Prozess aber quasi hängen, da ja jegliche Kommunikationsschnittstelle fehlt. Die Nachricht, die zu OnClose gehört ist - nicht anders zu erwarten WM_CLOSE.
Neben OnClode kann OnDestroy überschrieben werden, beide werden beim schliessen der App aufgerufen. OnClose als direkte Reaktion auf [X] und OnDestroy nach dem das Fenster bereits abgebaut wurde.
Gruß RenéEs gibt immer einen Weg ...
--------------------------------------------------------------------
Plugins für unterschiedliche Plattformen, ein Code?
http://www.codeproject.com/dll/multi...plugin_spl.asp
Ähnliche Themen
-
Swing Fenster per Button schließen, NICHT das Programm beenden
Von Markus im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 3Letzter Beitrag: 23.06.09, 12:53 -
fenster schließen ohne link/knopf
Von Hammurabi im Forum Javascript & AjaxAntworten: 5Letzter Beitrag: 11.10.07, 15:55 -
Miranda IM - Fenster ohne Verlauf zu löschen schließen
Von stain im Forum InternetkommunikationAntworten: 2Letzter Beitrag: 02.04.07, 12:22 -
Fenster ohne Schließen-Taste in der Titelleiste
Von General Hunter im Forum Visual Basic 6.0Antworten: 1Letzter Beitrag: 10.07.05, 18:37 -
Externes Programm aufrufen und Applikation beenden
Von JJB im Forum .NET ArchivAntworten: 3Letzter Beitrag: 24.03.05, 12:09





Zitieren
Login






