윈도우 메시지 WM_SYSCOMMAND
윈도우 API에도 잘 나와있고 MSDN 설명에도 잘 나와있는 WM_SYSCOMMAND 메시지.
키 입력등을 받는 WM_COMMAND와 달리 시스템 명령을 받아 들이는 메시지로서
Alt + F4 명령같이 일반적인 키 입력과는 다른 별개의 메시지를 찾아낼 때 쓰인다고 보면 될거다.
잠깐 헤메였던 이유 : MSDN의 정의에는 다음과 같다.
따라서 wParam & 0xFFF0 을 해야 한다.
하지만 API 프로그래밍과 다르게 MFC의 경우 파라미터가 달라 약간의 혼돈이 온다.
MFC에서는
이라고 언급되어있다.
하지만 UINT의 데이터 타입과 WPARAM의 실제 데이터 크기는 같다.
단지 MFC에서는 이름만 바뀌었을뿐이다.
따라서 MFC에서 SysCommand에서의 메시지를 알고 싶으면
nID & 0xFFF0 의 값을 참조하면 된다.
키 입력등을 받는 WM_COMMAND와 달리 시스템 명령을 받아 들이는 메시지로서
Alt + F4 명령같이 일반적인 키 입력과는 다른 별개의 메시지를 찾아낼 때 쓰인다고 보면 될거다.
잠깐 헤메였던 이유 : MSDN의 정의에는 다음과 같다.
WM_SYSCOMMAND uCmdType = wParam; xPos = LOWORD(lParam); yPos = HIWORD(lParam);실제 이 값의 하위 4비트는 시스템이 내부적으로 사용하는 값이므로 명령의 종류를 알고 싶으면 wParam을 0xFFF0와 AND연산해야 한다.
따라서 wParam & 0xFFF0 을 해야 한다.
하지만 API 프로그래밍과 다르게 MFC의 경우 파라미터가 달라 약간의 혼돈이 온다.
MFC에서는
afx_msg void OnSysCommand( UINT nID, LPARAM lParam );
이라고 언급되어있다.
하지만 UINT의 데이터 타입과 WPARAM의 실제 데이터 크기는 같다.
단지 MFC에서는 이름만 바뀌었을뿐이다.
따라서 MFC에서 SysCommand에서의 메시지를 알고 싶으면
nID & 0xFFF0 의 값을 참조하면 된다.
'프로그래밍 - Windows > Win32 API' 카테고리의 다른 글
| WM_QUERYENDSESSION과 WM_ENDSESSION (0) | 2007/03/23 |
|---|---|
| display 해상도 변경하기 (0) | 2006/09/04 |
| 윈도우 메시지 WM_SYSCOMMAND (0) | 2006/09/01 |
| Win32 Message 모음 (0) | 2006/08/31 |
