다음을 통해 공유


아이콘 정보

시스템은 사용자 인터페이스 전체의 아이콘을 사용하여 파일, 폴더, 바로 가기, 애플리케이션 및 문서와 같은 개체를 나타냅니다. 아이콘 함수를 사용하면 애플리케이션에서 아이콘을 만들고, 로드하고, 표시하고, 정렬하고, 애니메이션을 적용하고, 삭제할 수 있습니다. 파일 형식에 대한 아이콘을 지정하는 방법에 대한 자세한 내용은 ExtractIcon참조하세요.

이 개요에서는 다음 항목에 대한 정보를 제공합니다.

아이콘 핫 스폿

아이콘의 픽셀 중 하나는 핫스폿지정됩니다. 이 지점은 시스템이 아이콘의 위치로 추적하고 인식하는 지점입니다. 아이콘의 핫 스폿은 일반적으로 아이콘의 가운데에 있는 픽셀입니다. CreateIconIndirect 함수를 사용하여 아이콘을 만드는 경우 모든 픽셀을 핫 스폿으로 지정할 수 있습니다.

아이콘 유형

운영 체제는 언제든지 모든 애플리케이션에서 사용할 수 있는 표준 아이콘 집합을 제공합니다. SDK(소프트웨어 개발 키트) 헤더 파일에는 시스템 아이콘에 대한 식별자가 포함되어 있습니다. 식별자는 IDI_ 접두사로 시작합니다.

의미
IDI_APPLICATION
MAKEINTRESOURCE(32512)
기본 애플리케이션 아이콘
IDI_ERROR
MAKEINTRESOURCE(32513)
오류 아이콘
IDI_QUESTION
MAKEINTRESOURCE(32514)
물음표 아이콘
IDI_WARNING
MAKEINTRESOURCE(32515)
경고 아이콘
IDI_INFORMATION
MAKEINTRESOURCE(32516)
정보 아이콘
IDI_WINLOGO
MAKEINTRESOURCE(32517)
Windows 로고 아이콘
IDI_SHIELD
MAKEINTRESOURCE(32518)
보안 보호 아이콘

표준 아이콘의 권장 사용에 대한 자세한 내용은 지침 참조하세요.

또한 Windows Vista부터 SHGetStockIconInfo 메서드를 통해 표준 시스템 셸 아이콘의 추가 집합을 사용할 수 있습니다.

사용자 지정 아이콘 특정 애플리케이션에서 사용하도록 설계되었으며 모든 디자인이 될 수 있습니다. 사용자는 파일에서 사용자 지정 아이콘을 로드하거나 런타임에 만들 수 있습니다. 다음은 몇 가지 사용자 지정 아이콘입니다.

여러 사용자 지정 아이콘

아이콘 크기

시스템은 다음 네 가지 아이콘 크기를 사용합니다.

  • 시스템 작음
  • 시스템 크다
  • 작은 셸
  • 셸 대형
  • 점보(Windows Vista에서 시작)

시스템 작은 아이콘 창 캡션에 표시됩니다.

애플리케이션의 기본 설정 아이콘 크기에 대한 권장 사항은 아이콘 크기 조정 참조하세요.

시스템 작은 아이콘의 크기를 변경하려면

  1. 제어판에서 표시를 클릭한 다음 모양 탭을 클릭합니다.
  2. 캡션 단추항목 목록에서 선택한 다음, 크기 필드를 설정합니다.

시스템 작은 아이콘의 크기를 검색하려면

  • SM_CXSMICONSM_CYSMICON사용하여 GetSystemMetrics 함수를 호출합니다.

시스템 큰 아이콘 주로 애플리케이션에서 사용 하지만 Alt+Tab 대화 상자에 표시 됩니다. CreateIconFromResource, DrawIcon, ExtractAssociatedIcon, ExtractIcon, ExtractIconExLoadIcon 함수는 모두 시스템 큰 아이콘을 사용합니다. 시스템 큰 아이콘의 크기는 비디오 드라이버에 의해 정의되므로 변경할 수 없습니다.

시스템 큰 아이콘의 크기를 검색하려면

