本想在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);
纯资源DLL的编写 | get the PIII processor serial number (psn) |
DLL中显示模态对话框的问题 | |
[ 发布日期:20年前 (2005-04-03) ] [ 来自:本站原创 ] | [分类:C\C++相关] |
[ 分类:C\C++相关
| 查看:1167 ]
暂时没有评论,快来发表一个评论吧。
发表评论 |