我在DLL中画了一个位图,想在应用程序中使用它,采用的方法是在DLL中写一个接口函数,该函数返回DLL的资源句柄。在应用程序中得到这个资源句柄后,将其设置为当前资源句柄。
HINSTANCE h_Ins=LoadLibrary("dllbmp.dll");
typedef HINSTANCE (*MYPROC)();
MYPROC exec=(MYPROC)GetProcAddress(h_Ins,"ShowMe");
HINSTANCE h_new;
h_new=exec();
if(!h_new)
{
MessageBox("¼ÓÔØ´íÎó!");
}
::AfxSetResourceHandle(h_new);
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
但是编译时,VC提示IDB_BITMAP1没有声明(IDB_BITMAP1是DLL中定义资源的ID号)。是什么原因啊?各位师兄。
用FindResource也是这样,始终说资源的ID号是没有定义的。
还有什么别的方法让应用程序使用DLL中的资源啊?最好能给段代码,谢谢了。

解决方案 »

  1.   

    我想 应该在 DLL 的函数中将资源 调入内存。
      

  2.   

    我刚才试过了,可以在DLL函数中把资源句柄返回给应用程序使用,但是为什么在Regular DLL with MFC staticlly linked 中定义的资源不能成功返回,而在Regular DLL using shared MFC DLL中定义的资源句柄才能成功返回呢?
    哪位师兄遇到过这种现象?拜托解释一下。
      

  3.   

    IDB_BITMAP1 应为你在Dll中的ID号,请看Resource.h定义
      

  4.   

    要包含你的资源工程中的resource.h