CreateIcon, CreateIconFromResourceEx, CreateIconIndirectSHGetFileInfo 함수를 사용하여 시스템 크기 이외의 크기의 아이콘을 사용할 수 있습니다.

셸 작은 아이콘 Windows 탐색기와 일반적인 대화 상자에서 사용됩니다. 기본값은 현재 시스템의 작은 크기로 설정됩니다.

셸 작은 아이콘의 크기를 가져오려면

  1. SHGFI_SHELLICONSIZE | SHGFI_SMALLICON SHGetFileInfo 함수를 사용하여 시스템 이미지 목록에 대한 핸들을 검색합니다.
  2. 그런 다음 ImageList_GetIconSize 함수를 호출하여 아이콘 크기를 가져옵니다.

바탕 화면에서 셸 큰 아이콘이 사용됩니다.

큰 아이콘의 크기를 변경하려면

  1. 제어판에서 표시클릭한 다음 모양 탭을 클릭합니다.
  2. 항목 목록에서 아이콘 선택한 다음 크기 필드를 설정합니다(이 크기는 레지스트리의 HKEY_CURRENT_USER\Control Panel, Desktop\WindowMetrics\Shell 아이콘 크기)에 저장됩니다.
  3. Plus! 탭을 클릭한 다음 큰 아이콘 사용 확인란을 선택합니다.

셸 큰 아이콘의 크기를 검색하려면

  1. SHGetFileInfo 함수를 SHGFI_SHELLICONSIZE와 함께 사용하여 시스템 이미지 목록의 핸들을 검색합니다.
  2. 그런 다음 ImageList_GetIconSize 함수를 호출하여 아이콘 크기를 가져옵니다.

창 클래스를 등록하는 데 사용할 WNDCLASSEX 구조를 채울 때 hIcon 멤버를 시스템 큰 아이콘(일반적으로 32x32)으로 설정하고 hIconSm 멤버를 시스템 작은 아이콘(일반적으로 16x16)으로 설정합니다. 클래스 아이콘에 대한 자세한 내용은 클래스 아이콘참조하세요.

아이콘 만들기

표준 아이콘은 미리 정의되어 있으므로 만들 필요가 없습니다. 표준 아이콘을 사용하기 위해 애플리케이션은 LoadImage 함수를 사용하여 그 핸들을 얻을 수 있습니다. 아이콘 핸들 표준 또는 사용자 지정 아이콘을 식별하는 HICON 형식의 고유한 값입니다.

애플리케이션에 대한 사용자 지정 아이콘을 만들려면 일반적으로 그래픽 애플리케이션을 사용하고 애플리케이션의 리소스 정의 파일에 ICON 리소스 포함합니다. 런타임에 LoadIcon 또는 LoadImage를 호출하여 아이콘에 대한 핸들을 얻을 수 있습니다. 아이콘 리소스에는 여러 다른 디스플레이 디바이스에 대한 이미지 그룹이 포함될 수 있습니다. LoadIconLoadImage 현재 디스플레이 디바이스에 대한 그룹에서 가장 적합한 아이콘을 자동으로 선택합니다.

애플리케이션은 ICONINFO 구조체의 내용을 기반으로 아이콘을 만드는 CreateIconIndirect 함수를 사용하여 런타임에 사용자 지정 아이콘을 만들 수도 있습니다. GetIconInfo 함수는 핫 스폿 좌표와 아이콘의 비트맵 및 색 비트맵에 대한 정보로 구조를 채웁니다.

애플리케이션은 사용자 지정 아이콘을 리소스로 구현해야 하며 런타임에 아이콘을 만드는 대신 LoadIcon 또는 LoadImage사용해야 합니다. 아이콘 리소스를 사용하면 디바이스 의존성이 방지되고 지역화가 간소화되며 애플리케이션에서 아이콘 셰이프를 공유할 수 있습니다.

CreateIconFromResourceEx 함수를 사용하면 애플리케이션이 시스템의 리소스를 탐색하고 리소스 데이터를 기반으로 아이콘과 커서를 만들 수 있습니다. CreateIconFromResourceEx 다른 실행 파일 또는 DLL의 이진 리소스 데이터를 기반으로 아이콘을 만듭니다. 애플리케이션은 LookupIconIdFromDirectoryEx 함수 및 여러 리소스 함수에 대한 호출과 함께 이 함수 앞에 와야 합니다. LookupIconIdFromDirectoryEx 현재 디스플레이 디바이스에 가장 적합한 아이콘 데이터의 식별자를 반환합니다.

