이 섹션에서는 목록 보기 컨트롤에서 수행하는 창 메시지 처리를 나열합니다.
메시지 처리
다음 표에서는 목록 보기 컨트롤에서 수행하는 창 메시지 처리에 대해 설명합니다.
메시지 | 처리 수행됨 |
---|---|
WM_CHAR | 지정된 문자로 시작하는 목록 보기 항목을 검색하고 항목이 발견되면 포커스를 선택하여 항목으로 설정합니다. 제한 시간 간격 내에 수신된 여러 문자(현재 1초에 고정됨)가 연결되고 목록 보기 컨트롤은 결과 문자열로 시작하는 항목을 검색합니다. |
WM_COMMAND | EN_UPDATE 처리하고 알림 코드를 EN_KILLFOCUS 다른 모든 편집 컨트롤 알림을 부모 창에 전달합니다. |
WM_CREATE | WM_NCCREATE추가 초기화를 수행합니다. LVS_SHAREIMAGELISTS 창 스타일을 지정하지 않으면 목록 보기 컨트롤이 이 시점에서 아이콘과 작은 아이콘 이미지 목록을 만듭니다. |
WM_DESTROY | WM_CREATE동안 할당된 리소스를 해제합니다. |
WM_ERASEBKGND | 목록 보기 컨트롤의 현재 배경색을 사용하여 창 배경을 지웁니다. 배경색이 CLR_NONE 값이면 목록 보기 컨트롤이 메시지를 부모 창으로 전달합니다. |
WM_GETDLGCODE | DLGC_WANTTAB 값과 DLGC_WANTARROWS 값의 조합을 반환합니다. |
WM_GETFONT | 현재 레이블 글꼴에 대한 핸들을 반환합니다. |
WM_HSCROLL | 목록 보기 컨트롤을 가로로 스크롤합니다. |
WM_KEYDOWN | 스페이스바, ENTER 및 화살표 키를 처리하고 LVN_KEYDOWN 알림 코드를 부모 창으로 보냅니다. |
WM_KILLFOCUS | 포커스가 있는 목록 항목(있는 경우)을 다시 칠하고 NM_KILLFOCUS 알림 코드를 부모 창으로 보냅니다. |
WM_LBUTTONDBLCLK | NM_DBLCLK(목록 보기) 알림 코드를 부모 창에 보냅니다. |
WM_LBUTTONDOWN | 클릭 또는 끌기 작업이 시작되는지 여부에 따라 다른 방식으로 처리됩니다. 관련된 작업을 확인하기 위해 목록 보기 컨트롤은 단추가 해제되거나 마우스를 이동할 때까지 모달 메시지 루프를 입력합니다. 클릭의 경우 목록 보기 컨트롤은 커서 위치, Shift 및 Ctrl 키의 상태 등을 고려하여 포커스가 있는 항목과 선택한 항목을 변경할 수 있습니다. 그런 다음 목록 보기 컨트롤은 부모 창에 알림 코드를 NM_CLICK(목록 보기)를 보냅니다. 항목 위로 끌기가 시작되면 목록 보기 컨트롤이 포커스를 선택하여 항목으로 설정합니다. 그런 다음 LVN_BEGINDRAG 알림 코드를 부모 창으로 보냅니다. 부모 창은 실제로 끌기 작업을 수행합니다. 창 배경 위로 끌기가 시작되면 목록 보기 컨트롤이 다른 모달 메시지 루프를 입력하여 사용자가 마우스를 끌어 사각형을 형성할 수 있도록 합니다. 사각형 내의 항목이 선택됩니다. |
WM_NCCREATE | 내부 데이터 구조를 할당하고 초기화한 다음 DefWindowProc 함수를 호출합니다. |
WM_NCDESTROY | 목록 보기 컨트롤에서 할당한 리소스를 해제합니다. LVS_SHAREIMAGELISTS 스타일을 사용하지 않는 한 전체 크기 및 작은 이미지 목록 삭제가 포함됩니다. |
WM_NOTIFY | 헤더 컨트롤 알림 코드를 처리합니다. |
WM_PAINT | 업데이트 지역의 항목을 표시합니다. 콜백 항목의 경우 컨트롤은 먼저 LVN_GETDISPINFO 알림 코드를 소유자 창으로 보내 표시 정보를 요청합니다. wParam 매개 변수가 NULL이 아닌 경우 컨트롤은 값이 HDC라고 가정하고 해당 디바이스 컨텍스트를 사용하여 페인트합니다. |
WM_RBUTTONDOWN | 컨트롤이 NM_RCLICK(목록 보기) 알림 코드(NM_CLICK(목록 보기)대신) 및 LVN_BEGINRDRAG 알림 코드(LVN_BEGINDRAG대신)를 전송한다는 점을 제외하고 WM_LBUTTONDOWN 메시지와 동일한 방식으로 처리됩니다. 컨트롤은 해당 WM_RBUTTONUP 메시지를 처리하고 디스패치하지 않습니다. 따라서 애플리케이션은 컨트롤을 서브클래싱해도 이 메시지를 볼 수 없습니다. |
WM_SETFOCUS | 포커스가 있는 목록 항목(있는 경우)을 다시 칠하고 NM_SETFOCUS 알림 코드를 부모 창으로 보냅니다. |
WM_SETFONT | 지정된 글꼴 핸들을 저장하고, 헤더 창(있는 경우)에 메시지를 전달하고, 새 글꼴을 사용하여 다시 칠합니다. |
WM_SETREDRAW | 다시 그리기를 켜거나 끕니다. |
WM_TIMER | 항목 레이블 편집을 시작합니다. 사용자가 포커스가 있는 항목의 레이블을 클릭하면 목록 보기 컨트롤은 편집 모드를 즉시 입력하는 대신 타이머를 설정합니다. 타이머를 사용하면 사용자가 레이블을 두 번 클릭하면 목록 보기 컨트롤이 편집 모드로 전환되지 수 있습니다. |
WM_VSCROLL | 목록 보기 컨트롤을 세로로 스크롤합니다. |
WM_WINDOWPOSCHANGED | 창 스크롤 막대를 업데이트합니다. 현재 보기가 아이콘 또는 작은 아이콘 보기이고 LVS_AUTOARRANGE 스타일이 지정된 경우 목록 보기 컨트롤도 목록 항목을 정렬합니다. |
WM_WININICHANGE | 시스템 메트릭의 변경 내용을 처리합니다. |