LoadImage()的使用

系統中的定義是:

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中裝載固有資源時要用到這個設置

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章