2017-09-10 4 views
0

이전 C++ 응용 프로그램 실행 콘솔을 유지 관리하고 있습니다. 나는 "가까운"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