LoadBitmap第一个参数分析

我在程序中这样用的:
HBITMAP   hBitmap;
hBitmap   =   ::LoadBitmap(NULL,MAKEINTRESOURCE(IDB_SHINE));
但是这样hBitmap始终为空,结果搜索了半天,才找到如下方式就好了,我想知道是为什么?
hBitmap   =   ::LoadBitmap(AfxGetResourceHandle(),MAKEINTRESOURCE(IDB_SHINE));

 

-------------------------------------------------------------------------------------------------------------------------

LoadBitmap必须传入资源所在的instance。
下面分MFC和SDK两种方式讨论你的问题。
        1、如果采用MFC方式,可以使用   AfxGetResourceHandle保存当前的资源文件句柄,即你说的hInst。也可以使用AfxSetResourceHandle设置资源DLL的句柄,如:
          hDll=LoadLibrary( "ResourceDLL.dll ");
          if(hDll==NULL)
          AfxMessageBox( "Can 't   Load   the   library ");
          else   AfxMessageBox( "success ");
          AfxSetResourceHandle(hDLL);
          ...
        }
        这样以后你再使用LoadBitmap时,图片将来自你的资源DLL,而不是.exe文件。如果你在程序中还要使用.exe中的资源,你需要在   AfxSetResourceHandle之前,先使用   AfxGetResourceHandle保存当前的资源文件句柄。

        2、SDK方式。在WinMain或DllMain中,第一个参数都是HINSTANCE。你也可以用LoadLibrary或者GetModuleHandle获取句柄。

 

 

--------------------------------------

可以明白第一个参数是什么了了

你可能感兴趣的:(null,mfc,dll,library)