프로그래밍 - Windows/MFC

CListCtrl에서 전체 선택하도록 하는 법


Report형식으로 된 CListCtrl 컨트롤을 기본 사용할 때의 팁.

기본세팅은 마우스 버튼을 클릭하면 맨 처음 열의 원소만 선택되지만,

아래와 같이 사용하는 Dialog에서 초기화 시켜줄 경우 전체 선택이 된다.

DWORD style = LVS_EX_FULLROWSELECT;
m_list.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LPARAM(style));


top

프로그래밍 - Windows/Win32 API

윈도우 메시지 WM_SYSCOMMAND

윈도우 API에도 잘 나와있고 MSDN 설명에도 잘 나와있는 WM_SYSCOMMAND 메시지.

키 입력등을 받는 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
top