欢迎光临 Rick 's BLOG
日志首页  | C# .Net编程  | 原创作品  | 生活点滴  | C\C++相关  | 多媒体相关※ERMP  | VB相关  | 其它运维与编程  |  留言簿
纯资源DLL的编写 get the PIII processor serial number (psn)
多云  DLL中显示模态对话框的问题
[ 发布日期:20年前 (2005-04-03) ]   [ 来自:本站原创 ] [分类:C\C++相关]
本想在DLL中显示一个模态对话框
用DoModal函数以后,返回值是-1。
本来在VC5.0+Win98下是可以的,现在用的是VC6.0+Win2000怎么不成了?

问题出在资源句柄上面.
解决方案(I)
DWORD dwLastErr = NO_ERROR;
//AFX_MANAGE_STATE宏将在堆栈中创建一个临时对象
//在退出的时候自动删除,当前进程产生错误码也别清除
//因此我们要把下面代码放在一对扩号中,以确保在这之前可以得到错误码
//注意:不要在这对括号之外调用MFC代码
{
 AFX_MANAGE_STATE(AfxGetStaticModuleState());
 CDlg dlg;
 if (dlg.DoModal() == IDOK)
 {
  ......
 }
 dwLastErr=::GetLastError();
}
if(::GetLastError()==NO_ERROR) ::SetLastError(dwLastErr);

解决方案(II)
(II)
//指向DLL的句柄 
HMODULE hDLL;
在DllMain的时候赋值.
或者用 hDLL=GetModuleHandle("yourdll.dll") 的形式获取.

//获去指向当前资源的句柄
HINSTANCE hEXE=AfxGetResourceHandle();
AfxSetResourceHandle((HINSTANCE)hDLL);

CDlg dlg;
if (dlg.DoModal() == IDOK)
{
 ......
}
AfxSetResourceHandle(hEXE);
引用通告地址 (0):
复制引用地址https://www.rickw.cn/trackback/62
复制引用地址https://www.rickw.cn/trackback/62/GBK
[ 分类:C\C++相关  | 查看:1167 ]

暂时没有评论,快来发表一个评论吧。
发表评论
作者:   用户:[访客] 
评论:

表  情
禁止表情 | 禁止UBB | 禁止图片 | 识别链接
对不起,你没有权限上传附件!
验证:
 
PoweredBy R-Blog V1.00 © 2004-2024 WWW.RICKW.CN, Processed in second(s) , 7 queries    京ICP备17058477号-5