• <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ù)制的不?
            国产精品美女久久久久久2018| 国产精品久久久久9999| 久久夜色精品国产| 午夜精品久久久久久影视riav| 婷婷久久香蕉五月综合加勒比| 亚洲va久久久噜噜噜久久男同| 久久se精品一区二区| 丰满少妇人妻久久久久久4| 亚洲午夜久久久精品影院| 久久夜色精品国产亚洲av| 久久www免费人成看片| 久久无码av三级| 亚洲综合精品香蕉久久网| 久久九九有精品国产23百花影院| 久久高清一级毛片| 久久精品国产亚洲AV无码麻豆 | 天堂无码久久综合东京热| 日本WV一本一道久久香蕉| 日本免费一区二区久久人人澡| 亚洲精品第一综合99久久 | 日韩久久无码免费毛片软件| 亚洲AV日韩精品久久久久| 久久影院亚洲一区| 777久久精品一区二区三区无码| 久久亚洲天堂| 国产高潮久久免费观看| 亚洲国产精品无码久久一区二区 | 99久久精品无码一区二区毛片 | 一本一道久久a久久精品综合 | 国产精品岛国久久久久| 久久国产欧美日韩精品| 亚州日韩精品专区久久久| 亚洲嫩草影院久久精品| 精品999久久久久久中文字幕| 久久九九久精品国产免费直播| 久久亚洲2019中文字幕| 国产高潮国产高潮久久久91| 国产亚洲精品自在久久| 久久久av波多野一区二区| 久久久久AV综合网成人| 成人久久综合网|