Wie deaktiviere ich das Schließen-Kreuz?
-
Ich möchte das Kreuz oben rechts und den Systemmenübefehl deaktivieren. Wie geht das?
Habt ihr mal Stichworte zum Suchen? Mir fällt nichts ein.
-
Eigenschaften vom Fenster-> Systemmenü deaktivieren, damit sind aber auch die Minimieren und Maximieren, wenn drin, weg.
-
Ups, entschuldige ich habe es nicht genügend beschrieben:
Wie de-/aktiviere ich das zur Laufzeit?
Der Nutzer soll während der Eingabe nicht das Programm schließen können - er soll vorher abbrechen oder speichern.
-
Waere es da nicht leichter im Dialog selber einen Button zu erstellen der diesen schliesst und diesen dann zu aktivieren bzw. deaktivieren_
-
Wer redet denn von einem Dialog? Es ist eine SDI Anwendung.
Und ich möchte keine Umweglösung sondern was vernünftiges. Eine Anwendung MUSS einen Schließen-Knopf haben, sonst sind DAUs verwirrt und wollen den haben. Und da ich den dann einbauen muss, mache ich es lieber JETZT.
-
HMENU hSysMenu = GetSystemMenu(hWnd, FALSE); DeleteMenu(hSysMenu, SC_CLOSE, MF_BYCOMMAND);
Das deaktiviert IMHO auch das Schließen-Kreuz. Einfach mal ausprobieren.
-
Das funktioniert, danke - aber das Aktivieren wird schwer.
Aber durch den Codeschnipsel habe ich die gesuchten Befehle gefunden.
CMenu* pSysMenu = AfxGetMainWnd()->GetSystemMenu(FALSE); pSysMenu->EnableMenuItem(SC_CLOSE, MF_GRAYED);
und zum Aktivieren:
CMenu* pSysMenu = AfxGetMainWnd()->GetSystemMenu(FALSE); pSysMenu->EnableMenuItem(SC_CLOSE, MF_ENABLED);
-
Hmm das funktioniert bei meiner Dialoganwendung leider nicht
Muss man da was beachten? Ich habs so gemacht:void CLoaditupDlg::OnRunprogramm() { CMenu* HandleToSystemMenu = this->GetSystemMenu(FALSE); HandleToSystemMenu->EnableMenuItem( SC_CLOSE, MF_GRAYED); }
-
Hallo,
mit einer kleinen Korrektur sollte es gehen:
void CLoaditupDlg::OnRunprogramm() { CMenu* pm = GetSystemMenu(FALSE); pm->EnableMenuItem(SC_CLOSE,MF_BYCOMMAND | MF_GRAYED); }
MfG
-
hallo, habe es wie Probenutzer es beschrieben hat gemacht...
nichtdeklarierte Bezeichner MF_Grayed und MF_Enabledmuss ich das noch was einbinden, header oder so?
-
achja MFC Anwendung ist es
-
ihr könntet doch auch einfach das schließen-kreuz lassen wie es ist und mit einer hübschen meldung a la "so nicht, lieber benutzer" reagieren, wenn der user das programm an der falschen stelle beenden will ?!
-
sadi schrieb:
Hmm das funktioniert bei meiner Dialoganwendung leider nicht
Muss man da was beachten? Ich habs so gemacht:void CLoaditupDlg::OnRunprogramm() { CMenu* HandleToSystemMenu = this->GetSystemMenu(FALSE); HandleToSystemMenu->EnableMenuItem( SC_CLOSE, MF_GRAYED); }
copy & paste will eben gelernt sein
http://c-plusplus.net/forum/viewtopic.php?t=39033HILFE_ schrieb:
hallo, habe es wie Probenutzer es beschrieben hat gemacht...
nichtdeklarierte Bezeichner MF_Grayed und MF_Enabledmuss ich das noch was einbinden, header oder so?
füge mal am Anfang deiner Implementierungsdatei folgenden Code ein:
#define MF_Grayed MF_GRAYED #define MF_Enabled MF_ENABLED
dann sollte es funktionieren... ich sag nur "CASE SENSITIVE"
ciao ramirez