我原来的位图资源是在程序中的,后来因为资源太占内存,就把它剥离出来,生成一个dll,
原来的代码:
CBitmapButton m_btn;
m_btn.SetButtonStyle(BS_OWNERDRAW);
m_btn.LoadBitmaps(IDB_BITMAP1,NULL,IDB_BITMAP2);现在是通过导入dll后
#define IDB_BITMAP1 101
#define IDB_BITMAP2 102
HINSTANCE m_hDll = LoadLibrary("ResDll.dll");
HBITMAP bmp1 = LoadBitmap(m_hDll,MAKEINTRESOURCE(IDB_BITMAP1));
HBITMAP bmp2 = LoadBitmap(m_hDll,MAKEINTRESOURCE(IDB_BITMAP2));
我可以使用他们的位图,但我不知道怎么使用它们的ID
原来的代码:
CBitmapButton m_btn;
m_btn.SetButtonStyle(BS_OWNERDRAW);
m_btn.LoadBitmaps(IDB_BITMAP1,NULL,IDB_BITMAP2);现在是通过导入dll后
#define IDB_BITMAP1 101
#define IDB_BITMAP2 102
HINSTANCE m_hDll = LoadLibrary("ResDll.dll");
HBITMAP bmp1 = LoadBitmap(m_hDll,MAKEINTRESOURCE(IDB_BITMAP1));
HBITMAP bmp2 = LoadBitmap(m_hDll,MAKEINTRESOURCE(IDB_BITMAP2));
我可以使用他们的位图,但我不知道怎么使用它们的ID
而是由调用程序来规定,你可以提供一个 resource.h,在做 DLL 时,使用你这个 resource.h 就行了另外一种方法就是,由 DLL 提供一个函数进行 ID 转换
同样 ID 还是由调用来定,不过真正的 ID 可以由 DLL 决定,调用函数进行转换时,其实就是由这个函数来进行映射:
// callid.h
IDB_HELLO 100
IDB_HELLO2 102// dllid.h
IDB_SOHAPPY 200
IDB_SOSO 500// dll.cpp
LPCTSTR MAKEDLLINTRESOURCE(UINT id)
{
switch(id)
{
case IDB_HELLO:
return MAKEINTRESOURCE(IDB_SOHAPPY);
case IDB_HELLO2:
return MAKEINTRESOURCE(IDB_SOSO);
}
return NULL;
}不过第一种方法比较简单:)