728x90
반응형
Application에서 시스템 메뉴를 삭제하는 방법은 가장 쉽게는 아래와 같다.
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
cs.style &= ~WS_SYSMENU; // 시스템 메뉴 삭제
return TRUE;
}
윈도우 스타일에서 SYSMENU를 제거하는 방법이다.
이것은 메뉴 및 버튼 그리고 아이콘까지 모두 삭제하기 때문에 디자인 면에서 좋지 않다.
GetSystemMenu(FALSE)->EnableMenuItem() : 활성화/비활성화
GetSystemMenu(FALSE)->DeleteMenu() : 메뉴 삭제
우선 '닫기' 메뉴와 버튼은 GetSystemMenu(FALSE)->EnableMenuItem()으로 삭제가 가능한다.
GetSystemMenu(FALSE)->EnableMenuItem(SC_CLOSE, MF_BYCOMMAND | MF_GRAYED);
최소화/최대화/복귀의 경우에는 해당 명령어로 메뉴는 비활성화되지만 버튼이 비활성화되지 않는다.
그래서 DeleteMenu를 사용하는 것이 좋다.
GetSystemMenu(FALSE)->DeleteMenu(SC_MINIMIZE, MF_BYCOMMAND);
GetSystemMenu(FALSE)->DeleteMenu(SC_MAXIMIZE, MF_BYCOMMAND);
GetSystemMenu(FALSE)->DeleteMenu(SC_RESTORE, MF_BYCOMMAND);
해상 코드는 CMainFrame Class에서 작성되는 것이 좋다.
728x90
반응형
'Program Language > API | MFC' 카테고리의 다른 글
[MFC] ID_FILE_OPEN 재정의 (0) | 2021.11.15 |
---|---|
[MFC] App 혹은 Dll에서 콘솔 사용하기 (4) | 2021.09.27 |
[MFC] Frame 타이틀 고정하기 (0) | 2021.09.15 |
[MFC] Frame 크기 고정하기 (0) | 2021.09.15 |
[Win32] <xmllite.h> 사용 시 redefinition Error 발생 시 (0) | 2021.07.22 |