MFC LoadImage用法案例详解

函数原型

HANDLE LoadImage(
    HINSTANCE hinst,     // 若加载程序外部资源传NULL,否则一般传AfxGetInstanceHandle()
    LPCTSTR lpszName,    // 图片名称或全路径
    UINT uType,          // 图片类型:IMAGE_BITMAP或IMAGE_ICON或IMAGE_CURSOR
    int cxDesired,
    int cyDesired,
    UINT fuLoad          // 一般为LR_DEFAULTCOLOR | LR_CREATEDIBSECTION
);

cxDesired, cyDesired:

按Image的实际尺寸加载:cxDesired=0,cyDesired=0并且fuLoad不指定LR_DEFAULTSIZE。
按指定大小加载: cxDesired,cyDesired不为0并且fuLoad不指定LR_DEFAULTSIZE,Image会根据实际大小缩放。
按Windows系统默认的Icon或Cursor大小(一般为32x32)加载Icon或Cursor:cxDesired=0,cyDesired=0, fuLoad指定LR_DEFAULTSIZE,Image会根据实际大小缩放。
注意: LR_DEFAULTSIZE只对Icon和Cursor起作用,对Bitmap不起作用。

fuLoad:

若从独立于程序的Image文件(.bmp,.ico)加载,请指定标志LR_LOADFROMFILE。

示例

1.加载Icon资源

按Windows系统默认的Icon大小加载

HICON hIcon = (HICON)::LoadImage(
        AfxGetInstanceHandle(), 
        MAKEINTRESOURCE(IDI_ICON1),
        IMAGE_ICON,
        0, 0,
        LR_DEFAULTCOLOR | LR_CREATEDIBSECTION | LR_DEFAULTSIZE);

2.加载本地磁盘的Icon文件

按实际大小加载

HICON hIcon = (HICON)::LoadImage(
        AfxGetInstanceHandle(), 
        TEXT("D:\\Butterfly.ico"),
        IMAGE_ICON,
        0, 0,
        LR_DEFAULTCOLOR | LR_CREATEDIBSECTION | LR_LOADFROMFILE);

3.加载本地磁盘的Bitmap文件

按指定大小加载

HBITMAP hBitmap = (HBITMAP)::LoadImage(
        NULL, 
        TEXT("D:\\001.bmp"), 
        IMAGE_BITMAP, 
        50, 50, 
        LR_DEFAULTCOLOR | LR_CREATEDIBSECTION | LR_LOADFROMFILE);