GetDesktopWindow()->PostMessage(WM_SYSCOMMAND, SC_SCREENSAVE, 0L);
[설명]
현재 데스크탑의 윈도우 포인터를 얻어오고, 그 윈도우에 시스템에 등록된 스크린 세이버를 실행하라는 명령을 전송한다.
CWnd::GetDesktopWindow
static CWnd* PASCAL GetDesktopWindow( );
Return Value
Identifies the Windows desktop window. This pointer may be temporary and should not be stored for later use.
Remarks
Returns the Windows desktop window. The desktop window covers the entire screen and is the area on top of which all icons and other windows are painted.
설명
데스크탑 윈도우의 포인터를 얻는 함수. 현재 데스크탑 윈도우의 포인터를 얻는다.
CWnd::PostMessage
BOOL PostMessage( UINT message, WPARAM wParam = 0, LPARAM lParam = 0 );
Return Value
Nonzero if the message is posted; otherwise 0.
Parameters
message
Specifies the message to be posted.
wParam
Specifies additional message information. The content of this parameter depends on the message being posted.
lParam
Specifies additional message information. The content of this parameter depends on the message being posted.
설명
메세지를 전송한다.
WM_SYSCOMMAND
인수 |
wParam : 시스템 명령의 종류가 전달되며 사용자가 시스템 메뉴에서 어떤 항목을 선택했는지를 알 수 있다. 이 값의 하위 4비트는 시스템이 내부적으로 사용하는 값이므로 명령의 종류를 알고 싶으면 wParam을 0xFFF0와 AND연산해야 한다. 연산한 결과는 다음값 중의 하나가 된다.
각 값들은 해당 명령이 선택되었다는 뜻이지 이미 실행되었다는 뜻이 아니다. 예를 들어 사용자가 시스템 메뉴에서 '이동'항목을 선택하면 SC_MOVE가 전달되는데 이때는 아직 이동을 시작하지 않은 상태이다. lParam : 마우스로 윈도우 메뉴를 선택한 경우 커서의 좌표가 전달된다. 하위 워드에는 수평 좌표, 상위 워드에는 수직 좌표가 전달되는데 이 좌표는 화면 기준 좌표이다. 액셀러레이터에 의해 명령이 선택되었으면 -1이 되며 니모닉에 의해 선택되었으면 0이 된다. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
설명 |
시스템 메뉴에 있는 메뉴 항목을 선택하면 WM_COMMAND 메시지 대신 이 메시지가 전달된다. 시스템 메뉴를 직접 선택하는 동작 외에도 타이틀 바에 있는 최대, 최소, 닫기 버튼 등의 명령들도 이 메시지를 발생시킨다. 시스템 메뉴에 있는 명령들은 윈도우를 관리하기 위한 기본적인 명령이므로 응용 프로그램은 이 메시지를 직접 처리하지 않고 보통 DefWindowProc으로 그냥 보내 준다. DefWindowProc은 wParam값에 따라 시스템에 미리 정의되어 있는 동작을 수행한다. 예를 들어 SC_MINIMIZE 시스템 명령이 전달되었으면 윈도우를 최소화하고 SC_CLOSE 명령이 전달되었으면 윈도우를 닫는다. 응용 프로그램이 직접 이 시스템 명령을 프로그래밍 하고 싶다면 이 메시지를 처리하며 자신이 처리한 시스템 명령은 DefWindowProc으로 보내지 말아야 한다. 그외의 시스템 명령은 모두 DefWindowProc으로 보내 주어 디폴트 처리를 하도록 해야 한다. 시스템 메뉴에는 이동, 최소화, 최대화, 크기 조정, 닫기 등의 표준 윈도우 관리 명령들만 들어 있다. GetSystemMenu, AppendMenu 등의 메뉴 관련 명령을 사용하면 시스템 메뉴에도 응용 프로그램 고유의 메뉴 항목을 추가할 수 있다. 이렇게 만들어진 메뉴 항목을 선택할 때는 WM_COMMAND 대신 WM_SYSCOMMAND 메시지가 대신 전달되므로 반드시 이 메시지를 처리해야 한다. 이 경우 직접 추가한 메뉴 항목 외의 시스템 명령은 모두 DefWindowProc으로 전달해 주어야 한다. 응용 프로그램이 시스템 명령을 직접 실행할 필요가 있다면 wParam에 원하는 시스템 명령을 대입하고 DefWindowProc으로 WM_SYSCOMMAND를 보내 준다. 예를 들어 윈도우를 닫고 싶으면 SendMessage(hWnd, WM_SYSCOMMAND, SC_CLOSE, 0); 명령을 보내 주면 된다. |
'Robotics > Software Tech.' 카테고리의 다른 글
MFC 샘플 소스코드 (0) | 2007.09.20 |
---|---|
메세지 펌프(Message Pump) (0) | 2007.09.08 |
SOAP에 대해서. (0) | 2007.09.06 |
SOAP(Simple Object Access Protocol) (0) | 2007.09.06 |
CString to Hex Decimal (1) | 2007.09.06 |