📄 用vc编制dll程序的方法小结.mht
字号:
class=3DSpellE><span lang=3DEN-US>dll</span></span>用来建=
立<span
class=3DSpellE><span lang=3DEN-US>mfc</span></span>的派生=
类,只被用<span
class=3DSpellE><span lang=3DEN-US>mfc</span></span>类库所=
编写的应用程序调用=
2290;常规<span
class=3DSpellE><span lang=3DEN-US>dll</span></span>(包括=
静态与动态)的一个=
9305;点是在源文件里有ߌ=
8;个继承<span
class=3DSpellE><span lang=3DEN-US>cwinapp</span></span>的类A=
288;从<span
class=3DSpellE><span lang=3DEN-US>cwinapp</span></span>派生A=
292;但没有消息循环)<span
lang=3DEN-US>,</span>被导出的函数਷=
9;<span
lang=3DEN-US>c++</span><span class=3DGramE>类或者</span><=
span
lang=3DEN-US>c++</span>成员函数,调=
992;常规<span
class=3DSpellE><span lang=3DEN-US>dll</span></span>的应用=
程序不必一定是<span
class=3DSpellE><span lang=3DEN-US>mfc</span></span>应用程=
序。扩展<span
class=3DSpellE><span lang=3DEN-US>dll</span></span>和常规=
<span
class=3DSpellE><span lang=3DEN-US>dll</span></span>不一样=
,它没有一个从<span
class=3DSpellE><span lang=3DEN-US>cwinapp</span></span>继承 =
780;来的类的对象,编译=
;器默认了一个<span
class=3DSpellE><span lang=3DEN-US>dll</span></span>入口函=
数<span
class=3DSpellE><span lang=3DEN-US>dllmain</span></span><span lang=3DEN-US>(=
)</span>作为对<span
class=3DSpellE><span lang=3DEN-US>dll</span></span>的初始=
化。<span
lang=3DEN-US><br>
<br>
</span>  以下是一个编=
046;<span
class=3DSpellE><span lang=3DEN-US>dll</span></span>的程序=
示例。为此,应先建=
1435;一个名为<span
class=3DSpellE><span lang=3DEN-US>testdll</span></span>应用=
027;程序,再创建一个<span
class=3DSpellE><span lang=3DEN-US>dll</span></span>应用,=
作为主工程的子工程=
5292;并在<span
class=3DGramE>主工程</span>中调用<span
class=3DSpellE><span lang=3DEN-US>dll</span></span>。通过=
<span
class=3DSpellE><span lang=3DEN-US>mfc</span></span><span lang=3DEN-US> <span
class=3DSpellE>appwizard</span></span>创建一个ë=
45;话框程序,在其中添=
加一个命令按钮(名=
1216;为<span
lang=3DEN-US>"</span>调用<span class=3DSpellE><span lang=
=3DEN-US>dll</span></span>程序<span
lang=3DEN-US>"</span>),其程序运&=
#34892;后的界面如图三。=
857;击按钮后就去调用<span
class=3DSpellE><span lang=3DEN-US>dll</span></span>程序。=
以下介绍该<span
class=3DSpellE><span lang=3DEN-US>dll</span></span>程序的=
编制。<span
lang=3DEN-US><br>
<br>
<!--[if gte vml 1]><v:shape id=3D"_x0000_i1029" type=3D"#_x0000_t75" alt=3D=
""
style=3D'width:416.25pt;height:262.5pt;mso-wrap-distance-left:2.25pt;
mso-wrap-distance-top:.75pt;mso-wrap-distance-right:2.25pt;
mso-wrap-distance-bottom:.75pt'>
<v:imagedata src=3D"file7187.files/image004.gif" o:href=3D"mhtml:file://C:=
\Documents%20and%20Settings\pop\桌面\用VC编制=
DLL程序的方法小结.mht!http://yesk=
y.iuni.com.cn/image20010518/109479.gif"/>
</v:shape><![endif]--><![if !vml]><img border=3D0 width=3D555 height=3D350
src=3D"file7187.files/image005.jpg" hspace=3D3 vspace=3D1
onerror=3D"this.src=3D'http://www.yesky.com/image20010518/109479.gif';"
align=3Dcenter v:shapes=3D"_x0000_i1029"><![endif]><br>
</span>图三<span lang=3DEN-US><br>
<br>
</span>  如图一和图二=
152;示,通过<span
class=3DSpellE><span lang=3DEN-US>mfc</span></span><span lang=3DEN-US> <span
class=3DSpellE>appwizard</span></span>(<span class=3DSpellE><span
lang=3DEN-US>dll</span></span>)输入<span class=3DSpellE>=
<span
lang=3DEN-US>dll</span></span>程序的名称<span
lang=3DEN-US>"<span class=3DSpellE>dll</span>"</span>后=
857;击<span
lang=3DEN-US>"finish"</span>按钮生成Ç=
68;个<span
class=3DSpellE><span lang=3DEN-US>dll</span></span>程序的=
基本结构,其中在运=
4892;到图二界面时,我ߤ=
4;可以选择第一项按钮<=
span
lang=3DEN-US>"regular <span class=3DSpellE>dll</span> with <span class=
=3DSpellE>mfc</span>
statically linked" </span>生成常规静=
577;<span
class=3DSpellE><span lang=3DEN-US>dll</span></span>,也可=
以选择第二项按钮<span
lang=3DEN-US>"regular <span class=3DSpellE>dll</span> using shared <sp=
an
class=3DSpellE>mfc</span> <span class=3DSpellE>dll</span>"</span>ī=
83;成常规动态<span
class=3DSpellE><span lang=3DEN-US>dll</span></span>,后者=
的体积远远小于前者=
2290;现在的任务是在运ඡ=
2;<span
class=3DSpellE><span lang=3DEN-US>dll</span></span>时弹出=
一个显示<span
lang=3DEN-US>"this is my <span class=3DSpellE>dll</span>"</span>&=
#23383;样的对话框,点击<span
lang=3DEN-US>"</span>确定<span lang=3DEN-US>"</span>&=
#21518;返回调用程序。为=
492;,需要在<span
class=3DSpellE><span lang=3DEN-US>dll</span></span>工程中=
插入一个对话框资源=
5288;该对话框类名为<span
class=3DSpellE><span lang=3DEN-US>cmydlg</span></span>),ß=
12;<span
class=3DSpellE><span lang=3DEN-US>dll.cpp</span></span>程序=
320;头输入以下代码:<span
lang=3DEN-US><o:p></o:p></span></span></p>
<table class=3DMsoNormalTable border=3D0 cellpadding=3D0 width=3D"100%"
style=3D'width:100.0%;mso-cellspacing:1.5pt;background:white'>
<tr style=3D'mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'>
<td style=3D'padding:.75pt .75pt .75pt .75pt'>
<p class=3DMsoNormal align=3Dleft style=3D'text-align:left;mso-pagination=
:widow-orphan'><span
lang=3DEN-US style=3D'font-size:9.0pt;font-family:SimSun;mso-bidi-font-fa=
mily:
SimSun;mso-font-kerning:0pt'>#include "<span class=3DSpellE>mydlg.h<=
/span>"<o:p></o:p></span></p>
</td>
</tr>
</table>
<p class=3DMsoNormal align=3Dleft style=3D'margin-bottom:12.0pt;text-align:=
left;
line-height:15.0pt;mso-pagination:widow-orphan;background:white'><span
lang=3DEN-US style=3D'font-size:9.0pt;font-family:SimSun;mso-bidi-font-fami=
ly:SimSun;
mso-font-kerning:0pt'><br>
</span><span style=3D'font-size:9.0pt;font-family:SimSun;mso-bidi-font-fami=
ly:
SimSun;mso-font-kerning:0pt'>  在<span class=3DSpellE><=
span
lang=3DEN-US>dll.cpp</span></span>程序最后一&=
#34892;代码<span
lang=3DEN-US>"<span class=3DSpellE>cdllapp</span> <span class=3DSpellE=
>theapp</span>;"</span>后面输入以下=
;代码:<span
lang=3DEN-US><o:p></o:p></span></span></p>
<table class=3DMsoNormalTable border=3D0 cellpadding=3D0 width=3D"100%"
style=3D'width:100.0%;mso-cellspacing:1.5pt;background:white'>
<tr style=3D'mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'>
<td style=3D'padding:.75pt .75pt .75pt .75pt'>
<p class=3DMsoNormal align=3Dleft style=3D'text-align:left;mso-pagination=
:widow-orphan'><span
lang=3DEN-US style=3D'font-size:9.0pt;font-family:SimSun;mso-bidi-font-fa=
mily:
SimSun;mso-font-kerning:0pt'>extern "c" _<span class=3DSpellE>d=
eclspec</span>(<span
class=3DSpellE>dllexport</span>) <span class=3DSpellE>int</span> <span
class=3DSpellE>mytest</span>()<br>
{<br>
</span><span style=3D'font-size:9.0pt;font-family:SimSun;mso-bidi-font-fa=
mily:
SimSun;mso-font-kerning:0pt'> <span class=3DSpellE><span lang=3DEN=
-US>afx_manage_state</span></span><span
lang=3DEN-US>(<span class=3DSpellE>afxgetstaticmodulestate</span>());<br>
</span> <span class=3DSpellE><span lang=3DEN-US>cmydlg</span></spa=
n><span
lang=3DEN-US> <span class=3DSpellE>dlg</span>;<br>
</span> <span class=3DSpellE><span lang=3DEN-US>dlg.domodal</span>=
</span><span
lang=3DEN-US>();<br>
</span> <span lang=3DEN-US>return 0;<br>
}<o:p></o:p></span></span></p>
</td>
</tr>
</table>
<p class=3DMsoNormal align=3Dleft style=3D'margin-bottom:12.0pt;text-align:=
left;
line-height:15.0pt;mso-pagination:widow-orphan;background:white'><span
lang=3DEN-US style=3D'font-size:9.0pt;font-family:SimSun;mso-bidi-font-fami=
ly:SimSun;
mso-font-kerning:0pt'><br>
</span><span style=3D'font-size:9.0pt;font-family:SimSun;mso-bidi-font-fami=
ly:
SimSun;mso-font-kerning:0pt'>  对<span class=3DSpellE><=
span
lang=3DEN-US>dll</span></span>编译后生成<span
lang=3DEN-US>dll.dll</span>程序。<span lang=3DEN-US><br>
<br>
</span>  然后,进入主=
243;序<span
class=3DSpellE><span lang=3DEN-US>testdll</span></span>,利=
992;<span
class=3DSpellE><span lang=3DEN-US>classwizard</span></span>对命=
令按钮代码段添加下=
1015;代码:<span
lang=3DEN-US><o:p></o:p></span></span></p>
<table class=3DMsoNormalTable border=3D0 cellpadding=3D0 width=3D"100%"
style=3D'width:100.0%;mso-cellspacing:1.5pt;background:white'>
<tr style=3D'mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'>
<td style=3D'padding:.75pt .75pt .75pt .75pt'>
<p class=3DMsoNormal align=3Dleft style=3D'text-align:left;mso-pagination=
:widow-orphan'><span
lang=3DEN-US style=3D'font-size:9.0pt;font-family:SimSun;mso-bidi-font-fa=
mily:
SimSun;mso-font-kerning:0pt'>void ctestdlg::onbutton1() <br>
{<br>
</span><span style=3D'font-size:9.0pt;font-family:SimSun;mso-bidi-font-fa=
mily:
SimSun;mso-font-kerning:0pt'> <span lang=3DEN-US>// <span class=3D=
SpellE>todo</span>:
add your control notification handler code here<br>
</span> <span class=3DSpellE><span lang=3DEN-US>typedef</span></sp=
an><span
lang=3DEN-US> <span class=3DSpellE>int</span>(_<span class=3DSpellE>cdecl=
</span>
*connect)();<br>
</span> <span class=3DSpellE><span lang=3DEN-US>hinstance</span></=
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -