在DLL中显示非模式对话框出现的问题

kimbei 2006-05-01 08:42:47
我在DLL中声明函数
extern "C" __declspec(dllexport) BOOL WINAPI Enter(const CString& str, USHORT n)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
gDlg->Create(IDD_DLG);
gDlg->ShowWindow(SW_SHOW);
return TRUE;
}
其中, gDlg 为全局CDialog变量

在EXE的引用:
在 CApp::InitInstance() 中
CString str;
Enter(str, 10);
return FALSE;

程序运行后,显示"应用程序发生异常 unknown software exception(0x80000003), 位置为 0x77f813b1."

我的目的是, 在DLL中显示一个非模式的对话框, 然后在外面调用,
如果把以下代码:
CString str;
Enter(str, 10);
return FALSE;
加在对话框的按钮事件中,才不会出错.

请问如何解决?????????
...全文
161 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zdjnju 2006-05-09
  • 打赏
  • 举报
回复
把那段代码放到主窗口的初始化函数中
狂放之歌 2006-05-07
  • 打赏
  • 举报
回复
InitInstance 时可能 PE loader 还没有完全 加载 相应的 dll文件
所以你实际上是调用了一个 ,不正确的函数地址~可能是空(但也有可能是别的)
kimbei 2006-05-06
  • 打赏
  • 举报
回复
从主程序中传入窗口句饼;
CMyDlg gDlg(CWnd::FromHandle(hMainWnd));

对不起,,没看懂你的意思。。。

你的意思是把 “gDlg” 作为 “DLL里面的窗体”的主窗体????
syy64 2006-05-06
  • 打赏
  • 举报
回复
从主程序中传入窗口句饼;
CMyDlg gDlg(CWnd::FromHandle(hMainWnd));
kimbei 2006-05-04
  • 打赏
  • 举报
回复
调试不了...
_Li_ 2006-05-01
  • 打赏
  • 举报
回复
在DEBUG模式下调试一下吧,这样看很难找的

15,471

社区成员

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

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