LoadImage()的使用

Windows SDK 专栏收录该内容
23 篇文章 0 订阅

系统中的定义是:

WINUSERAPI
HANDLE
WINAPI
LoadImageA(
    HINSTANCE,
    LPCSTR,
    UINT,
    int,
    int,
    UINT);
WINUSERAPI
HANDLE
WINAPI
LoadImageW(
    HINSTANCE,
    LPCWSTR,
    UINT,
    int,
    int,
    UINT);
#ifdef UNICODE
#define LoadImage  LoadImageW
#else
#define LoadImage  LoadImageA
#endif // !UNICODE

 参数分别表示:

    HINSTANCE---------包含所需要图片的实例的句柄。
    LPCSTR--------------图片所在路径及文件名。
    UINT-------------------图片类型。
    int-----------------------图片宽度。
    int-----------------------图片高度。
    UINT-------------------load flags(备注:到现在还没有搞懂)

例子:

HBITMAP hbitmap;
hbitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),"图片/aa.bmp",IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);

 

应用别人的文章,文章是介绍该API函数在VB中的使用,VC中也可以借鉴:

【函数】
 LoadImage

【操作系统】
 Win9x:Y
 WinNT:Y

【声明】
 Function ulong LoadImage(ulong hInst,ref string lpsz,ulong un1,ulong n1,ulong n2,ulong un2) LIBRARY "user32.dll" ALIAS FOR "LoadImageA"

【说明】
 
  载入一个位图、图标或指针
    函数功能:该函数装载目标,光标,或位图。

    函数原型:HANDLE LoadImage(NINSTANCE hinst,LPCTSTR lpszName,UINT uType,int cxDesired,int CyDesired,UINT fuLoad);

    参数:

    hinst:处理包含被装载图像模块的特例。若要装载OEM图像,则设此参数值为O。

    lpszName:处理图像装载。如果参数hinst为非空,而且参数fuLoad不包括LR_LOADFROMFILE的值时,那么参数lpszName是一个指向保留在hinst模块中装载的图像资源名称,并以NULL为结束符的字符串。

    如果参数hinst为空,并且LR_LOADFROMFILE被指定,那么这个参数低位字一定是被装载的OEM图像标识的。OEM图像标识符是在WINUSER.H头文件中定义的,下面列举出前缀的含义:

    OBM_ OEM:位图;OIC_OEM图标;OCR_OEM:光标。

    如果参数fuLoad包含LR_LOADFROMFILE值,那么参数lpszName是包含有图像的文件名。

    uType:指定被装载图像类型。此参数可以为下列值,其含义如下:

    IMAGE_BITMAP:装载位图;IMAGE_CURSOR:装载光标;IMAGE_ICON:装载图标。

    cxDesired:指定图标或光标的宽度,以像素为单位。如果此参数为零并且参数fuLoad值为LR_DEFAULTSIZE,那么函数使用SM_CXICON或SM_CXCURSOR系统公制值设定宽度;如果此参数为零并且值LR_DEFAULTSIZE没有被使用,那么函数使用目前的资源宽度。

    cyDesired:指定图标或光标的高度,以像素为单位。如果此参数为零并且参数fuLoad值为LR_DEFAULTSIZE,那么函数使用SM_CXICON或SM_CXCURSOR系统公制值设定高度;如果此参数为零并且值LR_DEFAULTSIZE没有被使用,那么函数使用目前的资源高度。

    fuLoad:根据下面复合值列表指定函数值,值含义如下:

    LR_DEFAULTCOLOR:缺省标志;它不作任何事情。它的含义是“无LR_MONOCHROME”。

    LR_CREATEDIBSECTION:当参数uType指定为IMAGE_BITMAP时,使得函数返回一个DIB部分位图,而不是一个兼容的位图。这个标志在装载一个位图,而不是映射它的颜色到显示设备时非常有用。

    LRDIFAULTSIZE:若 cxDesired或cyDesired未被设为零,使用系统指定的公制值标识光标或图标的宽和高。如果这个参数不被设置且cxDesired或cyDesired被设为零,函数使用实际资源尺寸。如果资源包含多个图像,则使用第一个图像的大小。

    LR_LOADFROMFILE:根据参数lpszName的值装载图像。若标记未被给定,lpszName的值为资源名称。

    LW_LOADMAP3DCOLORS:查找图像的颜色表并且按下面相应的3D颜色表的灰度进行替换。

    颜色替代:Dk Gray RGB(128,128,128)COLOR_3DSHADOW;Gray RGB(192,192,192)COLOR_3DFACELt Gray RGB(223,223,223) COLOR_3DLIGHT LR_LOADTRANSPARENT;找到图像中的一个像素颜色值并且根据颜色表中系统的缺省颜色值替代其相应接口的值。图像中所有使用这种接口的像素的颜色都变为系统的缺省窗体颜色。此至仅用来申请相应的颜色表。

    若fuLoad包括LR_LOADTRANSPARENT和LR_LOADMAP3DCOLORS两个值,则LRLOADTRANSPARENT优先。但是,颜色表接口由COLOR_3DFACE替代,而不是COLOR_WINDOW。

    LR_MONOCHROME:装载黑白图。

    LR_SHARED:若图像将被多次装载则共享。如果LR_SHARED未被设置,则再向同一个资源第二次调用这个图像是就会再装载以便这个图像且返回不同的句柄。

    不要对不同标准尺寸的图像使用LR_SHARED,装载后可能会有改变,或是从文件中被装载。

    Windows 95和Windows 98:函数根据缓存中被请求的资源名发现的第一个图像,不管被请求的大小。LR_VGACOLOR:使用VGA真彩色。

    返回值:如果函数运行成功,返回值是相关资源的数据的句柄。如果函数运行失败,返回值为NULL。若想获得更多的错误信息,请调用GetLastError函数。

    注意:当使用完资源后,必须通过调用函数以释放加速器表、位图、光标、图标以及菜单所占的内存资源;加速器表:DesteoyAcceleratorTable;位图:DeleteObject;光标:DestroyCursor;图标:Destroylcon;菜单:DestroyMenu

    当过程创建终止时,系统将自动删除这些资源。但是调用相关函数也可以保留内存减少过程的工作设置所占空间。

    Windows CE:对IMAGE_BITMAP来说,参数cxDesred和cyDesred p必须为零。Windows CE不支持图表跳跃或闪烁。

    参数fuLoad必须为(=LR_DEFAULTCOLOR)。

    如果的目标平台不支持鼠标光标,可以指定在参数cxDesred和cyDsired的SM_CXCURSOR和SM_CYCURSOR的值,但不能指定参数uType中IMAGE_CURSOR的值。

    如果目标平台支持鼠标光标,可以指定在参数cxDesired和cyDesred的SM_CXCURSOR和SM_CYCURSOR的值,也能指定参数uType中IMAGE_CURSOR的值。

    速查:Windows NT 3.1、Windows 95、Windows CE 1.0以上,头文件:minuser.h:库文件;user32.lib;Unicode:在Windows NT上实现为Unicode和ANSI两种版本。


