2017-09-10 66 views
0

コンソールを実行中の古いC++アプリケーションを保守しています。私は "close" buttunを無効にしました。私も最大化ボタンを無効にする必要があります。 、最大化ボタンを無効にするC++コンソールアプリケーション

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

それが動作ボタンは無効になりますが、それはグレー表示されていません。次のコードは、私が最大化ボタンを無効にする行を追加した閉じるボタン

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

にdisabes。 (閉じるボタンがグレー表示されています) 何が欠けていますか? ありがとうございます。

+0

コンソールウィンドウのクロムは、実際にIMHOで混乱させるべきものではありません。 Ctrl + Breakでプログラムを終了させることができます。 – Anders

答えて

1

SetWindowLongを使用してウィンドウスタイルを変更し、SetWindowPosを呼び出します。例:

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

お返事ありがとうございました。無効になった。あなたは絶対に正しいです - Ctrl-Breakはまだプログラムを殺します。ボタンを無効にするだけで、誤って操作することを防ぐことができます。 – Marek

関連する問題