다음을 통해 공유


목록 뷰 이미지 목록을 추가하는 방법

이 항목에서는 목록 뷰 컨트롤에 이미지 목록을 추가하는 방법을 보여 줍니다.

컨트롤에서 사용하는 이미지 목록만 만듭니다. 예를 들어 애플리케이션에서 사용자가 아이콘 뷰로 전환할 수 없는 경우 큰 아이콘 목록을 만들고 할당할 필요가 없습니다. 큰 이미지 목록과 작은 이미지 목록을 모두 만드는 경우, 단일 값을 사용하여 두 이미지 목록에서 목록 뷰 항목의 아이콘을 식별하므로 동일한 순서로 동일한 이미지를 포함해야 합니다.

알아야 하는 작업

기술

필수 구성 요소

  • C/C++
  • Windows 사용자 인터페이스 프로그래밍

지침

항목 이미지를 표시하려면 목록 뷰 컨트롤에 이미지 목록을 할당해야 합니다. 이렇게 하려면 LVM_SETIMAGELIST 메시지 또는 해당 ListView_SetImageList 매크로를 사용하여 이미지 목록에 전체 크기 아이콘, 작은 아이콘 또는 상태 이미지를 포함하는지 여부를 지정합니다. 현재 목록 뷰 컨트롤에 할당된 이미지 목록에 대한 핸들을 검색하려면 LVM_GETIMAGELIST 메시지를 사용합니다. GetSystemMetrics 함수를 사용하면 전체 크기 및 작은 아이콘에 적합한 차원을 결정할 수 있습니다.

다음 C++ 코드 예제에서는 먼저 애플리케이션 정의 함수로 이미지 목록을 만든 다음 목록 뷰 컨트롤에 할당합니다.

// InitListViewImageLists: Creates image lists for a list-view control.
// This function only creates image lists. It does not insert the items into
// the control, which is necessary for the control to be visible.   
//
// Returns TRUE if successful, or FALSE otherwise. 
//
// hWndListView: Handle to the list-view control. 
// global variable g_hInst: The handle to the module of either a 
// dynamic-link library (DLL) or executable (.exe) that contains
// the image to be loaded. If loading a standard or system
// icon, set g_hInst to NULL.
//
BOOL InitListViewImageLists(HWND hWndListView) 
{ 
    HICON hiconItem;     // Icon for list-view items.
    HIMAGELIST hLarge;   // Image list for icon view.
    HIMAGELIST hSmall;   // Image list for other views.

    // Create the full-sized icon image lists. 
    hLarge = ImageList_Create(GetSystemMetrics(SM_CXICON), 
                              GetSystemMetrics(SM_CYICON), 
                              ILC_MASK, 1, 1); 

    hSmall = ImageList_Create(GetSystemMetrics(SM_CXSMICON), 
                              GetSystemMetrics(SM_CYSMICON), 
                              ILC_MASK, 1, 1); 
    
    // Add an icon to each image list.  
    hiconItem = LoadIcon(g_hInst, MAKEINTRESOURCE(IDI_ITEM));

    ImageList_AddIcon(hLarge, hiconItem);
    ImageList_AddIcon(hSmall, hiconItem);

    DestroyIcon(hiconItem);
 
// When you are dealing with multiple icons, you can use the previous four lines of 
// code inside a loop. The following code shows such a loop. The 
// icons are defined in the application's header file as resources, which 
// are numbered consecutively starting with IDS_FIRSTICON. The number of 
// icons is defined in the header file as C_ICONS.
/*    
    for(index = 0; index < C_ICONS; index++)
    {
        hIconItem = LoadIcon (g_hinst, MAKEINTRESOURCE(IDS_FIRSTICON + index));
        ImageList_AddIcon(hSmall, hIconItem);
        ImageList_AddIcon(hLarge, hIconItem);
        Destroy(hIconItem);
    }
*/
    
    // Assign the image lists to the list-view control. 
    ListView_SetImageList(hWndListView, hLarge, LVSIL_NORMAL); 
    ListView_SetImageList(hWndListView, hSmall, LVSIL_SMALL); 
    
    return TRUE; 
}

목록 뷰 컨트롤 참조

목록 뷰 컨트롤 정보

목록 뷰 컨트롤 사용