我原来的位图资源是在程序中的,后来因为资源太占内存,就把它剥离出来,生成一个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

解决方案 »

  1.   

    ID 不是由 DLL 来定
    而是由调用程序来规定,你可以提供一个 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;
    }不过第一种方法比较简单:)