기본 목록 뷰 메시지 처리

이 섹션에서는 목록 뷰 컨트롤에서 수행하는 창 메시지 처리를 나열합니다.

메시지 처리

다음 표에서는 목록 뷰 컨트롤에서 수행하는 창 메시지 처리에 대해 설명합니다.

메시지 수행된 처리
WM_CHAR 지정된 문자로 시작하는 목록 뷰 항목을 검색하고 항목이 발견되면 선택하고 포커스를 해당 항목으로 설정합니다. 현재는 1초로 고정된 제한 시간 간격 내에 수신된 여러 문자가 연결되고 목록 뷰 컨트롤은 결과 문자열로 시작하는 항목을 검색합니다.
WM_COMMAND EN_UPDATEEN_KILLFOCUS 알림 코드를 처리하고 다른 모든 편집 컨트롤 알림을 부모 창으로 전달합니다.
WM_CREATE WM_NCCREATE에 대해 추가 초기화를 수행합니다. LVS_SHAREIMAGELISTS 창 스타일을 지정하지 않으면 목록 뷰 컨트롤은 이 지점에 아이콘과 작은 아이콘 이미지 목록을 만듭니다.
WM_DESTROY WM_CREATE 중에 할당된 리소스를 해제합니다.
WM_ERASEBKGND 목록 뷰 컨트롤의 현재 배경색을 사용하여 창 배경을 지웁니다. 배경색이 CLR_NONE 값이면 목록 뷰 컨트롤이 메시지를 부모 창으로 전달합니다.
WM_GETDLGCODE DLGC_WANTARROWS 및 DLGC_WANTCHARS 값의 조합을 반환합니다.
WM_GETFONT 핸들을 현재 레이블 글꼴로 되돌립니다.
WM_HSCROLL 목록 뷰 컨트롤을 가로로 스크롤합니다.
WM_KEYDOWN SPACEBAR, 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 시스템 메트릭의 변경 내용을 처리합니다.