MFC的规则DLL中资源使用的问题】的更多相关文章

今天刚刚做了一个静态链接到MFC的规则dll,即“Use MFC in a static library“,该dll用来显示一个窗体.然后在一个mfc可执行程序A.exe中调用这个dll文件,可以正常的显示窗体.但后来做了一点小小的改动,即把dll改成动态连接到MFC的dll,即“Use MFC in a shared dll ”,然后在A.exe中调用该dll,结果窗体怎么都不显示.后 共有三种方法: 1. 在dll中自动切换,在dll的显示窗体的接口函数中使用AFX_MANAGE_STATE…
一.MFC规则DLL     MFC规则DLL可以在该dll内部使用MFC,但是与应用程序的接口不能是MFC的.能够被所有支持dll的编程语言所写的应用程序使用,当然也包括使用MFC创建的应用程序.在这种动态链接库中包含一个从CWinApp中继承而来的类,DllMain函数也被隐藏在其中了.    规则DLL包含俩类——静态链接到MFC上和动态连接到MFC上.静态链接到MFC上的规则DLL与MFC静态链接,将MFC的dll代码直接生成在该.dll中,在调用该dll时,使用的是该dll的资源句柄 …
File.WriteAllBytes( @"C:\Windows\System32\MyDll.dll", Resources.MyDll );…
有程序EXE和DLL,其中DLL中有1个函数用来显示对话框,被EXE调用.当EXE和DLL都为Release或Debug时,没有任何问题,但EXE为Release.DLL为Debug时,就会出错.该DLL是用VC提供的MFC Extension DLL,函数的代码如下:HINSTANCE hInstOld = AfxGetResourceHandle(); // 该句出错HINSTANCE hInstNew = GetModuleHandle("T01Test.dll");AfxSet…
现在最常看见的关于DLL的问题就是如何在DLL中使用对话框,这是一个很普遍的关于如何在DLL中使用资源的问题.这里我们从Win32   DLL和MFC   DLL两个方面来分析并解决这个问题.           1.Win32   DLL               在Win32   DLL中使用对话框很简单,你只需要在你的DLL中添加对话框资源,而且可以在对话框上面设置你所需要的控件.然后使用DialogBox或者CreateDialog这两个函数(或相同作用的其它函数)来创建对话框,并定义…
程序开发中经常会用到一些图标.图片.光标.声音等,我们称它们为资源(Resource).当多个窗口用到同样的资源时,可以将这些公共的资源放到一个dll文件里调用,这样,由于定位资源比在磁盘中定位文件花费时间少,所以应用程序执行会更快.多种资源放在一个文件中,减少了图标.图片.光标.声音等文件数量,从而可以减小应用程序的大小.不用怕用户在使用过程中的不小心而损坏了资源文件致使程序无法正常运行.当然也可以不编为dll,而和应用程序放一起,用到时再LoadFromFile,但这样容易丢失,一旦丢失了将…
1.DLL库与LIB库对比: 静态链接库Lib(Static Link Library),是在编译的链接阶段将库函数嵌入到应用程序的内部.如果系统中运行的多个应用程序都包含所用到的公共库函数,则必然造成很大的浪费.这样即增加了链接器的负担,也增大了可执行程序的大小,还加大了内存的消耗.Lib的好处是应用程序可以独立运行,而不需要在操作系统中另外安装对应的DLL. 而DLL采用动态链接,对公用的库函数,系统只有一个拷贝(一般是位于系统目录的*.DLL文件),而且只有在应用程序真正运行阶段调用时,才…
MFCGrid control是一款非常优秀的网格控件,支持非常丰富的界面元素,如下图: 因而在数据库程序及报表程序应用较为广泛,其源码可以在下面下载到: MFC Grid control2.27源码下载 MFC Gridcontrol的作者并没有将其封装为DLL,因为在程序的多个模块复用这个控件比较麻烦(需要在多个工程中加入其源码),因此最好将其封装为一个DLL.今天有同事反映在DLL的对话框中无法使用封装好的MFC Grid control,于是上网查了下资料,晚上摸索了一下,解决了这个问题…
使用VS2008,在项目属性中有一项MFC的使用,有三种设置: 1.使用标准Windows库 2.在共享DLL中使用MFC 3.在静态库中使用MFC          第一种顾名思义.        第二种指的是打包时一些MFC的DLL的内容没有被包含在EXE文件中,所以EXE文件较小,但是运行时要求系统中要有相关的DLL文件.        第三种是将DLL中的相关代码写进EXE文件中,文件较大,但是可以在没有相关DLL的机器上运行.        同时,如果程序本来是第二种方式,发给同事,在…
最近用WIN32 DLL,为了方便要用到MFC的一些库,又不想转工程,就网上找了很多方法,发现没有详细的介绍,有的也行不通,现在成功在WIN32 DLL中使用了MFC,记录一下以防以后用到忘记 一.修改预编译头文件(stdafx.h) 在stdafx.h文件中添加下面代码,包含一些MFC的头文件,这些可以在一个MFC工程中复制过来 #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 某些 CString 构造函数将为显式的 #include <afxwin…