最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言MFC導(dǎo)出dll回調(diào)函數(shù)方法詳解

 更新時(shí)間:2022年11月15日 17:09:04   作者:中國好公民st  
這篇文章主要為大家介紹了C語言MFC導(dǎo)出dll回調(diào)函數(shù)方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

如何將回調(diào)函數(shù)導(dǎo)出來

這一章節(jié)主要講述在導(dǎo)出函數(shù)的基礎(chǔ)上如何將回調(diào)函數(shù)導(dǎo)出來。

回調(diào)函數(shù)的應(yīng)用相信很多C++程序猿兒們都不陌生吧,在某些場(chǎng)景下可謂是神助攻!那么,今天就來為大家講解下,在導(dǎo)出dll中如何使用回調(diào)函數(shù)。

對(duì)于導(dǎo)出dll使用回調(diào)函數(shù),大家不必懼怕,可以當(dāng)成是回調(diào)類中主動(dòng)調(diào)用方法,并在使用dll的開發(fā)程序中被觸發(fā)。

下面,我就為大家詳細(xì)講解如何導(dǎo)出回調(diào)函數(shù)吧~

舉一個(gè)簡單的例子,sleep一定時(shí)間后通知應(yīng)用程序函數(shù)。

操作流程,如下所示:

在實(shí)際開發(fā)中肯定不會(huì)在dll中將sleep作為回調(diào)函數(shù)處理,那真是吃飽了撐了,這里,只是用于簡單例子說明,重點(diǎn)是想突出,如何讓dll主動(dòng)調(diào)用應(yīng)用程序。

dll內(nèi)部回調(diào)函數(shù)功能講解

1:定義開始定時(shí)操作函數(shù)

該函數(shù)由調(diào)用dll的程序主動(dòng)調(diào)用,告訴dll需要開始進(jìn)行定時(shí)操作了。

對(duì)于這個(gè)函數(shù),沒什么過多說明,上一章節(jié)講述了如何使用回調(diào)函數(shù)了,直接上代碼:

.h中聲明

//開始計(jì)算定時(shí)觸發(fā)
_InterrExport void BeginTimerStart(int nTime);//開始計(jì)算定時(shí)觸發(fā)時(shí)間

.cpp中實(shí)現(xiàn)

_InterrExport void BeginTimerStart(int nTime)
{
	Sleep(nTime);
	pFuncTimerDescrip("接收到了定時(shí)器觸發(fā)結(jié)束消息~");
}

首先,根據(jù)參數(shù)進(jìn)行sleep對(duì)應(yīng)的秒數(shù),時(shí)間到達(dá)后,由dll主動(dòng)回調(diào)開發(fā)程序,其中pFuncTimerDescrip函數(shù)就是主動(dòng)觸發(fā)的。

對(duì)于pFuncTimerDescrip函數(shù)該如何操作呢?

2:回調(diào)函數(shù)

普通的回調(diào)方式不在過多說明,直接講解在dll中的回調(diào)使用。

在例子中,回調(diào)函數(shù)是一個(gè)類似于TimerTriggerDescrip(std::string sDescrip);這樣的函數(shù)結(jié)構(gòu)。

參數(shù)只有一個(gè),并且是字符串類型。

2.1:定義回調(diào)函數(shù)接口

普通的dll導(dǎo)出函數(shù)中,參數(shù)是一個(gè)明確類型的值,比如:int類型、float類型、甚至是一個(gè)結(jié)構(gòu)體。

而作為回調(diào)函數(shù)來說,必不可少的就是注冊(cè)回調(diào)函數(shù),dll中的回調(diào)函數(shù)也是如此。

首先,定義回調(diào)函數(shù)

typedef void (*TimerTriggerDescrip)(std::string sDescrip); //回調(diào)函數(shù),定時(shí)觸發(fā)

其次,注冊(cè)回調(diào)函數(shù)

_InterrExport void CallBackFunc_GetTimerTriggerDescrip(TimerTriggerDescrip callback);

對(duì)外部調(diào)用者來說,開放的僅僅是注冊(cè)回調(diào)函數(shù)而已。

以上2.1中的所有代碼,都在.h中聲明。

2.2:dll中使用回調(diào)函數(shù)觸發(fā)消息

這里所說的觸發(fā),也就是上述代碼:

pFuncTimerDescrip("接收到了定時(shí)器觸發(fā)結(jié)束消息~");

其中,pFuncTimerDescrip就是回調(diào)函數(shù)的指針。

在.cpp應(yīng)用中設(shè)置

TimerTriggerDescrip pFuncTimerDescrip= nullptr;

到這里,在dll中設(shè)置回調(diào)函數(shù)就完成了,那么接下來,該實(shí)現(xiàn)如何在應(yīng)用程序中調(diào)用dll中的回調(diào)函數(shù)了。

應(yīng)用程序調(diào)用dll回調(diào)函數(shù)

1:加載dll庫

在使用之前一定要記得加載dll,上一章節(jié)有詳細(xì)介紹,這里就不說明了。

2:聲明回調(diào)函數(shù)

在調(diào)用dll的地方需要將回掉函數(shù)的函數(shù)進(jìn)行聲明,與普通的dll導(dǎo)出函數(shù)方式一致,代碼如下:

typedef void(*TimerTriggerDescrip)(std::string sDescrip);
typedef void (*CallBackFunc_GetTimerTriggerDescrip)(TimerTriggerDescrip);
CallBackFunc_GetTimerTriggerDescrip pCallFuncTimerDescrip;

