亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? chap9_3.htm

?? VC++編程實例。非常詳細(xì)
?? HTM
?? 第 1 頁 / 共 2 頁
字號:
<html>

<head>
<title>9.3創(chuàng)建動態(tài)連接庫</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
<link rel="stylesheet" href="../../../cpcw.css"></head>

<body link="#3973DE" alink="#3973DE" background="../../bg.gif">
<div align="center"><center>
    <table width="85%" border="0">
      <tr bgcolor="#FFFFFF"> 
        <td> 
          <div align="center">
            <center>
            </center>
          </div>
          <p align="CENTER"><b><font color="red">9.3創(chuàng)建動態(tài)連接庫</font></b></p>
          <p> 在一些情況下,必須使用動態(tài)連接庫:</p>
          <p> 1.多個應(yīng)用程序共享代碼和數(shù)據(jù):比如Office軟件的各個組成部分有相似的外觀和功能,這就是通過共享動態(tài)連接庫實現(xiàn)的。</p>
          <p> 2.在鉤子程序過濾系統(tǒng)消息時必須使用動態(tài)連接庫</p>
          <p> 3.設(shè)備驅(qū)動程序必須是動態(tài)連接庫</p>
          <p> 4.如果要在對話框編輯器中使用自己定義的控件,也必須使用動態(tài)連接庫</p>
          <p> 5.動態(tài)連接庫以一種自然的方式將一個大的應(yīng)用程序劃分為幾個小的模塊,有利于小組內(nèi)部成員的分工與合作。而且,各個模塊可以獨立升級。如果小組中的一個成員開發(fā)了一組實用例程,他就可以把這些例程放在一個動態(tài)連接庫中,讓小組的其他成員使用。</p>
          <p> 6.為了實現(xiàn)應(yīng)用程序的國際化,往往需要使用動態(tài)連接庫。使用動態(tài)連接庫可以將針對某一國家、語言的信息存放在其中。對于不同的版本,使用不同的動態(tài)連接庫。在使用AppWizard生成應(yīng)用程序時,我們可以指定資源文件使用的語言,這就是通過提供不同的動態(tài)連接庫實現(xiàn)的。</p>
          <p> MFC支持兩類動態(tài)連接庫的創(chuàng)建:</p>
          <p> 用戶動態(tài)連接庫</p>
          <p> MFC擴展類庫。</p>
          <p> <b></b>9.3.1用戶動態(tài)連接庫(_USRDLL)</p>
          <p> </p>
          <p> 用戶動態(tài)連接庫一般使用C語言接口。要創(chuàng)建一個動態(tài)連接庫,選擇File-&gt;New菜單,彈出New對話框。在Projects標(biāo)簽頁下,選擇“Win32 
            Dynamic-Link Library”。Visual 
            C++就會創(chuàng)建動態(tài)連接庫所需的工程文件和MAK文件。</p>
          <p> 然后把下面兩個文件加入到工程中(Project-Add 
            to Project-Files菜單)。</p>
          <p> 文件1:mymaths.cpp</p>
           
          <p>////////////////////////////</p>
          <p>//mymaths.cpp</p>
          <p>//</p>
          <p>//a maths API DLL.</p>
          <p>//</p>
          <p>///////////////////////////</p>
          <p>#include&lt;windows.h&gt;</p>
          <p>//Declare the DLL functions prototypes</p>
          <p>int Summary(int);</p>
          <p>int Factorial(int);</p>
          <p>//////////////////////////</p>
          <p>//DllEntryPoint():The entry point of the DLL</p>
          <p>//</p>
          <p>/////////////////////////</p>
          <p>BOOL WINAPI DLLEntryPoint(HINSTANCE hDLL,DWORD dwReason,</p>
          <p>LPVOID Reserved)</p>
          <p>{</p>
          <p>switch(dwReason)</p>
          <p>{</p>
          <p>case DLL_PROCESS_ATTACH:</p>
          <p>{</p>
          
          <p>//一些初始化代碼</p>
           
          <p>break;</p>
          <p>}</p>
          <p>case DLL_PROCESS_DETACH:</p>
          <p>{</p>
          
          <p>//一些用于清理的代碼</p>
           
          <p>break;</p>
          <p>}</p>
          <p>}</p>
          <p>return TRUE;</p>
          <p>}</p>
          <p>int Summary(int n)</p>
          <p>{</p>
          <p>int sum=0;</p>
          <p>int i;</p>
          <p>for(i=1;i&lt;=n;i++)</p>
          <p>{</p>
          <p>sum+=i;</p>
          <p>}</p>
          <p>return sum;</p>
          <p>}</p>
          <p>int Factorial(int n)</p>
          <p>{</p>
          <p>int Fact=1;</p>
          <p>int i;</p>
          <p>for(i=1;i&lt;=n;i++)</p>
          <p>{</p>
          <p>Fact=Fact*i;</p>
          <p>}</p>
          <p>return Fact;</p>
          
          <p>}</p>
          <p> 文件2:mymaths.def</p>
           
          <p>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p>
          <p>;Mymaths.DEF</p>
          <p>;</p>
          <p>;The DEF file for the Mymaths.DLL DLL.</p>
          <p>;</p>
          <p>LIBRARY mymaths</p>
          <p>CODE PRELOAD MOVEABLE DISCARDABLE</p>
          <p>DATA PRELOAD SINGLE</p>
          <p>EXPORTS</p>
          <p>;The names of the DLL functions</p>
          <p>Summary</p>
          <p>Factorial</p>
          
          <p>在文件mymaths.cpp開頭,聲明了動態(tài)連接庫所包含的兩個函數(shù):Summary和Factorial。接著是DllEntryPoint()函數(shù)的定義。DllEntryPoint()顧名思義是動態(tài)連接庫的入口,應(yīng)用程序通過該入口訪問動態(tài)連接庫提供的服務(wù)。DllEntryPoint()主體是一個switch/case語句:</p>
           
          <p>switch(dwReason)</p>
          <p>{</p>
          <p>case DLL_PROCESS_ATTACH:</p>
          <p>{</p>
          
          <p>//一些初始化代碼</p>
           
          <p>break;</p>
          <p>}</p>
          <p>case DLL_PROCESS_DETACH:</p>
          <p>{</p>
          
          <p>//一些用于清理的代碼</p>
           
          <p>break;</p>
          <p>}</p>
          <p>}</p>
          
          <p>其中,在case 
            DLL_PROCESS_ATTACH分支可加入動態(tài)連接庫執(zhí)行時的一些初始化代碼。在case 
            DLL_PROCESS_DETACH加入動態(tài)連接庫被卸載時的一些清理代碼,比如釋放動態(tài)連接庫運行時申請的內(nèi)存等。</p>
          <p> 在DllEntryPoint()函數(shù)后,是兩個函數(shù)Summary和Factorial函數(shù)的定義。它們的定義與前面的靜態(tài)庫完全相同。在這里用戶可以放入任何函數(shù)。</p>
          <p> 另外,我們還需要一個mymaths.def文件。這個文件記錄了可被外部應(yīng)用程序使用的DLL庫函數(shù)名字。這些名字信息和對應(yīng)的函數(shù)位置的信息將被編譯進動態(tài)連接庫文件中,然后應(yīng)用程序根據(jù)函數(shù)名字和函數(shù)位置對照表來找到對應(yīng)的函數(shù)。</p>
          <p> 按F7編譯工程,Visual 
            C++就在mymaths\debug目錄下生成一個mymaths.dll動態(tài)連接庫文件。</p>
          <p> 現(xiàn)在,我們來使用剛才生成的動態(tài)連接庫。我們并不重新生成一個程序,而是修改前面測試靜態(tài)庫時的test程序。首先,把mymaths\debug目錄下的mymaths.dll拷貝到test\debug目錄下。test程序運行時,會在該目錄下搜索動態(tài)連接庫文件。然后修改testdlg.h,在其中加入一個函數(shù)LoadDLL()的聲明,見清單9.4。LoadDLL用于載入動態(tài)連接庫。</p>
          
          <p> <b>清單</b><b>9.4 
            修改后的對話框頭文件</b></p>
           
          <p>class CTestDlg : public CDialog</p>
          <p>{</p>
          <p>// Construction</p>
          <p>public:</p>
          <p>CTestDlg(CWnd* pParent = NULL); // standard constructor</p>
          <p>protected:</p>
          <p>void LoadDLL();</p>
          <p>//......</p>
          <p>}</p>
          
          <p>然后修改testdlg.cpp,修改后如清單9.5。</p>
          
          <p> <b>清單</b><b>95. 
            TestDlg.cpp文件</b></p>
           
          <p>// TestDlg.cpp : implementation file</p>
          <p>//</p>
          <p>#include &quot;stdafx.h&quot;</p>
          <p>#include &quot;Test.h&quot;</p>
          <p>#include &quot;TestDlg.h&quot;</p>
          
          <p>//#include &quot;mymath.h&quot; 
            //注釋掉mymath.h頭文件</p>
           
          <p>#ifdef _DEBUG</p>
          <p>#define new DEBUG_NEW</p>
          <p>#undef THIS_FILE</p>
          <p>static char THIS_FILE[] = __FILE__;</p>
          <p>#endif</p>
          <p>//The instance of the Mymaths.DLL library</p>
          <p>HINSTANCE ghMathsDLL=NULL;</p>
          <p>//declare the Summary() function from the Mymaths.DLL libray.</p>
          <p>typedef int (*SUMMARY)(int);</p>
          <p>SUMMARY Summary;</p>
          <p>//declare the Factorial() function from</p>
          <p>//the Mymaths.DLL library.</p>
          <p>typedef int (*FACTORIAL)(int);</p>
          <p>FACTORIAL Factorial;</p>
          <p>/////////////////////////////////////////////////////////////////////////////</p>
          <p>// CAboutDlg dialog used for App About</p>
          <p>class CAboutDlg : public CDialog</p>
          <p>{</p>
          <p>//...</p>
          <p>};</p>
          
          <p>//CAboutDlg的一些成員函數(shù)定義</p>
          <p> //CTestDlg的一些成員函數(shù)定義</p>
           
          <p>void CTestDlg::OnSum() </p>
          <p>{</p>
          <p>// TODO: Add your control notification handler code here</p>
          <p>LoadDLL();</p>
          <p>int nSum=Summary(10);</p>
          <p>CString sResult;</p>
          <p>sResult.Format(&quot;Sum(10)=%d&quot;,nSum);</p>
          <p>AfxMessageBox(sResult);</p>
          <p>}</p>
          <p>void CTestDlg::OnFactorial() </p>
          <p>{</p>
          <p>// TODO: Add your control notification handler code here</p>
          <p>LoadDLL();</p>
          <p>int nFact=Factorial(10);</p>
          <p>CString sResult;</p>
          <p>sResult.Format(&quot;10!=%d&quot;,nFact);</p>
          <p>AfxMessageBox(sResult);</p>
          <p>}</p>
          <p>void CTestDlg::LoadDLL()</p>
          <p>{</p>
          
          <p>//如果DLL已經(jīng)載入,則返回</p>
           
          <p>if(ghMathsDLL!=NULL)</p>
          <p>{</p>
          <p>return; </p>
          <p>}</p>
          
          <p>//載入Mymaths.DLL文件.</p>
           
          <p>ghMathsDLL=LoadLibrary(&quot;mymaths.DLL&quot;);</p>
          
          <p>//如果載入DLL失敗,提示用戶</p>
           
          <p>if(ghMathsDLL==NULL)</p>
          <p>{</p>
          <p>AfxMessageBox(&quot;Cannot load DLL file!&quot;);</p>
          <p>}</p>
          
          <p>//獲得DLL中Summary函數(shù)的地址</p>

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美精品一区二区色综合| 国产精品一级片| 男女性色大片免费观看一区二区 | 99久久精品国产一区二区三区 | 日日夜夜精品视频天天综合网| 日韩av不卡在线观看| 国产精品一二二区| 一本色道a无线码一区v| 91精品国产入口| 国产无一区二区| 亚洲chinese男男1069| 国内精品免费在线观看| 91香蕉视频mp4| 337p日本欧洲亚洲大胆色噜噜| 中文字幕日韩一区二区| 免费观看一级特黄欧美大片| 成人91在线观看| 日韩免费成人网| 亚洲特黄一级片| 精品中文字幕一区二区| 欧美三区在线观看| 久久久久亚洲综合| 亚洲二区在线观看| 成人av在线播放网站| 欧美一区二区三区在线观看| 国产精品欧美久久久久无广告 | 久久亚洲一级片| 亚洲免费观看高清完整| 韩国女主播成人在线观看| 欧美综合欧美视频| 日本一二三不卡| 麻豆精品一区二区三区| 欧美色爱综合网| 综合婷婷亚洲小说| 国产精品性做久久久久久| 4438x成人网最大色成网站| 国产精品色哟哟| 久久99精品视频| 欧美日韩成人在线一区| 亚洲欧美色图小说| 国产成人av电影在线观看| 欧美一卡二卡在线| 亚洲综合成人在线| 99麻豆久久久国产精品免费 | 成人av电影观看| 精品国产一区二区在线观看| 午夜精品久久久久久久99水蜜桃| 9i看片成人免费高清| 久久日韩精品一区二区五区| 日本成人在线电影网| 欧美性一二三区| 亚洲视频网在线直播| 懂色av中文字幕一区二区三区| 精品国产一区二区精华| 日韩不卡手机在线v区| 欧美天天综合网| 一区二区三区中文在线观看| a亚洲天堂av| 国产精品福利一区二区| 国产大陆a不卡| 久久久一区二区| 精品一区二区三区在线播放| 欧美一区二区三区日韩| 日韩精品一二区| 欧美乱妇15p| 天天色 色综合| 欧美日本韩国一区二区三区视频| 亚洲综合视频网| 欧美日韩另类国产亚洲欧美一级| 亚洲最大的成人av| 欧美在线综合视频| 亚洲一区二区三区四区五区中文| 色成年激情久久综合| 一区二区三区四区乱视频| 一本色道久久综合狠狠躁的推荐 | 9191国产精品| 日韩激情av在线| 欧美一区二区三区视频免费播放| 日本欧美肥老太交大片| 国产亚洲一区二区三区四区| 国产真实乱子伦精品视频| 精品成人一区二区三区四区| 韩国av一区二区三区四区| 国产网红主播福利一区二区| 国产99久久久国产精品| 亚洲欧洲在线观看av| 91啪九色porn原创视频在线观看| 亚洲另类在线视频| 欧美亚洲综合久久| 美女网站视频久久| 欧美精品一区二区久久婷婷| 国产精品一线二线三线精华| 国产精品色哟哟| 欧美综合亚洲图片综合区| 日韩黄色小视频| 精品剧情v国产在线观看在线| 国产在线播放一区三区四| 中文字幕精品一区| 日本久久一区二区三区| 日韩专区在线视频| 26uuu精品一区二区在线观看| 国产+成+人+亚洲欧洲自线| 亚洲欧美日韩在线不卡| 欧美日本一区二区三区四区| 美女网站色91| 亚洲欧洲成人av每日更新| 在线观看国产91| 美洲天堂一区二卡三卡四卡视频| 久久精品亚洲精品国产欧美kt∨| 97精品久久久久中文字幕| 亚洲午夜成aⅴ人片| 久久综合九色综合欧美就去吻 | 玉米视频成人免费看| 在线成人小视频| 国产精品91xxx| 夜夜嗨av一区二区三区| 日韩女优视频免费观看| av不卡在线观看| 免费高清不卡av| 成人免费视频在线观看| 555www色欧美视频| 粉嫩av一区二区三区粉嫩| 性欧美疯狂xxxxbbbb| 精品国精品国产| 日本韩国欧美一区二区三区| 免费成人av在线播放| 中文字幕色av一区二区三区| 日韩一级黄色片| 在线观看国产一区二区| 国产一区二区免费在线| 亚洲午夜久久久久久久久电影院 | 91视频xxxx| 精品一区二区av| 亚洲综合色成人| 欧美国产一区在线| 欧美一区二区三区视频免费播放 | 亚洲大片在线观看| 国产精品欧美一区喷水| 精品久久久久久亚洲综合网| 91国偷自产一区二区使用方法| 精品夜夜嗨av一区二区三区| 一区二区三区四区亚洲| 国产欧美视频一区二区三区| 在线成人小视频| 欧美亚洲日本国产| 成人自拍视频在线观看| 久久国产精品72免费观看| 亚洲综合色成人| 国产精品不卡在线观看| 久久久影视传媒| 欧美videossexotv100| 欧美蜜桃一区二区三区| 97精品国产97久久久久久久久久久久| 国模少妇一区二区三区| 日韩精品亚洲一区二区三区免费| 亚洲精品亚洲人成人网| 国产精品入口麻豆原神| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 捆绑调教美女网站视频一区| 亚洲视频狠狠干| 久久夜色精品国产噜噜av| 在线观看91av| 欧美日韩精品免费观看视频| 91福利在线播放| www.亚洲精品| 懂色av一区二区三区蜜臀| 精油按摩中文字幕久久| 蜜臀久久99精品久久久画质超高清 | 国产精品一区二区黑丝| 另类欧美日韩国产在线| 美女视频免费一区| 国产欧美日韩不卡| 久久成人18免费观看| 丝袜a∨在线一区二区三区不卡| 国产精品超碰97尤物18| 国产精品国产三级国产普通话蜜臀| 亚洲国产精品ⅴa在线观看| 中文字幕精品—区二区四季| 国产精品五月天| 国产精品国产三级国产| 国产精品久久夜| 亚洲丝袜制服诱惑| 日本91福利区| 无码av中文一区二区三区桃花岛| 亚洲国产日韩综合久久精品| 亚洲一区二区三区国产| 午夜久久久久久| 丝袜美腿亚洲一区二区图片| 日本一区中文字幕| 日本不卡的三区四区五区| 美女一区二区视频| 国产精品亚洲人在线观看| 国产大陆亚洲精品国产| av在线综合网| 在线日韩一区二区| 3atv在线一区二区三区| 精品日产卡一卡二卡麻豆| 国产网站一区二区三区| 亚洲欧美一区二区三区国产精品| 亚洲欧洲制服丝袜|