欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言MFC導出dll回調函數(shù)方法詳解

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

如何將回調函數(shù)導出來

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

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

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

下面,我就為大家詳細講解如何導出回調函數(shù)吧~

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

操作流程,如下所示:

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

dll內部回調函數(shù)功能講解

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

該函數(shù)由調用dll的程序主動調用,告訴dll需要開始進行定時操作了。

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

.h中聲明

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

.cpp中實現(xiàn)

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

首先,根據(jù)參數(shù)進行sleep對應的秒數(shù),時間到達后,由dll主動回調開發(fā)程序,其中pFuncTimerDescrip函數(shù)就是主動觸發(fā)的。

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

2:回調函數(shù)

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

在例子中,回調函數(shù)是一個類似于TimerTriggerDescrip(std::string sDescrip);這樣的函數(shù)結構。

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

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

普通的dll導出函數(shù)中,參數(shù)是一個明確類型的值,比如:int類型、float類型、甚至是一個結構體。

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

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

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

其次,注冊回調函數(shù)

_InterrExport void CallBackFunc_GetTimerTriggerDescrip(TimerTriggerDescrip callback);

對外部調用者來說,開放的僅僅是注冊回調函數(shù)而已。

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

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

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

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

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

在.cpp應用中設置

TimerTriggerDescrip pFuncTimerDescrip= nullptr;

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

應用程序調用dll回調函數(shù)

1:加載dll庫

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

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

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

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

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

3:注冊回調函數(shù)

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

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

CallBack_ReceiveTimerDescrip:該函數(shù)就是對應dll庫中TimerTriggerDescrip函數(shù)。

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

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

以上就是C語言MFC導出dll回調函數(shù)方法詳解的詳細內容,更多關于C語言MFC導出dll回調函數(shù)的資料請關注腳本之家其它相關文章!

相關文章

  • 聊一聊OpenCV相機標定

    聊一聊OpenCV相機標定

    這篇文章主要為大家詳細介紹了OpenCV相機標定的相關資料,即獲得相機參數(shù)的過程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Matlab實現(xiàn)好看的配對箱線圖的繪制

    Matlab實現(xiàn)好看的配對箱線圖的繪制

    配對箱線圖,常見于配對樣本的數(shù)據(jù)分析中,它除了能夠表現(xiàn)兩組的整體差異,還能夠清晰地呈現(xiàn)單個樣本的前后改變。本文將用Matlab實現(xiàn)配對箱線圖的繪制,需要的可以參考一下
    2022-08-08
  • 淺談C++重載、重寫、重定義

    淺談C++重載、重寫、重定義

    下面小編就為大家?guī)硪黄獪\談C++重載、重寫、重定義。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • 淺談c++中的while(cin)問題

    淺談c++中的while(cin)問題

    下面小編就為大家?guī)硪黄獪\談c++中的while(cin)問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Qt?http編程之nlohmann?json庫使用詳解

    Qt?http編程之nlohmann?json庫使用詳解

    nlohmann是一個C++的JSON庫,它提供了方便的方式來解析、生成和操作JSON數(shù)據(jù),這篇文章主要為大家介紹了nlohmann?json庫的簡單使用,希望對大家有所幫助
    2024-04-04
  • QT圓形圖像剪切功能實現(xiàn)

    QT圓形圖像剪切功能實現(xiàn)

    這篇文章主要介紹了QT圓形圖像剪切,實現(xiàn)代碼包括剪切代碼,完整QML源碼,C++代碼,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-10-10
  • C語言分別實現(xiàn)棧和隊列詳解流程

    C語言分別實現(xiàn)棧和隊列詳解流程

    棧和隊列,嚴格意義上來說,也屬于線性表,因為它們也都用于存儲邏輯關系為 "一對一" 的數(shù)據(jù),但由于它們比較特殊,因此將其單獨作為一章,做重點講解
    2022-04-04
  • C++實現(xiàn)LeetCode(61.旋轉鏈表)

    C++實現(xiàn)LeetCode(61.旋轉鏈表)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(61.旋轉鏈表),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-07-07
  • C語言中對文件最基本的讀取和寫入函數(shù)

    C語言中對文件最基本的讀取和寫入函數(shù)

    這篇文章主要介紹了C語言中對文件最基本的讀取和寫入函數(shù),是C語言入門學習中的基礎知識,需要的朋友可以參考下
    2015-08-08
  • C語言數(shù)據(jù)結構之迷宮問題

    C語言數(shù)據(jù)結構之迷宮問題

    這篇文章主要為大家詳細介紹了C語言數(shù)據(jù)結構之迷宮問題,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03

最新評論