일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- File
- windows
- JavaScript
- write
- Sync
- API
- Python
- tcp
- 책
- install
- go언어
- Callback
- Linux
- 영화
- package
- channel
- C
- json
- c++
- go
- range
- 리뷰
- FOR
- Golang
- http
- GO 언어
- mutex
- window
- bitcoin
- Close
- Today
- Total
Code Habit
WM_SYSCOMMAND 본문
시스템 메뉴에 있는 메뉴 항목을 선택하면 이 메시지가 전달된다. 시스템 메뉴를 직접 선택하는 동작 외에도 타이틀 바에 있는 최대, 최소, 닫기 버튼 등의 명령들도 이 메시지를 발생시킨다. 시스템 메뉴에 있는 명령들은 윈도우를 관리하기 위한 기본적인 명령이므로 응용 프로그램은 이 메시지를 직접 처리하지 않고 보통 DefWindowProc으로 그냥 보내 준다.
DefWindowProc은 wParam값에 따라 시스템에 미리 정의되어 있는 동작을 수행한다. 예를 들어 SC_MINIMIZE 시스템 명령이 전달되었으면 윈도우를 최소화하고 SC_CLOSE 명령이 전달되었으면 윈도우를 닫는다. 응용 프로그램이 직접 이 시스템 명령을 프로그래밍 하고 싶다면 이 메시지를 처리하며 처리한 시스템 명령은 DefWindowProc으로 보내지 말아야 한다. 그 외의 시스템 명령은 모두 DefWindowProc으로 보내 주어 디폴트 처리를 하도록 해야 한다.
응용 프로그램이 시스템 명령을 직접 실행할 필요가 있다면 wParam에 원하는 시스템 명령을 대입하고 DefWindowProc으로 WM_SYSCOMMAND를 보내 준다. 예를 들어 윈도우를 닫고 싶으면 SendMessage( hWnd, WM_SYSCOMMAND, SC_CLOSE, NULL ); 명령을 보내 주면 된다.
wParam 으로 전달되는 명령의 종류
상수 | 값 |
설명 |
SC_CLOSE |
0xF060 |
윈도우를 닫는다. |
SC_CONTEXTHELP |
0xF180 |
상황별 도움말 출력 상태가 되며 커서에 ?표시를 출력하고 사용자가 대화상자 컨트롤을 클릭하면 WM_HELP 메시지를 보낸다. |
SC_DEFAULT |
0xF160 |
디폴트 메뉴 항목을 선택했거나 시스템 메뉴를 더블클릭했다. |
SC_HOTKEY |
0xF150 |
응용 프로그램이 정의한 핫키로 윈도우를 활성화였다. |
SC_HSCROLL |
0xF080 | 수평으로 스크롤한다. |
SC_KEYMENU |
0xF100 |
키보드 입력으로 시스템 메뉴를 호출하였다. 보통 Alt+Space가 시스템 메뉴 출력키이다. 또는 Alt키와 단축키를 같이 누를 때도 이 명령이 전달되는데 이때 lParam은 단축키 문자값이 전달된다. 예를 들어 Alt+H를 누르면 lParam에는 'h'가 전달된다. |
SC_MAXIMIZE |
0xF030 | 윈도우를 최대화하였다. |
SC_MINIMIZE |
0xF020 | 윈도우를 최소화하였다. |
SC_MONITORPOWER |
0xF170 | 출력장치의 상태를 설정한다. 이 명령은 전원 절약 기능이 있는 컴퓨터의 전원 절약 기능을 지원한다. lParam이 1이면 저전력 상태가 된 것이며 2이면 전원이 차단된 것이다. |
SC_MOUSEMENU |
0xF090 | 마우스 클릭으로 시스템 메뉴를 출력하였다. |
SC_MOVE |
0xF010 | 이동 항목을 선택하여 윈도우를 이동시킨다. |
SC_NEXTWINDOW |
0xF040 | 다음 윈도우로 이동하였다. |
SC_PREVWINDOW |
0xF050 | 이전 윈도우로 이동하였다. |
SC_RESTORE |
0xF120 | 원래 위치로 복구하였다. |
SC_SCREENSAVE |
0xF140 | 시스템에 등록된 스크린 세이버를 실행한다. |
SC_SIZE |
0xF000 | 윈도우의 크기를 조정한다. |
SC_TASKLIST |
0xF130 | 시작 메뉴를 활성화한다. |
SC_VSCROLL |
0xF070 | 수직으로 스크롤한다. |