DLL导出非模态对话框一闪而过是怎么回事呢?

pigpy pigpy 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我使用shared MFC DLL导出一个对话框,当使用模态对话框时OK,可是使用非模态对话框时对话框一闪而过(使用EXE程序调用),代码如下:
extern "C" __declspec(dllexport) void ShowLoginDlg(void)
{
HINSTANCE save_Instance=AfxGetResourceHandle(); //保存当前句柄
AfxSetResourceHandle(theApp.m_hInstance);

//模态对话框方式==========这种方式调用OK
/*CLoginDlg loginDlg;
loginDlg.DoModal();
*/

//非模态对话框方式
CLoginDlg *ploginDlg=new CLoginDlg();
ploginDlg->Create(IDD_DIALOG_LOGIN);
ploginDlg->ShowWindow(SW_SHOW);

AfxSetResourceHandle(save_Instance); //恢复句柄
}

希望高手能够指点迷津~~
...全文

相关推荐

MFC扩展DLL导出对话框类

http://blog.csdn.net/wlsgzl/article/details/8502106 之前有人问有没有教程的代码,我就花时间写了个简单的。

王林森

VS2019中MFC DLL封装非模态对话框:规则DLL与扩展DLL详解

在Windows桌面开发中,DLL封装技术是实现模块化与代码复用的重要手段,其中MFC DLL的封装因涉及模块状态、资源句柄及对象生命周期管理,成为许多开发者绕不开的难点。理解规则DLL与扩展DLL的本质区别是正确封装的基础:规则DLL自带CWinApp实例,适合向任意Win32程序导出C接口函数;扩展DLL用于导出MFC类,但要求调用方同为MFC程序。基于这一原理,封装非模态对话框时必须关注AFX_MANAGE_STATE对资源状态的切换,以及通过PostNcDestroy实现自销毁来避免窗口一闪而过。这

艾格吃饱了

MFC DLL封装非模态对话框:规则DLL与扩展DLL实战

动态链接库(DLL)是Windows平台实现代码复用与模块化集成的核心机制,可用于将界面组件、业务逻辑封装为独立模块供多个应用程序共享。在MFC桌面开发中,DLL封装的重点在于模块状态切换与资源查找——规则DLL需通过AFX_MANAGE_STATE切换资源上下文,扩展DLL则依赖CDynLinkLibrary建立资源链。相比模态对话框会阻塞主流程,非模态对话框可在DLL中灵活弹出,不打断用户操作,因此更适合上位机、工具软件等需要多窗口协同的场景。以VS2019为例,详细介绍规则DLL与扩展DLL两种封装非

林杏仁

VS2019/MFC编程入门之对话框:非模态对话框的创建及显示

上一节讲了模态对话框及其弹出过程,本节接着讲另一种对话框--非模态对话框的创建及显示。 已经说过,非模态对话框显示后,程序其他窗口仍能正常运行,可以响应用户输入,还可以相互切换。将上一讲中创建的Tip模态对话框改为非模态对话框,让大家看下效果。当功能实现了想要拥有美观的界面可以借助Toolkit Pro进行界面优化。 Xtreme Toolkit Pro:是屡获殊荣的VC界面库,是MFC开发中最全面界面控件套包,它提供了Windows开发所需要的11种主流的Visual C++ MFC控件,包括Comm

不如温暖过生活

DLL输出对话框类的例子

extern "C" __declspec( dllexport ) void mydlldlg() 通过这条到处函数的语句,注意:此例子实现的是非模态对话框的到处dll

wodenide007
评论 16
收藏 已收藏
分享
返回顶部
pigpy
VC.NET 7,538 成员 27,670 内容