📄 vc++动态链接库编程之mfc扩展 dll教程_龙腾教程网.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0074)http://www.longtengwang.com/Article/soft/VC/quantao/vcdll/200608/1335.html -->
<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>VC++动态链接库编程之MFC扩展 DLL教程_龙腾教程网</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="VC++动态链接库编程之MFC扩展 DLL教程" name=description>
<META content="VC++动态链接库编程之MFC扩展 DLL教程" name=keywords>
<STYLE type=text/css>A:link {
TEXT-DECORATION: none
}
A:visited {
TEXT-DECORATION: none
}
A:hover {
TEXT-DECORATION: none
}
A:active {
TEXT-DECORATION: none
}
.STYLE1 {
FONT-WEIGHT: bold; COLOR: #ff0000
}
</STYLE>
<STYLE type=text/css>#a1 {
BORDER-RIGHT: #999999 1px solid; BORDER-TOP: #999999 1px solid; MARGIN: 0px auto; BORDER-LEFT: #999999 1px solid; WIDTH: 1000px; LINE-HEIGHT: 25px; BORDER-BOTTOM: #999999 1px solid; HEIGHT: 25px; BACKGROUND-COLOR: #66ccff; TEXT-ALIGN: center
}
#a2 {
BORDER-RIGHT: #999999 1px solid; MARGIN: 4px auto 0px; BORDER-LEFT: #999999 1px solid; WIDTH: 1000px; HEIGHT: 80px
}
#a3 {
BORDER-RIGHT: #999999 1px solid; BORDER-TOP: #999999 1px solid; MARGIN-TOP: 4px; BORDER-LEFT: #999999 1px solid; WIDTH: 1000px; BORDER-BOTTOM: #999999 1px solid; HEIGHT: 25px; BACKGROUND-COLOR: #66ccff
}
#nav {
BORDER-RIGHT: #6699ff 1px solid; BORDER-TOP: #6699ff 1px solid; MARGIN: 4px auto 0px; BORDER-LEFT: #6699ff 1px solid; WIDTH: 1000px; LINE-HEIGHT: 22px; BORDER-BOTTOM: #6699ff 1px solid; HEIGHT: 22px
}
#Layer1 {
BORDER-RIGHT: #3366cc 1px solid; BORDER-TOP: #3366cc 1px solid; MARGIN: 4px auto 0px; BORDER-LEFT: #3366cc 1px solid; WIDTH: 1000px; BORDER-BOTTOM: #3366cc 1px solid
}
#left {
BORDER-RIGHT: #999999 1px dotted; FLOAT: left; WIDTH: 749px; HEIGHT: 115px
}
#right {
FLOAT: left; WIDTH: 250px; HEIGHT: 115px
}
#title {
WIDTH: 749px; LINE-HEIGHT: 40px; HEIGHT: 40px; BACKGROUND-COLOR: #3399cc; TEXT-ALIGN: center
}
#ArticleInfo {
WIDTH: 749px; LINE-HEIGHT: 25px; HEIGHT: 25px; TEXT-ALIGN: center
}
#ArticleContent {
WIDTH: 749px
}
#Layer3 {
WIDTH: 749px; LINE-HEIGHT: 22px; HEIGHT: 22px; BACKGROUND-COLOR: #66ccff
}
#list {
WIDTH: 749px; LINE-HEIGHT: 40px; HEIGHT: 40px
}
#CorrelativeArticle {
WIDTH: 749px
}
#c1 {
FLOAT: left; WIDTH: 250px; LINE-HEIGHT: 25px; HEIGHT: 25px; BACKGROUND-COLOR: #66ccff; TEXT-ALIGN: center
}
#c2 {
FLOAT: left; WIDTH: 250px
}
BODY {
FONT-SIZE: 12px
}
TD {
FONT-SIZE: 12px
}
TH {
FONT-SIZE: 12px
}
BODY {
BACKGROUND-COLOR: #ffffff
}
#foot {
BORDER-RIGHT: #999999 1px solid; BORDER-TOP: #999999 1px solid; FLOAT: left; MARGIN: 0px auto; BORDER-LEFT: #999999 1px solid; WIDTH: 1000px; BORDER-BOTTOM: #999999 1px solid
}
#a2-1 {
BORDER-RIGHT: #999999 1px dotted; FLOAT: left; WIDTH: 200px; LINE-HEIGHT: 80px
}
#a2-2 {
BORDER-RIGHT: #999999 1px dotted; FLOAT: left; WIDTH: 598px; LINE-HEIGHT: 80px
}
#a2-3 {
FLOAT: left; WIDTH: 200px; LINE-HEIGHT: 80px
}
#Layer2 {
FLOAT: right; WIDTH: 250px; HEIGHT: 250px
}
</STYLE>
<SCRIPT language=JavaScript>
<!--
//改变图片大小
function resizepic(thispic)
{
if(thispic.width>700) thispic.width=700;
}
//无级缩放图片大小
function bbimg(o)
{
var zoom=parseInt(o.style.zoom, 10)||100;
zoom+=event.wheelDelta/12;
if (zoom>0) o.style.zoom=zoom+'%';
return false;
}
-->
</SCRIPT>
<META content="MSHTML 6.00.2900.3199" name=GENERATOR></HEAD>
<BODY>
<DIV id=a1> | <A class=Channel
href="http://www.longtengwang.com/Index.htm">网站首页</A> | <A
class=Channel2 title="" href="http://www.longtengwang.com/Article/Index.html"
target=_blank>文章中心</A> | <A class=Channel title=电子书下载
href="http://www.longtengwang.com/Soft/Index.html"
target=_blank>电子书下载</A> | <A class=Channel title=矢量图库
href="http://www.longtengwang.com/pic/Index.html"
target=_blank>矢量图库</A> | <A class=Channel title=""
href="http://www.longtengwang.com/vod/Index.html"
target=_blank>视频教程</A> | <A class=Channel title=素材下载
href="http://www.longtengwang.com/sucai/Index.html"
target=_blank>素材下载</A> | <A class=Channel title=程序代码下载
href="http://www.longtengwang.com/softcode/Index.html"
target=_blank>程序代码下载</A> | <A class=Channel title=JS代码
href="http://www.longtengwang.com/JScode/Index.html"
target=_blank>JS代码</A> | <A class=Channel title=""
href="http://bbs.3671041.com/" target=_blank>论坛</A> | </DIV>
<DIV id=a2>
<DIV id=a2-1><IMG height=60 alt=""
src="VC++动态链接库编程之MFC扩展 DLL教程_龙腾教程网.files/logo.gif" width=180></DIV>
<DIV id=a2-2>
<SCRIPT language=javascript
src="VC++动态链接库编程之MFC扩展 DLL教程_龙腾教程网.files/10.js"></SCRIPT>
</DIV>
<DIV id=a2-3></SCRIPT></DIV></DIV>
<DIV id=a3>
<TABLE cellSpacing=0 cellPadding=0 width=1000 border=0>
<TBODY>
<TR>
<TD width=100>
<DIV align=center><SPAN class=STYLE1>常用软件类:</SPAN></DIV></TD>
<TD width=100>|<A title=杀毒安全
href="http://www.longtengwang.com/Article/shadu/Index.html"
target=_blank><STRONG>杀毒安全</STRONG></A> </TD>
<TD width=100>|<A title=联络聊天
href="http://www.longtengwang.com/Article/lianluo/Index.html"
target=_blank><STRONG>联络聊天</STRONG></A> </TD>
<TD width=100>|<A title="网络软件 使用教程 "
href="http://www.longtengwang.com/Article/wangluo/Index.html"
target=_blank><STRONG>网络软件</STRONG></A> </TD>
<TD width=100>|<A title=多媒体类
href="http://www.longtengwang.com/Article/duomeit/Index.html"
target=_blank><STRONG>多媒体类</STRONG></A> </TD>
<TD width=100>|<A title=系统工具
href="http://www.longtengwang.com/Article/softsys/Index.html"
target=_blank><STRONG>系统工具</STRONG></A> </TD>
<TD width=100>|<A title=图形图像
href="http://www.longtengwang.com/Article/tuxing/Index.html"
target=_blank><STRONG>图形图像</STRONG></A> </TD>
<TD width=100>|<A title=系统工具
href="http://www.longtengwang.com/Article/softsys/Index.html"
target=_blank><STRONG>系统工具</STRONG></A> </TD>
<TD width=100>|<A title=应用软件
href="http://www.longtengwang.com/Article/yyongsoft/Index.html"
target=_blank><STRONG>应用软件</STRONG></A></TD>
<TD width=100 height=22>|<A
href="http://www.longtengwang.com/Article/hangyesoft/Index.html"
target=_blank><STRONG>行业软件</STRONG></A></TD></TR>
<TR>
<TD height=22>
<DIV class=STYLE1 align=center>开发设计类:</DIV></TD>
<TD>|<A title=动画制作
href="http://www.longtengwang.com/Article/donghua/Index.html"
target=_blank><STRONG>动画制作</STRONG></A></TD>
<TD>|<A title="图像处理 "
href="http://www.longtengwang.com/Article/tuxiangchuli/Index.html"
target=_blank><STRONG>图像处理</STRONG></A> </TD>
<TD>|<A title=3D多媒体
href="http://www.longtengwang.com/Article/ddzhizuo/Index.html"
target=_blank><STRONG>3D设计</STRONG></A></TD>
<TD>|<A title=操作系统
href="http://www.longtengwang.com/Article/SOS/Index.html"
target=_blank><STRONG>操作系统</STRONG></A></TD>
<TD>|<A title=站长学院
href="http://www.longtengwang.com/Article/zhanzhang/Index.html"
target=_blank><STRONG>站长学院</STRONG></A> </TD>
<TD>|<A title=网络相关
href="http://www.longtengwang.com/Article/lan/Index.html"
target=_blank><STRONG>网络相关</STRONG></A> </TD>
<TD>|<A title="网络编程教程 网站制作"
href="http://www.longtengwang.com/Article/wlbc/Index.html"
target=_blank><STRONG>WEB设计</STRONG></A></TD>
<TD>|<A title=数据库教程
href="http://www.longtengwang.com/Article/shujuku/Index.html"
target=_blank><STRONG>数据库类</STRONG></A> </TD>
<TD>|<A title=应用程序设计
href="http://www.longtengwang.com/Article/soft/Index.html"
target=_blank><STRONG>程序开发</STRONG></A></TD></TR></TBODY></TABLE></DIV>
<DIV id=nav>您当前位置:您现在的位置: <A class=LinkPath
href="http://longtengwang.com/">龙腾软件教程网</A> >> <A class=LinkPath
href="http://www.longtengwang.com/Article/Index.html">文章中心</A> >> <A
class=LinkPath
href="http://www.longtengwang.com/Article/soft/Index.html">应用程序</A> >> <A
class=LinkPath
href="http://www.longtengwang.com/Article/soft/VC/Index.html">VC教程</A> >> <A
class=LinkPath
href="http://www.longtengwang.com/Article/soft/VC/quantao/Index.html">完整全套教程</A> >> <A
class=LinkPath
href="http://www.longtengwang.com/Article/soft/VC/quantao/vcdll/Index.html">深入浅出Visual
C++动态链接库</A> >> 文章正文</DIV>
<DIV id=Layer1>
<DIV id=left>
<DIV id=title><B>VC++动态链接库编程之MFC扩展 DLL教程</B></DIV>
<DIV id=ArticleInfo>作者:未知 文章来源:<A
href="http://www.longtengwang.com/ShowCopyFrom.asp?ChannelID=1&SourceName=网络">网络</A> 点击数:
<SCRIPT language=javascript
src="VC++动态链接库编程之MFC扩展 DLL教程_龙腾教程网.files/GetHits.htm"></SCRIPT>
更新时间:2006-8-29</DIV>
<DIV id=ArticleContent>
<DIV id=Layer2>
<SCRIPT language=javascript
src="VC++动态链接库编程之MFC扩展 DLL教程_龙腾教程网.files/12.js"></SCRIPT>
</DIV> 前文我们对非MFC DLL和MFC规则DLL进行了介绍,现在开始详细分析DLL的最后一种类型――MFC扩展DLL。
<BR><BR> <B>6.1概论</B><BR><BR> MFC扩展DLL与MFC规则DLL的相同点在于在两种DLL的内部都可以使用MFC类库,其不同点在于MFC扩展DLL与应用程序的接口可以是MFC的。MFC扩展DLL的含义在于它是MFC的扩展,其主要功能是实现从现有MFC库类中派生出可重用的类。MFC扩展DLL使用MFC
动态链接库版本,因此只有用共享MFC 版本生成的MFC
可执行文件(应用程序或规则DLL)才能使用MFC扩展DLL从前文可知,MFC规则DLL被MFC向导自动添加了一个CWinApp的对象,而MFC扩展DLL则不包含该对象,它只是被自动添加了DllMain
函数。对于MFC扩展DLL,开发人员必须在DLL的DllMain函数中添加初始化和结束代码。<BR><BR> 从下表我们可以看出三种DLL对DllMain入口函数的不同处理方式:<BR><BR>
<TABLE cellSpacing=0 cellPadding=2 width="90%" align=center border=1>
<TBODY>
<TR>
<TD>DLL类型</TD>
<TD>入口函数</TD></TR>
<TR>
<TD>非 MFC DLL</TD>
<TD>编程者提供DllMain函数</TD></TR>
<TR>
<TD>MFC规则 DLL</TD>
<TD>CWinApp对象的InitInstance 和 ExitInstance</TD></TR>
<TR>
<TD>MFC扩展 DLL</TD>
<TD>MFC DLL向导生成DllMain
函数</TD></TR></TBODY></TABLE><BR> 对于MFC扩展DLL,系统会自动在工程中添加如下表所示的宏,这些宏为DLL和应用程序的编写提供了方便。像<U><FONT
color=#0000ff>AFX</FONT></U>_EXT_CLASS、AFX_EXT_API、AFX_EXT_DATA这样的宏,在DLL和应用程序中将具有不同的定义,这取决于_AFXEXT宏是否被定义。这使得在DLL和应用程序中,使用统一的一个宏就可以表示出输出和输入的不同意思。在DLL中,表示输出(因为_AFXEXT被定义,通常是在<U><FONT
color=#0000ff>编译器</FONT></U>的标识参数中指定/D_AFXEXT);在应用程序中,则表示输入(_AFXEXT没有定义)。<BR><BR>
<TABLE cellSpacing=0 cellPadding=2 width="90%" align=center border=1>
<TBODY>
<TR>
<TD>宏</TD>
<TD>定义</TD></TR>
<TR>
<TD>AFX_CLASS_IMPORT</TD>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -