注册 登录
编程论坛 C++教室

请教用Dll做资源的问题

ttrr550 发布于 2010-07-27 09:40, 930 次点击
工程不依赖MFC,这个跳过
我做了个Dll的库,只放资源,就是一个Dialog(ID_Dialog)
在另一个库中CreateDialog

有关代码
HINSTANCE hMainInst = GetMoudleHandle(NULL);
HINSTANCE hDllInst = LoadLibrary("ResDll.dll");   //结果这个HINSTANCE和主程序的INST相同

HWND hWnd = CreateDialog(hMainInst ,MAKINGRESOURCE(ID_Dialog), NULL ,DlgProc);

结果GetLastError 一直是1813 就是资源找不到

兄弟们 帮帮看看! 谢谢了
3 回复
#2
ttrr5502010-07-27 09:43
另外 我看了MAKINGRESOURCE(ID_Dialog)的值也一直是个NULL

也用了GetMoudleHandle("ResDll.dll");   这个就直接返回null ,用绝对路径也是null
#3
东海一鱼2010-07-27 10:02
两点:
MAKINGRESOURCE是个宏,只是强制类型转换。它返回NULL.应该是你的ID_Dialog定义为 0?

再者,LoadLibrary成功后,你还应该LoadResource把资源加载进来。
#4
ttrr5502010-07-27 12:58
HINSTANCE hMainInst = GetMoudleHandle(NULL);
HINSTANCE hDllInst = LoadLibrary("ResDll.dll");   //结果这个HINSTANCE和主程序的INST相同
HRSRC   hRC=FindResource(hDllInst, MAKEINTRESOURCE(ID_Dialog), RT_DIALOG);
HGLOBAL hGlb=LoadResource(hDllInst,hRC);

HWND hWnd = CreateDialog(hMainInst ,MAKINGRESOURCE(ID_Dialog), NULL ,DlgProc);

GetLastError 还是1813哦, 在LoadResource之前可以用MAKEINTRESOURCE(ID_Dialog)? ID_Dialog = 101 ,不是0  ,但结果还是NULL
1