아이콘 정보
시스템은 사용자 인터페이스 전체의 아이콘을 사용하여 파일, 폴더, 바로 가기, 애플리케이션 및 문서와 같은 개체를 나타냅니다. 아이콘 함수를 사용하면 애플리케이션에서 아이콘을 만들고, 로드하고, 표시하고, 정렬하고, 애니메이션하고, 삭제할 수 있습니다. 파일 형식의 아이콘을 지정하는 방법에 대한 자세한 내용은 ExtractIcon을 참조하세요.
이 개요에서는 다음 topics 대한 정보를 제공합니다.
아이콘 핫 스폿
아이콘의 픽셀 중 하나는 시스템이 아이콘의 위치로 추적하고 인식하는 지점인 핫 스폿으로 지정됩니다. 아이콘의 핫 스폿은 일반적으로 아이콘의 중앙에 있는 픽셀입니다. 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 시작)
시스템 작은 아이콘이 창 캡션 표시됩니다.
애플리케이션의 기본 설정 아이콘 크기에 대한 권장 사항은 아이콘 크기 조정 을 참조하세요.
시스템 작은 아이콘의 크기를 변경하려면
- 제어판 표시를 클릭한 다음 모양 탭을 클릭합니다.
- 항목 목록에서 캡션 단추를 선택한 다음 크기 필드를 설정합니다.
시스템 작은 아이콘의 크기를 검색하려면
- SM_CXSMICON 및 SM_CYSMICON사용하여 GetSystemMetrics 함수를 호출합니다.
시스템 큰 아이콘은 주로 애플리케이션에서 사용되지만 Alt+Tab 대화 상자에도 표시됩니다. CreateIconFromResource, DrawIcon, ExtractAssociatedIcon, ExtractIcon, ExtractIconEx 및 LoadIcon 함수는 모두 시스템 큰 아이콘을 사용합니다. 시스템 큰 아이콘의 크기는 비디오 드라이버에 의해 정의되므로 변경할 수 없습니다.
시스템 큰 아이콘의 크기를 검색하려면
- SM_CXICON 및 SM_CYICON사용하여 GetSystemMetrics를 호출합니다.
CreateIcon, CreateIconFromResourceEx, CreateIconIndirect 및 SHGetFileInfo 함수를 사용하여 시스템 크기가 아닌 다른 크기의 아이콘으로 작업할 수 있습니다.
셸 작은 아이콘은 Windows Explorer 및 일반적인 대화 상자에서 사용됩니다. 현재 이 기본값은 시스템 크기가 작습니다.
셸 작은 아이콘의 크기를 검색하려면
- 와 함께
SHGFI_SHELLICONSIZE | SHGFI_SMALLICON
SHGetFileInfo 함수를 사용하여 시스템 이미지 목록에 대한 핸들을 검색합니다. - 그런 다음 , ImageList_GetIconSize 함수를 호출하여 아이콘 크기를 가져옵니다.
셸 큰 아이콘은 바탕 화면에서 사용됩니다.
큰 아이콘의 크기를 변경하려면
- 제어판 표시를 클릭한 다음 모양 탭을 클릭합니다.
- 항목 목록에서 아이콘을 선택한 다음 크기 필드를 설정합니다(이 크기는 레지스트리의 HKEY_CURRENT_USER\Control Panel Desktop\WindowMetrics\Shell 아이콘 크기에 저장됨).
- 더하기! 탭을 클릭한 다음 큰 아이콘 검사 사용 상자를 선택합니다.
셸 큰 아이콘의 크기를 검색하려면
- SHGFI_SHELLICONSIZESHGetFileInfo 함수를 사용하여 시스템 이미지 목록에 대한 핸들을 검색합니다.
- 그런 다음 , ImageList_GetIconSize 함수를 호출하여 아이콘 크기를 가져옵니다.
창 클래스를 등록하는 데 사용할 WNDCLASSEX 구조를 채울 때 hIcon 멤버를 시스템 큰 아이콘(일반적으로 32x32)으로 설정하고 hIconSm 멤버를 시스템 작은 아이콘(일반적으로 16x16)으로 설정합니다. 클래스 아이콘에 대한 자세한 내용은 클래스 아이콘을 참조하세요.
아이콘 만들기
표준 아이콘은 미리 정의되어 있으므로 만들 필요가 없습니다. 표준 아이콘을 사용하려면 애플리케이션이 LoadImage 함수를 사용하여 해당 핸들을 가져올 수 있습니다. 아이콘 핸들은 표준 또는 사용자 지정 아이콘을 식별하는 HICON 유형의 고유한 값입니다.
애플리케이션에 대한 사용자 지정 아이콘을 만들려면 일반적으로 그래픽 애플리케이션을 사용하고 애플리케이션의 리소스 정의 파일에 ICON 리소스 를 포함합니다. 런타임에 LoadIcon 또는 LoadImage 를 호출하여 아이콘에 대한 핸들을 검색할 수 있습니다. 아이콘 리소스에는 여러 다른 디스플레이 디바이스에 대한 이미지 그룹이 포함될 수 있습니다. LoadIcon 및 LoadImage 는 현재 디스플레이 디바이스에 대한 그룹에서 가장 적합한 아이콘을 자동으로 선택합니다.
애플리케이션은 CREATEIconIndirect 함수를 사용하여 런타임에 사용자 지정 아이콘을 만들 수도 있습니다. 이 함수는 ICONINFO 구조체의 내용을 기반으로 아이콘을 만듭니다. GetIconInfo 함수는 핫 스폿 좌표와 아이콘의 비트 마스크 비트맵 및 색 비트맵에 대한 정보로 구조를 채웁니다.
애플리케이션은 사용자 지정 아이콘을 리소스로 구현해야 하며 런타임에 아이콘을 만드는 대신 LoadIcon 또는 LoadImage를 사용해야 합니다. 아이콘 리소스를 사용하면 디바이스 의존성이 방지되고, 지역화가 간소화되며, 애플리케이션에서 아이콘 셰이프를 공유할 수 있습니다.
CreateIconFromResourceEx 함수를 사용하면 애플리케이션이 시스템의 리소스를 탐색하고 리소스 데이터를 기반으로 아이콘과 커서를 만들 수 있습니다. CreateIconFromResourceEx 는 다른 실행 파일 또는 DLL의 이진 리소스 데이터를 기반으로 아이콘을 만듭니다. 애플리케이션은 LookupIconIdFromDirectoryEx 함수 및 여러 리소스 함수를 호출하여 이 함수 앞에 와야 합니다. LookupIconIdFromDirectoryEx 는 현재 디스플레이 디바이스에 가장 적합한 아이콘 데이터의 식별자를 반환합니다.
아이콘 표시
GetIconInfo 함수를 사용하여 아이콘에 대한 이미지를 검색하고 DrawIconEx 함수를 사용하여 그릴 수 있습니다. 아이콘의 기본 이미지를 그리려면 DrawIconEx 호출에서 DI_COMPAT 플래그를 지정합니다. DI_COMPAT 플래그를 지정하지 않으면 DrawIconEx는 사용자가 지정한 이미지를 사용하여 아이콘을 그립니다.
시스템에서 아이콘을 표시하면 .exe 또는 .dll 파일에서 적절한 아이콘 이미지를 추출해야 합니다. 시스템은 다음 단계를 사용하여 아이콘 이미지를 선택합니다.
- RT_GROUP_ICON 리소스를 선택합니다. 이러한 리소스가 둘 이상 있는 경우 시스템은 리소스 스크립에 나열된 첫 번째 리소스를 사용합니다.
-
RT_GROUP_ICON 리소스에서 적절한 RT_ICON 이미지를 선택합니다. 두 개 이상의 이미지가 있는 경우 시스템은 다음 조건을 사용하여 이미지를 선택합니다.
- 요청된 크기에 가장 가까운 이미지가 선택됩니다.
- 해당 크기의 이미지가 두 개 이상 있는 경우 디스플레이의 색 깊이와 일치하는 이미지가 선택됩니다.
- 디스플레이의 색 깊이와 정확히 일치하는 이미지가 없으면 디스플레이의 색 깊이를 초과하지 않는 색 깊이가 가장 큰 이미지가 선택됩니다. 모두 색 깊이를 초과하면 색 깊이가 가장 낮은 색이 선택됩니다.
참고
시스템은 8 bpp 이상의 모든 색 깊이를 동일하게 처리합니다. 따라서 동일한 리소스에 16x16 256 색 이미지와 16x16 16색 이미지를 포함할 때의 이점은 없습니다. 시스템은 처음 만나는 이미지를 선택하기만 하면 됩니다. 디스플레이가 8bpp 모드인 경우 시스템은 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)에서 아이콘 리소스를 추가, 제거 또는 바꾸는 방법에 대한 자세한 내용은 리소스를 참조하세요.
DuplicateIcon 함수는 아이콘의 실제 복사본을 만듭니다.