首先介绍loadp_w_picpath函数:

        现在的loadp_w_picpath函数已经取代了loadbitmap函数,可能看比较老的书本上会用后者,这二个函数都比较简单,参数也不多,随便写个实例如下,这样可能懂得比较快:

   

   
   
   
   
  1. LoadImage(NULL,"bitmap1.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE); 

第一个为一个实例的句柄,

第二个为载入的文件名,

第三个为类型,它支持位图,光标等的载入,

其它几个参数基本现在不用,大家可以去看看具体的含义,

下面说下载入的过程:

用CreateCompatibleDC函数来创建个兼容的内存DC,它返回一个兼容DC句柄,

然后把资料载入内存,用loadImage,它会返回当前资源的句柄,HANDLE类型,

再然后获取资源对象的信息,用GetObject(HDC,size,BITMAP),

第一个参数为DC的句柄,肯定是用前面兼容DC创建的句柄,

第二个参数为BITMAP的大小,sizeof(BITMAP);

第三个参数为一个BITMAP的类型变量,系统会把资源信息住里面填充信息,比如资源的大小,

信息都有了之后就可以把位图选进设备描述表了,有的叫设备上下文。

使用SelectObject(HDC,HGDIOBJ);

第一个参数为往那个设备句柄载入,这里为前面CreateCompatibleDC创建的句柄。

第二个参数为载入的资源句柄,这里为loadp_w_picpath返回的句柄

最后就是显示了,

用BitBlt函数来显示你载入的图片到显示器上。

参数有点长,就不写了,下面写上全部的载入代码吧,非常的简单:

 


   
   
   
   
  1. case WM_PAINT:  
  2.     {  
  3. PAINTSTRUCT ps; 
  4.         HDC hdc = BeginPaint(hwnd,&ps);  
  5.         HDC hdcmem = CreateCompatibleDC(hdc);  
  6.         HANDLE hbitmap = LoadImage(NULL,"bitmap1.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);  
  7.         BITMAP bmap;  
  8.         GetObject(hbitmap,sizeof(BITMAP),&bmap);  
  9.         SelectObject(hdcmem,hbitmap);  
  10.         BitBlt(hdc,11,11,bmap.bmWidth,bmap.bmHeight,hdcmem,0,0,SRCCOPY); 
  11.         DeleteDC(hdcmem); 
  12.         DeleteObject(hbitmap); 
  13.         EndPaint(hwnd,&ps);  
  14.         return 0;  
  15.     }  

 

 

而用loalbitmap函数,其实也差不多的,只不要它一个instance句柄。

    OK,Over!