【返回值】

  Long,执行成功则返回对象的一个句柄;零表示失败

【其它】
 

【参数列表】
  hInst ----------  Long,要从其中载入图象的DLL或应用程序模块或实例句柄。零表示装载一幅固有图象

  lpsz -----------  String,欲载入图象的名字。如指定了hInst,就用这个参数指定资源或资源的标志符(标志符是一个长整数)。如hInst为空,而且已指定了LR_LOADFROMFILE,那么这个参数代表文件名(位图、图标或指针文件)。如果是个Long型值,这个参数就代表固有位图、图标或指针的编号

  un1 ------------  Long,下述常数之一,指定了欲载入的图象类型:IMAGE_BITMAP,
  IMAGE_CURSOR, IMAGE_ICON

  n1,n2 ----------  Long,要求的图象宽度和高度。图象会根据情况自动伸缩。如设为零,表示用图象的默认大小

  un2 ------------  Long,下述常数的任意组合,它们都在api32.txt文件中得到了定义:
  LR_DEFAULTCOLOR
  以常规方式载入图象
  LR_LOADREALSIZE
  不对图象进行缩放处理。忽略n1和n2的设置
  LR_CREATEDIBSECTION
  如果指定了IMAGE_BITMAP,就返回DIBSection的句柄,而不是位图的句柄
  LR_DEFAULTSIZE
  如果n1和n2为零,就使用由系统定义的图象默认大小,而不是图象本身定义的大小
  LR_LOADFROMFILE
  如hInst为零,lpsz就代表要载入适当类型的一个文件的名字,仅适用于Win95
  LR_LOADMAP3DCOLORS
  将图象中的深灰、灰、以及浅灰像素都替换成COLOR_3DSHADOW,COLOR_3DFACE以及COLOR_3DLIGHT的当前设置
  LR_LOADTRANSPARENT
  与图象中第一个像素相符的所有像素都由系统替换
  LR_MONOCHROME
  将图象转换成单色
  LR_SHARED
  将图象作为一个共享资源载入。在NT 4.0中装载固有资源时要用到这个设置

  • 0
    点赞
  • 1
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值