2017-09-10 1 views
0

Ich verwalte die alte C++ - Anwendungs-Konsole. Ich habe den "nahen" Hintern deaktiviert. Ich muss den Maximierungsknopf ebenfalls deaktivieren. Der folgende Code disabes die Schaltfläche SchließenDeaktivieren Sie die Schaltfläche "Maximieren" in der C++ - Konsole

DeleteMenu(GetSystemMenu(GetConsoleWindow(), FALSE), SC_CLOSE, MF_BYCOMMAND); 
DrawMenuBar(GetConsoleWindow()); 

I Zeile hinzugefügt haben Maximierungsschaltfläche zu deaktivieren:

DeleteMenu(GetSystemMenu(GetConsoleWindow(), FALSE), SC_CLOSE, MF_BYCOMMAND); 
DeleteMenu(GetSystemMenu(GetConsoleWindow(), FALSE), SC_MAXIMIZE, MF_BYCOMMAND); 
DrawMenuBar(GetConsoleWindow()); 

Es funktioniert, die Taste ist deaktiviert, aber es ist nicht abgeblendet. (Die Schaltfläche Schließen ist ausgegraut) Was fehlt mir? Danke.

+0

Das Konsolenfenster Chrom ist nicht wirklich etwas, was Sie IMHO mit herumalbern sollten. Leute können Ihr Programm immer noch mit Strg + Pause beenden. – Anders

Antwort

1

Verwenden Sie SetWindowLong, um den Fensterstil zu ändern, und rufen Sie SetWindowPos. Beispiel:

HWND hwnd = GetConsoleWindow(); 
DWORD style = GetWindowLong(hwnd, GWL_STYLE); 
style &= ~WS_MAXIMIZEBOX; 
SetWindowLong(hwnd, GWL_STYLE, style); 
SetWindowPos(hwnd, NULL, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE|SWP_FRAMECHANGED); 
+0

Vielen Dank für beide Antworten. Die Deaktivierung hat funktioniert. Sie haben absolut Recht - Ctrl-Break bringt das Programm trotzdem zum Erliegen. Das Deaktivieren der Schaltfläche verhindert lediglich, dass dies versehentlich geschieht. – Marek

Verwandte Themen