• <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 艾凡赫 閱讀(8695) 評論(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 張亞成
            這個文章是從課本上復制的不?
            亚洲精品视频久久久| 久久香蕉一级毛片| 国产精品99久久久精品无码| 国产精品成人精品久久久| 日本国产精品久久| 久久久久人妻一区精品性色av| 亚洲va中文字幕无码久久不卡| 国产成人精品白浆久久69| 久久福利片| 91精品国产色综久久| 久久人人爽人人爽人人爽| 久久精品国产亚洲欧美| 亚洲欧美日韩中文久久| 久久久久九九精品影院| 久久午夜电影网| 99精品久久久久久久婷婷 | 人妻少妇久久中文字幕| 浪潮AV色综合久久天堂| 狠狠人妻久久久久久综合| 久久久www免费人成精品| 九九精品久久久久久噜噜| 久久精品国产乱子伦| 香蕉久久影院| 亚洲人成精品久久久久| 久久精品国产亚洲av水果派| 人妻精品久久久久中文字幕| 久久97久久97精品免视看| 久久久噜噜噜久久| 久久精品久久久久观看99水蜜桃| 热久久国产欧美一区二区精品| 久久人妻AV中文字幕| 久久精品亚洲中文字幕无码麻豆| 国产99精品久久| 久久人人爽人人爽人人片AV麻豆 | 久久亚洲精精品中文字幕| 久久精品午夜一区二区福利| 94久久国产乱子伦精品免费| 免费精品久久久久久中文字幕| 青青草原综合久久大伊人| 久久国产免费观看精品| 亚洲午夜久久久影院|