[WINAPI]LoadImage 함수

MSDN 원형


HANDLE WINAPI LoadImage(
_In_opt_ HINSTANCE hinst,
_In_ LPCTSTR lpszName,
_In_ UINT uType,
_In_ int cxDesired,
_In_ int cyDesired,
_In_ UINT fuLoad
);

HINSTANCE hinst(in, optional) – 로드 이미지가 포함 된 DLL 또는 실행 파일 (exe 파일) 중 하나의 모듈에 대한 핸들. 자세한 내용은 GetModuleHandle을 참조하십시오. 32 비트 응용 프로그램 인스턴스는 WinMain 함수 시스템 함수 호출에 의해 공개 된 핸들과 같은 Windows의 인스턴스 핸들 (HINSTANCE)로 모듈 핸들 (HMODULE)와 동일한 것임에주의하십시오.
OEM 이미지를로드하려면이 매개 변수를 NULL로 설정합니다.
(아이콘, 커서, 또는 비트 맵 파일)을 독립형 리소스를로드하려면 예를 들어, C : \에이 매개 변수를 NULL로 myimage.bmp을 설정하십시오.
 
– 독립형 리소스를 로드할시엔 이값을 넘겨주지 않아도 된다. NULL로 설정해주면되고, MAKEINTRESOURCE 함수를 통해 내부 리소스를 읽어올 경우 반드시 인스턴스 핸들을 넘겨주어야만 한다. 단, 내부 리소스를 불러올때는 이 함수보다, 오래전부터 쓰이던 LoadBitmap 함수가 훨씬더 사용하기 편리하다. 세세한 설정이 필요없을 경우엔 LoadBitmap만으로도 충분하기때문에 외부에 만들어진 파일을 읽어오거나 이미지를 로드할때 세세한 설정이 필요한게 아니라면 본함수를 꼭 써야할 이유는 없다.
 
LPCTSTR lpszName(in) – 이미지가로드된다. hinst 매개 변수가 NULL이 아니고 fuLoad 매개 변수가 LR_LOADFROMFILE 생략 한 경우】 lpszName hinst 모듈의 이미지 리소스를 지정합니다. 이미지 리소스는 모듈 이름에 의해로드 된 경우】 lpszName 매개 변수는 이미지 리소스의 이름을 포함하는 null로 끝나는 문자열에 대한 포인터입니다. 이미지 리소스는 모듈에서 순서에 의해로드 된 경우 LoadImage 함수에 전달할 수있는 형식으로 서론 이미지를 변환하는 데 MAKEINTRESOURCE 매크로를 사용하고 있습니다. 자세한 내용은 다음 설명을 참조하십시오.
hinst 매개 변수가 NULL로 fuLoad 매개 변수가 LR_LOADFROMFILE 값을 생략하는 경우】 lpszName로드 OEM 이미지를 지정합니다. OEM 이미지 식별자는 Winuser.h을에 정의 된 다음의 접두사를 가지고 있습니다.
접두사 : 의미
OBM_ : OEM 비트 맵
OIC_ : OEM 아이콘
OCR_ : OEM 커서

LoadImage 함수에 이러한 상수를 전달하려면 MAKEINTRESOURCE 매크로를 사용하고 있습니다. 예를 들어, OCR_NORMAL 커서를로드하기 위해 매개 변수] lpszName, NULL hinst 매개 변수로로 MAKEINTRESOURCE (OCR_NORMAL)을 전달 fuLoad 매개 변수에 플래그의 하나로서 LR_SHARED.
fuLoad 매개 변수가 LR_LOADFROMFILE 값이 포함되어있는 경우】 lpszName (아이콘, 커서, 또는 비트 맵 파일)을 독립형 리소스가 포함 된 파일의 이름입니다. 따라서 NULL에 hinst를 설정합니다.

– 로드할 이미지명을 넘겨줄 인자이다. 통상 문자열형으로 인자를 받으며, 불러올 이미지파일의 완전경로나 혹은 MAKEINTRESOURCE 함수를 통한 내부 리소스의 아이디값을 넘겨준다. 마찬가지로 내부 리소스를 활용하여 쓰는일은 잘없으므로 통상은 외부에 있는 파일의 완전 경로를 담은 문자열형 변수를 인자로 넣어준다.

UINT uType(in) – 이미지 형식을로드한다. 이 매개 변수는 다음 값 중 하나입니다.
값(상수값) – 의미
IMAGE_BITMAP(0) – 비트 맵을로드합니다.
IMAGE_CURSOR(2) – 커서를로드합니다.
IMAGE_ICON(1) – 아이콘을로드합니다.

– 해당하는 이미지의 형식을 지정한다. IMAGE_BITMAP일때는 당연히 확장자가 .bmp인 외부 비트맵 파일을 불러올때 사용하는 것이고 IMAGE_ICON일 경우엔 외부 .ico파일을 불러올때 지정해주는등 상황에 맞게 타입값을 넘겨주면 된다.

int cxDesired(in) – 아이콘이나 커서의 너비를 픽셀 단위로. 이 매개 변수를 제로로 fuLoad 매개 변수가 LR_DEFAULTSIZE 인 경우,이 함수는 너비 설정 SM_CXICON 또는 SM_CXCURSOR 시스템 메트릭 값을 사용합니다. 이 매개 변수를 제로로 LR_DEFAULTSIZE가 사용되지 않으면이 함수는 실제 리소스 너비를 사용한다.