TimerTriggerDescrip:該函數(shù)是dll庫中,內(nèi)部觸發(fā)應(yīng)用程序的函數(shù),這里作為回調(diào)函數(shù)的參數(shù)也是需要聲明的。

3:注冊(cè)回調(diào)函數(shù)

在注冊(cè)時(shí),與普通的dll函數(shù)略有不同

//注冊(cè):回調(diào)函數(shù)
pCallFuncTimerDescrip = (CallBackFunc_GetTimerTriggerDescrip)GetProcAddress(handle, "CallBackFunc_GetTimerTriggerDescrip");
pCallFuncTimerDescrip(CallBack_ReceiveTimerDescrip);

CallBack_ReceiveTimerDescrip:該函數(shù)就是對(duì)應(yīng)dll庫中TimerTriggerDescrip函數(shù)。

//接收:dll回調(diào)函數(shù)
void CallBack_ReceiveTimerDescrip(std::string sDescrip)
{
	OutputDebugStringA(sDescrip.c_str());
}

參數(shù)與dll中的回調(diào)函數(shù)保持一致,就可以接收到回調(diào)的信息了。

以上就是C語言MFC導(dǎo)出dll回調(diào)函數(shù)方法詳解的詳細(xì)內(nèi)容,更多關(guān)于C語言MFC導(dǎo)出dll回調(diào)函數(shù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C語言之格式化屏幕輸出詳解

    C語言之格式化屏幕輸出詳解

    這篇文章主要介紹了C語言之格式化屏幕輸出的相關(guān)資料,需要的朋友可以參考下,小編覺得這篇文章寫的還不錯(cuò),希望能夠給你帶來幫助
    2021-11-11
  • C++開發(fā)截屏小程序功能

    C++開發(fā)截屏小程序功能

    這篇文章主要介紹了C++開發(fā)截屏小程序功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • C++ Boost Bimap示例詳細(xì)講解

    C++ Boost Bimap示例詳細(xì)講解

    Boost是為C++語言標(biāo)準(zhǔn)庫提供擴(kuò)展的一些C++程序庫的總稱。Boost庫是一個(gè)可移植、提供源代碼的C++庫,作為標(biāo)準(zhǔn)庫的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開發(fā)引擎之一,是為C++語言標(biāo)準(zhǔn)庫提供擴(kuò)展的一些C++程序庫的總稱
    2022-11-11
  • C語言求解定積分的方法

    C語言求解定積分的方法

    這篇文章主要為大家詳細(xì)介紹了C語言求解定積分的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • C++實(shí)現(xiàn)商店倉庫管理系統(tǒng)

    C++實(shí)現(xiàn)商店倉庫管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)商店倉庫管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 用C語言實(shí)現(xiàn)五子棋游戲

    用C語言實(shí)現(xiàn)五子棋游戲

    這篇文章主要為大家詳細(xì)介紹了用C語言實(shí)現(xiàn)五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C語言數(shù)據(jù)結(jié)構(gòu)深入探索順序表

    C語言數(shù)據(jù)結(jié)構(gòu)深入探索順序表

    順序表,全名順序存儲(chǔ)結(jié)構(gòu),是線性表的一種,線性表用于存儲(chǔ)邏輯關(guān)系為“一對(duì)一”的數(shù)據(jù),順序表自然也不例外,不僅如此,順序表對(duì)數(shù)據(jù)的物理存儲(chǔ)結(jié)構(gòu)也有要求,跟隨下文來具體了解吧
    2022-03-03
  • C++ LeetCode1775通過最少操作次數(shù)使數(shù)組和相等

    C++ LeetCode1775通過最少操作次數(shù)使數(shù)組和相等

    這篇文章主要為大家介紹了C++ LeetCode1775通過最少操作次數(shù)使數(shù)組和相等,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • QT實(shí)現(xiàn)簡單打地鼠游戲

    QT實(shí)現(xiàn)簡單打地鼠游戲

    這篇文章主要為大家詳細(xì)介紹了QT實(shí)現(xiàn)簡單打地鼠游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • 使用C語言打造通訊錄管理系統(tǒng)和教學(xué)安排系統(tǒng)的代碼示例

    使用C語言打造通訊錄管理系統(tǒng)和教學(xué)安排系統(tǒng)的代碼示例

    這篇文章主要介紹了使用C語言打造通訊錄管理系統(tǒng)和教學(xué)安排系統(tǒng)的代碼示例,利用C語言強(qiáng)大的數(shù)組和指針能夠更加清晰地體現(xiàn)設(shè)計(jì)思路:D 需要的朋友可以參考下
    2016-06-06

最新評(píng)論

佳木斯市| 高阳县| 太白县| 钟祥市| 商城县| 潼南县| 湟中县| 阳高县| 绥宁县| 阜南县| 本溪市| 抚顺市| 静宁县| 礼泉县| 开远市| 惠东县| 云和县| 蛟河市| 安平县| 巫溪县| 巢湖市| 玛纳斯县| 六枝特区| 万载县| 法库县| 华亭县| 龙井市| 庆城县| 漠河县| 叙永县| 巨鹿县| 盐边县| 宽甸| 高青县| 花莲市| 商都县| 民县| 日喀则市| 柘荣县| 丹巴县| 石嘴山市|