在DLL中使用对话框
在 DLL 中使用对话框资源与在 EXE 中使用是有所区别的,处理不当便会造成断言失败。原因是因为 CDialog::Create 与 CreateEx 默认使用当前进程中的资源(Dialog Template)来创建对话框。 但实际上Dialog Template 资源是在DLL模块中, 因此 CDialog::Create 或 CreateEx 便会失败。但如果碰巧 EXE 中也有同名的资源的话,那便有可能不会失败,但引起的其它问题会更加让你摸不着头脑……
解决这个问题也很简单,比如我们在一个MFC 扩展DLL 中有一个类, 它继承自 CDialog (或 CDialogEx), 我们将它封装到另一个非 MFC 类中, 在这个非MFC类中调用它的DoModal方法。
// 这是一个MFC类。
class CInnerDialog : public CDialog
{
...
};
// 这是一个非MFC类,它也是导出的类。
class _declspec ( dllexport ) CExportDialog
{
public:
INT_PTR DoModal ()
{
AFX_MANAGE_STATE ( AfxGetStaticModuleState() ); // 这是解决断言失败最重要的一句。
CInnerDialog dlg;
return dlg.DoModal();
}
};
如果我们创建的不是 MFC 扩展 DLL, 而是一个WINDOWS标准DLL。 那就得使用 FindResource() 去查找资源并使用 LoadResource() 加载资源。 最后使用加载到的资源来创建对话框……
just so so ...
以上代码未经测试!
在DLL中使用对话框的更多相关文章
- Win32 DLL和MFC DLL 中封装对话框
现在最常看见的关于DLL的问题就是如何在DLL中使用对话框,这是一个很普遍的关于如何在DLL中使用资源的问题.这里我们从Win32 DLL和MFC DLL两个方面来分析并解决这个问题. ...
- 在Dll中创建对话框并调用
1.第一步创建一“MFC AppWizard (dll)”工程,接下来选择“Regular Dll using shared MFC DLL”,点击“Finish”. 2.添加一对话框资源到工程中,从 ...
- MFC的dll中控制资源问题
有程序EXE和DLL,其中DLL中有1个函数用来显示对话框,被EXE调用.当EXE和DLL都为Release或Debug时,没有任何问题,但EXE为Release.DLL为Debug时,就会出错.该D ...
- 实现MFC扩展DLL中导出类和对话框
如果要编写模块化的软件,就要对对动态链接库(DLL)有一定的了解,本人这段时间在修改以前的软件时,决定把重复用的类和对话框做到DLL中,下面就从一个简单的例子讲起,如何实现MFC扩展DLL中导出类和对 ...
- Qt调用dll中的功能函数
声明: 事先我已经自己动手写了一个简单的dll文件(myDLL.dll),C版接口的.并且用我前两篇有关DLL文章里面的方法,从dll中导出了导入库(.lib)文件,dll中有两个函数,原型如下: ...
- 在VS2012中采用C++中调用DLL中的函数 (4)
这两天因为需要用到VS2012来生成一个DLL代码,但是之前并没有用过DLL相关的内容,从昨天开始尝试调试DLL的文件调用,起初笔者在网络上找到了3片采用VSXXX版本进行调试的例子,相关的内容见本人 ...
- WIN32 DLL中使用MFC
最近用WIN32 DLL,为了方便要用到MFC的一些库,又不想转工程,就网上找了很多方法,发现没有详细的介绍,有的也行不通,现在成功在WIN32 DLL中使用了MFC,记录一下以防以后用到忘记 一.修 ...
- 在WIN32 DLL中使用MFC
最近用WIN32 DLL,为了方便要用到MFC的一些库,又不想转工程,就网上找了很多方法,发现没有详细的介绍,有的也行不通,现在成功在WIN32 DLL中使用了MFC,记录一下以防以后用到忘记 一.修 ...
- Native Application 开发详解(直接在程序中调用 ntdll.dll 中的 Native API,有内存小、速度快、安全、API丰富等8大优点)
文章目录: 1. 引子: 2. Native Application Demo 展示: 3. Native Application 简介: 4. Native Ap ...
随机推荐
- 谷歌Colab使用(深度学习)
1. Coalb简介 Google Colaboratory是谷歌开放的一款研究工具,主要用于机器学习的开发和研究.这款工具现在可以免费使用,但是不是永久免费暂时还不确定.Google Colab最大 ...
- 开发IDE的一些设置
一.修改和设置idea或eclipse的快捷键: 二.idea的settings的一些设置: settings 可以导出,也可以导入.也可以设置每次新建和新打开一个工程用同一个setting 三.全局 ...
- DP中环形处理 +(POJ 1179 题解)
DP中环形处理 对于DP中存在环的情况,大致有两种处理的方法: 对于很多的区间DP来说,很常见的方法就是把原来的环从任意两点断开(注意并不是直接删掉这条边),在复制一条一模一样的链在这条链的后方,当做 ...
- webbug3.0菜鸟笔记1
渗透学习笔记--基础篇--sql注入(字符型)http://bbs.51cto.com/viewthread.php?tid=1148930 渗透学习笔记--基础篇--sql注入(数字型)http:/ ...
- 重新认识C++的"cin >>"、"cout <<" 简简单单 - 快快乐乐
重新认识C++的"cin >>"."cout <<" 简简单单 - 快快乐乐 JERRY_Z. ~ 2020 / 11 / 24 转载请 ...
- 你也想当流量UP主?那就点开看看吧!
2009年6月份,哔哩哔哩(B站)在一众期待中诞生,它汇聚了天南海北当时小众的二次元同好,它也存在诸多不足,大家亲切地叫它"小破站". 而如今,它成长为一棵枝繁叶茂的参天大树,成为 ...
- Folx中与下载相关的参数如何设置
Folx是一款简单易用,功能强大的MacOS专用下载管理工具.要使Folx下载/上传速度快,同时又不影响其他软件的上网使用,还能够有计划地安排下载,那么就必须对Folx进行参数设置.接下来小编详细讲解 ...
- Nebula Flink Connector 的原理和实践
摘要:本文所介绍 Nebula Graph 连接器 Nebula Flink Connector,采用类似 Flink 提供的 Flink Connector 形式,支持 Flink 读写分布式图数据 ...
- 第8.21节 Python中__lt__、__gt__等 “富比较”(“rich comparison”)方法用途探究
一. 富比较方法 Python的基类object提供一系列可以用于实现同类对象进行"比较"的方法,可以用于同类对象的不同实例进行比较.他们也是实例方法,定义如下: object.l ...
- 第8.31节 Python中使用__delattr__清除属性数据
一. 引言 在前面几节我们介绍了__ getattribute__方法和__setattr__方法,分别实现了实例属性的查询和修改(含定义即新增),作为Python中数据操作必不可少的三剑客get.s ...