对话框在DLL中DoModal()返回-1?

情景:主工程调用封装的DLL,其中DLL里面有对话框,也就是说主工程调用DLL里的导出类的成员函数,成员函数再启动对话框。(直接导出(AFX_EXT_CLASS)对话框类的话会报错,具体还没研究)

DoModal()总是弹不出对话框,DoModal()返回值为-1,开始以为是资源ID等一系列的问题。MFC对话框DoMoal返回-1

检查了好几遍,又重新建对话框类,也还不行。但是主工程的对话框可以正常弹出。

后来考虑DLL导出有问题,重新建工程,终于发现工程建错了,晕!!!

MFC有三种DLL:MFC的3种DLL

之前选的第一种:MFC regular dll,后来选第三种:MFC extension dll可以正常弹出对话框了

问题是解决;但仍然不是很清楚其内部的关联,下面可以参考研究:

Regular DLL(MFC规则DLL)、MFC...Extension DLL(MFC扩展DLL 区别

AFX_MANAGE_STATE(AfxGetStaticModuleState())的作用

MFC DLL 不能正确调用的问题 + AFX_MANAGE_STATE(AfxGetStaticModuleState());

[经验总结] MFC DLL——Regular DLL and Extension DLL(

加了AFX_MANAGE_STATE(AfxGetStaticModuleState());会有断言(有可能加的方式不对)

查了一下说是没有初始化,

加了:

if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
    {
        //??_Module.LogEvent(_T("MFC初始化错误!"), EVENTLOG_ERROR_TYPE );
        return;
    }

还是弹不出对话框,没时间研究了,有空再看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值