• <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的例子(屬于靜態鏈接到MFC 的規則DLL)中提供了一個如圖11所示的對話框。
            (下載本工程附件):

            圖11 MFC規則DLL例子

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

              在圖11所示DLL中的對話框的Hello按鈕上點擊時將MessageBox一個“Hello,pconline的網友”對話框,下面是相關的文件及源代碼,其中刪除了MFC向導自動生成的絕大多數注釋。
            第一組文件:CWinApp繼承類的聲明與實現

            // 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應用程序,因為MFC應用程序也包含這樣的在工程名后添加“App”組成類名的類(并繼承自CWinApp類),也定義了這個類的一個全局實例theApp。
            我們知道,在MFC應用程序中CWinApp取代了SDK程序中WinMain的地位,SDK程序WinMain所完成的工作由CWinApp的三個函數完成:

            virtual BOOL InitApplication( );

            virtual BOOL InitInstance( );

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


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

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

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

              分析:

              這一部分的編程與一般的應用程序根本沒有什么不同,我們照樣可以利用MFC類向導來自動為對話框上的控件添加事件。MFC類向導照樣會生成類似ON_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規則DLL中使用資源也與在MFC應用程序中使用資源沒有什么不同,我們照樣可以用Visual C++的資源編輯工具進行資源的添加、刪除和屬性的更改。

              第四組文件 MFC規則DLL接口函數

            #include "StdAfx.h"

            #include "DllDialog.h"


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

            {

            CDllDialog dllDialog;

            dllDialog.DoModal();

            }


              分析:

              這個接口并不使用MFC,但是在其中卻可以調用MFC擴展類CdllDialog的函數,這體現了“規則”的概類。

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

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

            Feedback

            # re: MFC規則DLL 簡單的例子  回復  更多評論   

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

            # re: MFC規則DLL 簡單的例子  回復  更多評論   

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

            # re: MFC規則DLL 簡單的例子  回復  更多評論   

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

            # re: MFC規則DLL 簡單的例子  回復  更多評論   

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

            # re: MFC規則DLL 簡單的例子  回復  更多評論   

            2008-11-05 14:04 by ff
            Thx

            # re: MFC規則DLL 簡單的例子  回復  更多評論   

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

            # re: MFC規則DLL 簡單的例子  回復  更多評論   

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

            # re: MFC規則DLL 簡單的例子  回復  更多評論   

            2009-05-31 18:28 by ivenher
            以上均為轉載,未經驗證,自己多試試吧,

            # re: MFC規則DLL 簡單的例子  回復  更多評論   

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

            # re: MFC規則DLL 簡單的例子  回復  更多評論   

            2013-05-29 16:05 by 張亞成
            這個文章是從課本上復制的不?
            久久er国产精品免费观看2| 亚洲国产婷婷香蕉久久久久久| 97久久婷婷五月综合色d啪蜜芽| 日本WV一本一道久久香蕉| 狠狠色噜噜色狠狠狠综合久久| 嫩草伊人久久精品少妇AV| 国产成人精品免费久久久久| 久久久久久久综合日本亚洲| 久久免费观看视频| av无码久久久久久不卡网站 | 久久久噜噜噜久久中文福利| 99999久久久久久亚洲| 久久午夜综合久久| 久久综合给合久久狠狠狠97色69| 国产成人精品综合久久久| 久久精品国产免费观看| 国产精品青草久久久久婷婷| 亚洲v国产v天堂a无码久久| 国产精品99久久精品| 久久精品国产亚洲AV蜜臀色欲| 久久精品国产一区二区三区日韩| 污污内射久久一区二区欧美日韩| 国产精品久久网| 久久99国内精品自在现线| 伊人久久大香线蕉无码麻豆| 国产一级持黄大片99久久| 亚洲香蕉网久久综合影视| 久久午夜综合久久| 久久强奷乱码老熟女网站| 久久久久国产一级毛片高清版| 欧美一区二区三区久久综| 超级碰碰碰碰97久久久久| 久久性生大片免费观看性| 国产精品九九久久精品女同亚洲欧美日韩综合区 | 婷婷伊人久久大香线蕉AV| 1000部精品久久久久久久久| 99久久香蕉国产线看观香| 亚洲国产综合久久天堂| 久久精品国产精品亜洲毛片 | 久久久久免费精品国产| 99久久精品国产综合一区|