怎么调用资源dll文件

xulingjia3 2008-05-08 04:46:26
我建了一个纯资源dll文件"OneTest.dll" (MFC appWizard[DLL])
里面有bmp文件和string


然后在MFC应用程序中调用,代码如下:

BOOL COneTestEXEApp::InitInstance()
{

m_hInstance = AfxGetResourceHandle();
m_hResourseHandle = LoadLibrary("OneTest.dll");

if (m_hResourseHandle)
{
AfxSetResourceHandle(m_hResourseHandle);
}
else
{
AfxMessageBox("Load library error!");
PostQuitMessage(1);
return TRUE;
}

AfxEnableControlContainer();

COneTestEXEDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{

}
else if (nResponse == IDCANCEL)
{
}


但是执行int nResponse = dlg.DoModal();时对话框出不来
调试进入CDialog::DoModal方法发现

int CDialog::DoModal()
{
// can be constructed with a resource template or InitModalIndirect
ASSERT(m_lpszTemplateName != NULL || m_hDialogTemplate != NULL ||
m_lpDialogTemplate != NULL);

// load resource as necessary
LPCDLGTEMPLATE lpDialogTemplate = m_lpDialogTemplate;
HGLOBAL hDialogTemplate = m_hDialogTemplate;
HINSTANCE hInst = AfxGetResourceHandle();
if (m_lpszTemplateName != NULL)
{
hInst = AfxFindResourceHandle(m_lpszTemplateName, RT_DIALOG);
HRSRC hResource = ::FindResource(hInst, m_lpszTemplateName, RT_DIALOG);
hDialogTemplate = LoadResource(hInst, hResource);
}
if (hDialogTemplate != NULL)
lpDialogTemplate = (LPCDLGTEMPLATE)LockResource(hDialogTemplate);

// return -1 in case of failure to load the dialog template resource
if (lpDialogTemplate == NULL)
return -1;





HRSRC hResource = ::FindResource(hInst, m_lpszTemplateName, RT_DIALOG);
返回值为空导致程序退出,请教各位这是怎么回事啊.
是我dll文件有问题吗?应该怎样解决.
...全文
155 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xulingjia3 2008-05-13
  • 打赏
  • 举报
回复
自己解决了
我把资源dll文件的resource.h等资源文件都去掉,后import应用程序的资源文件,再添加位图等资源,再次编译后就可以了
,不解中.
飞天舞 2008-05-12
  • 打赏
  • 举报
回复
OneTest.dll路径是否正确!!
飞天舞 2008-05-10
  • 打赏
  • 举报
回复
帮顶!
长尾巴的悟空 2008-05-09
  • 打赏
  • 举报
回复
飘过..
my_girlf 2008-05-09
  • 打赏
  • 举报
回复
调试时跟进DLL的FindResource函数

15,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