– 불러올 리소스의 너비를 픽셀단위로 넘겨받는 인자이다. in으로 설정되어있으므로 반드시 인자를 넘겨줘야하며 생략할수없다. 단, 0으로의 입력은 허용되는데, 이때 비트맵일 경우 실제 비트맵의 너비값이 넘어가며, 아이콘이나 커서의 경우엔 fuLoad에 설정되어지는 플래그값에 따라 변경되는데, fuLoad인자에 LR_DEFAULTSIZE 플래그가 설정될 경우 아이콘은 SM_CXICON, 커서는 SM_CXCURSOR의 시스템 메트릭값을 사용하게 된다. 또한 LR_DEFAULTSIZE 플래그가 설정되어지지 않고, 인수를 0으로 넘겨받았을경우엔 비트맵과 같이 리소스의 실제 너비값으로 넘겨지게 된다.

int cyDesired(in) – 아이콘이나 커서의 높이 (픽셀 단위). 이 매개 변수를 제로로 fuLoad 매개 변수가 LR_DEFAULTSIZE 인 경우,이 함수는 높이를 설정하는 SM_CYICON 또는 SM_CYCURSOR 시스템 메트릭 값을 사용합니다. 이 매개 변수를 제로로 LR_DEFAULTSIZE가 사용되지 않으면이 함수는 실제 리소스 높이를 사용한다.

– int cxDesired와 같으며 높이값을 넘겨받는 인자이다. 높이값이라는 점을 제외하면 0으로 넘겨받았을시의 처리는 int cxDesired와 동일하다.

UINT fuLoad(in) – 이 매개 변수는 다음 값 중 하나 이상으로 할 수있다.
값(상수값) – 의미
LR_CREATEDIBSECTION(0x00002000) – uType 매개 변수가 IMAGE_BITMAP 지정하면 DIB 섹션 비트 맵이 아니라 호환되는 비트 맵을 반환하는 함수입니다. 이 플래그는 디스플레이 장치의 색에 매핑하지 않고 비트 맵을로드하는 데 유용하다.
LR_DEFAULTCOLOR(0x00000000)을 – 기본 플래그, 그것은 아무것도하지 않습니다. 그것이 의미하는 모두가 “LR_MONOCHROME 아니다”입니다.
LR_DEFAULTSIZE(0x00000040) – cxDesired 또는 cyDesired 값을 0으로 설정되어있는 경우 커서 또는 아이콘의 시스템 메트릭 값에 의해 지정된 너비 또는 높이가 사용하고 있습니다. 이 플래그가 지정되지 않으면 cxDesired과 cyDesired가 제로로 설정되어있는 경우,이 함수는 실제 자원의 크기를 사용합니다. 자원은 여러 이미지가 포함되어있는 경우, 함수는 첫 번째 이미지의 크기를 사용한다.
LR_LOADFROMFILE(0x00000010)을 – 】 lpszName으로 지정된 파일에서로드 독립형 이미지 (아이콘, 커서, 또는 비트 맵 파일).
LR_LOADMAP3DCOLORS(0x00001000) – 이미지의 색상 표를 검색하고 해당 3-D 색상 회색 다음 색조를 바꿉니다.
DK 회색, COLOR_3DSHADOW와 RGB (128,128,128)
COLOR_3DFACE과 회색, RGB (192,192,192)
LT 회색, COLOR_3DLIGHT와 RGB (223223223)
당신은 8bpp 더 큰 색 깊이에서 비트 맵을로드하는 경우이 옵션을 사용하지 마십시오.
LR_LOADTRANSPARENT(0x00000020)을 – 이미지의 첫 번째 픽셀의 색상 값을 가져옵니다 기본 창 색 (COLOR_WINDOW)에서 색상 표에서 해당 항목을 바꿉니다. 항목은 기본 창 색상이있는 이미지의 사용중인 모든 픽셀. 이 값은 해당 색상 표를 가지고 이미지에 적용됩니다.
당신은 8bpp 더 큰 색 깊이에서 비트 맵을로드하는 경우이 옵션을 사용하지 마십시오.
fuLoad이 LR_LOADTRANSPARENT과 LR_LOADMAP3DCOLORS 값이 모두 포함되어있는 경우 LR_LOADTRANSPARENT이 우선됩니다. 그러나 색상 표 항목이없고, COLOR_WINDOW보다 COLOR_3DFACE로 바뀝니다.
0x00000001으로 LR_MONOCHROME 로드, 흑백의 이미지.
LR_SHARED(0x00008000)을 – 이미지가 여러 번로드 된 경우 이미지가 취급하는 주식. LR_SHARED가 설정되어 있지 않은 경우, 동일 자원의 LoadImage의 두 번째 호출에서는 다시 이미지를로드하고 다른 핸들을 반환합니다.
그것이 불필요하게 된 때이 플래그를 사용하면 시스템 자원을 파괴합니다.
로드 후 변경 될 수 있습니다 또는 파일에서로드되는 비표준 크기의 가지고있는 이미지에 LR_SHARED 사용하지 마십시오.
시스템 아이콘 또는 커서를로드 할 때 LR_SHARED 사용해야합니다 또는 함수는 자원의로드에 실패합니다.
이 함수는 크기에 관계없이 요청 된 요청 된 자원 이름을 지정하여 캐시의 첫 번째 이미지를 검색합니다.
LR_VGACOLOR(0x00000080) – 진정한 VGA 색상을 사용하고 있습니다.

MSDN 원문 링크
https://msdn.microsoft.com/en-us/library/ms648045(v=vs.85).aspx