• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            這個DLL的例子(屬于靜態(tài)鏈接到MFC 的規(guī)則DLL)中提供了一個如圖11所示的對話框。
            (下載本工程附件):

            圖11 MFC規(guī)則DLL例子

              在DLL中添加對話框的方式與在MFC應(yīng)用程序中是一樣的。

              在圖11所示DLL中的對話框的Hello按鈕上點擊時將MessageBox一個“Hello,pconline的網(wǎng)友”對話框,下面是相關(guān)的文件及源代碼,其中刪除了MFC向?qū)ё詣由傻慕^大多數(shù)注釋。
            第一組文件:CWinApp繼承類的聲明與實現(xiàn)

            // RegularDll.h : main header file for the REGULARDLL DLL



            #if !defined(AFX_REGULARDLL_H__3E9CB22B_588B_4388_B778_B3416ADB79B3__INCLUDED_)

            #define AFX_REGULARDLL_H__3E9CB22B_588B_4388_B778_B3416ADB79B3__INCLUDED_



            #if _MSC_VER > 1000

            #pragma once

            #endif // _MSC_VER > 1000



            #ifndef __AFXWIN_H__

            #error include 'stdafx.h' before including this file for PCH

            #endif

            #include "resource.h" // main symbols



            class CRegularDllApp : public CWinApp

            {

            public:

            CRegularDllApp();



            DECLARE_MESSAGE_MAP()

            };

            #endif



            // RegularDll.cpp : Defines the initialization routines for the DLL.



            #include "stdafx.h"

            #include "RegularDll.h"



            #ifdef _DEBUG

            #define new DEBUG_NEW

            #undef THIS_FILE

            static char THIS_FILE[] = __FILE__;

            #endif



            BEGIN_MESSAGE_MAP(CRegularDllApp, CWinApp)

            END_MESSAGE_MAP()



            /////////////////////////////////////////////////////////////////////////////

            // CRegularDllApp construction



            CRegularDllApp::CRegularDllApp()

            {

            }



            /////////////////////////////////////////////////////////////////////////////

            // The one and only CRegularDllApp object

            CRegularDllApp theApp;


              分析:

              在這一組文件中定義了一個繼承自CWinApp的類CRegularDllApp,并同時定義了其的一個實例theApp。乍一看,您會以為它是一個MFC應(yīng)用程序,因為MFC應(yīng)用程序也包含這樣的在工程名后添加“App”組成類名的類(并繼承自CWinApp類),也定義了這個類的一個全局實例theApp。
            我們知道,在MFC應(yīng)用程序中CWinApp取代了SDK程序中WinMain的地位,SDK程序WinMain所完成的工作由CWinApp的三個函數(shù)完成:

            virtual BOOL InitApplication( );

            virtual BOOL InitInstance( );

            virtual BOOL Run( ); //傳說中MFC程序的“活水源頭”


              但是MFC規(guī)則DLL并不是MFC應(yīng)用程序,它所繼承自CWinApp的類不包含消息循環(huán)。這是因為,MFC規(guī)則DLL不包含CWinApp::Run機(jī)制,主消息泵仍然由應(yīng)用程序擁有。如果DLL 生成無模式對話框或有自己的主框架窗口,則應(yīng)用程序的主消息泵必須調(diào)用從DLL 導(dǎo)出的函數(shù)來調(diào)用PreTranslateMessage成員函數(shù)。

              另外,MFC規(guī)則DLL與MFC 應(yīng)用程序中一樣,需要將所有 DLL中元素的初始化放到InitInstance 成員函數(shù)中。

              第二組文件 自定義對話框類聲明及實現(xiàn)(點擊查看附件)

              分析:

              這一部分的編程與一般的應(yīng)用程序根本沒有什么不同,我們照樣可以利用MFC類向?qū)碜詣訛閷υ捒蛏系目丶砑邮录FC類向?qū)д諛訒深愃芆N_BN_CLICKED(IDC_HELLO_BUTTON, OnHelloButton)的消息映射宏。

              第三組文件 DLL中的資源文件

            //{{NO_DEPENDENCIES}}

            // Microsoft Developer Studio generated include file.

            // Used by RegularDll.rc

            //

            #define IDD_DLL_DIALOG 1000

            #define IDC_HELLO_BUTTON 1000


              分析:

              在MFC規(guī)則DLL中使用資源也與在MFC應(yīng)用程序中使用資源沒有什么不同,我們照樣可以用Visual C++的資源編輯工具進(jìn)行資源的添加、刪除和屬性的更改。

              第四組文件 MFC規(guī)則DLL接口函數(shù)

            #include "StdAfx.h"

            #include "DllDialog.h"


            extern "C" __declspec(dllexport) void ShowDlg(void)

            {

            CDllDialog dllDialog;

            dllDialog.DoModal();

            }


              分析:

              這個接口并不使用MFC,但是在其中卻可以調(diào)用MFC擴(kuò)展類CdllDialog的函數(shù),這體現(xiàn)了“規(guī)則”的概類。

              與非MFC DLL完全相同,我們可以使用__declspec(dllexport)聲明或在.def中引出的方式導(dǎo)出MFC規(guī)則DLL中的接口。

            Posted on 2005-11-25 18:49 艾凡赫 閱讀(8696) 評論(10)  編輯 收藏 引用 所屬分類: DLL 技術(shù)

            Feedback

            # re: MFC規(guī)則DLL 簡單的例子  回復(fù)  更多評論   

            2008-05-20 23:13 by 倆永紅
            好 很滿意

            # re: MFC規(guī)則DLL 簡單的例子  回復(fù)  更多評論   

            2008-05-20 23:16 by 倆永紅
            好 恒滿意

            # re: MFC規(guī)則DLL 簡單的例子  回復(fù)  更多評論   

            2008-06-13 16:27 by awshome
            想問一下.如何調(diào)用這個東西呢.

            # re: MFC規(guī)則DLL 簡單的例子  回復(fù)  更多評論   

            2008-06-13 16:40 by awshome
            我的意思是說,除了通過loadlibray動態(tài)載入之外還有其他的方式嗎.比如說加個什么頭文件的了.?

            # re: MFC規(guī)則DLL 簡單的例子  回復(fù)  更多評論   

            2008-11-05 14:04 by ff
            Thx

            # re: MFC規(guī)則DLL 簡單的例子  回復(fù)  更多評論   

            2008-11-21 16:03 by cai
            下載不了?

            # re: MFC規(guī)則DLL 簡單的例子  回復(fù)  更多評論   

            2009-05-27 09:59 by 頓珠
            我按照你的代碼寫好,但是為什么我的編譯出來的dll文件復(fù)制在RegularDllCall文件中不提示錯誤,但也不正確,點擊“調(diào)用dll”后無反應(yīng),你加我qq好么?350208302,到時候我把文件發(fā)給你,你幫我看看行么,,,,謝謝啦

            # re: MFC規(guī)則DLL 簡單的例子  回復(fù)  更多評論   

            2009-05-31 18:28 by ivenher
            以上均為轉(zhuǎn)載,未經(jīng)驗證,自己多試試吧,

            # re: MFC規(guī)則DLL 簡單的例子  回復(fù)  更多評論   

            2009-07-21 14:02 by 路過
            沒有試過不要亂發(fā),浪費大家的時間

            # re: MFC規(guī)則DLL 簡單的例子  回復(fù)  更多評論   

            2013-05-29 16:05 by 張亞成
            這個文章是從課本上復(fù)制的不?
            日本久久中文字幕| 亚洲国产成人久久一区久久| 国产综合久久久久| 国产精品久久成人影院| 久久久久亚洲?V成人无码| 欧美亚洲色综久久精品国产| 嫩草影院久久国产精品| 久久中文字幕人妻丝袜| 久久被窝电影亚洲爽爽爽| 日本亚洲色大成网站WWW久久| 午夜久久久久久禁播电影| 亚洲综合精品香蕉久久网97 | 99热精品久久只有精品| 伊人久久综合无码成人网| 国产精品成人久久久久三级午夜电影| 国产成人精品综合久久久久| 久久99精品久久久久久秒播| 91久久精一区二区三区大全| 日本高清无卡码一区二区久久| 国产国产成人精品久久| 精品国产99久久久久久麻豆| 久久久精品视频免费观看| 久久精品国产清高在天天线| 久久亚洲日韩看片无码| 久久久久国产成人精品亚洲午夜| 99久久无色码中文字幕| 久久亚洲欧美国产精品| 国产毛片欧美毛片久久久| 性做久久久久久久久| 久久亚洲国产成人影院网站| 久久久不卡国产精品一区二区| 精品一区二区久久| 91精品久久久久久无码| 精品99久久aaa一级毛片| 国产午夜精品久久久久九九| 国产巨作麻豆欧美亚洲综合久久| 中文字幕一区二区三区久久网站| 99精品久久久久久久婷婷| 国产精久久一区二区三区| 久久精品国产第一区二区| 亚洲日本va午夜中文字幕久久 |