아이콘 표시

GetIconInfo 함수를 사용하여 아이콘 이미지를 검색하고 DrawIconEx 함수를 사용하여 그릴 수 있습니다. 아이콘에 대한 기본 이미지를 그리려면 DrawIconEx호출에서 DI_COMPAT 플래그를 지정합니다. DI_COMPAT 플래그를 지정하지 않으면 DrawIconEx 사용자가 지정한 이미지를 사용하여 아이콘을 그립니다.

시스템에서 아이콘을 표시하면 .exe 또는 .dll 파일에서 적절한 아이콘 이미지를 추출해야 합니다. 시스템은 다음 단계를 사용하여 아이콘 이미지를 선택합니다.

  1. RT_GROUP_ICON 리소스를 선택합니다. 이러한 리소스가 둘 이상 있는 경우 시스템은 리소스 스크립에 나열된 첫 번째 리소스를 사용합니다.
  2. RT_GROUP_ICON 리소스에서 적절한 RT_ICON 이미지를 선택합니다. 이미지가 두 개 이상 있는 경우 시스템은 다음 조건을 사용하여 이미지를 선택합니다.
    • 요청된 크기에 가장 가까운 이미지가 선택됩니다.
    • 해당 크기의 이미지가 두 개 이상 있는 경우 디스플레이의 색 깊이와 일치하는 이미지가 선택됩니다.
    • 디스플레이의 색 깊이와 정확히 일치하는 이미지가 없으면 디스플레이의 색 깊이를 초과하지 않는 색 깊이가 가장 큰 이미지가 선택됩니다. 모두 색 농도를 초과하면 색 깊이가 가장 낮은 색이 선택됩니다.

메모

시스템은 8 bpp 이상의 모든 색 깊이를 동일하게 처리합니다. 따라서 동일한 리소스에 16x16 256 색 이미지와 16x16 16색 이미지를 포함할 수 있다는 장점이 없습니다. 시스템은 처음 만나는 이미지를 선택하기만 하면 됩니다. 디스플레이가 8 bpp 모드인 경우 시스템은 256 색 아이콘 위에 16 색 아이콘을 선택하고 시스템 기본 색상표를 사용하여 모든 아이콘을 표시합니다.

 

애니메이션 아이콘을 표시하려면 다음 코드 조각과 같이 정적 컨트롤을 사용합니다.

hIcon = LoadImage(NULL, "ico.ani", IMAGE_ICON, 0, 0, LR_LOADFROMFILE);
SendMessage( hStatic, STM_SETIMAGE, IMAGE_ICON, (LPARAM)(UINT)hIcon);

아이콘 소멸

CreateIconIndirect 함수를 사용하여 만든 아이콘이 애플리케이션에 더 이상 필요하지 않은 경우 아이콘을 삭제해야 합니다. DestroyIcon 함수는 아이콘 핸들을 삭제하고 아이콘에서 사용하는 모든 메모리를 해제합니다. 애플리케이션은 CreateIconIndirect로 만든 아이콘에 대해서만 이 함수를 사용해야; 다른 아이콘을 삭제할 필요는 없습니다.

아이콘 중복

CopyIcon 함수는 아이콘 핸들을 복사합니다. 이렇게 하면 애플리케이션 또는 DLL이 다른 모듈이 소유한 아이콘에 대한 자체 핸들을 가져올 수 있습니다. 그런 다음 다른 모듈이 해제된 경우 아이콘을 복사한 애플리케이션은 여전히 아이콘을 사용할 수 있습니다.

CopyImage 함수는 지정된 소스 아이콘을 기반으로 새 아이콘을 만듭니다. 새 아이콘은 원본 아이콘보다 크거나 작을 수 있습니다.

실행 파일(.exe) 파일에서 아이콘 리소스를 추가, 제거 또는 바꾸는 방법에 대한 자세한 내용은 Resources참조하세요.

DuplicateIcon 함수는 아이콘의 실제 복사본을 만듭니다.