請問dll怎樣呼叫主程式的函式?看了半天,好像可以用回呼,有沒有例子?謝謝
uj5u.com熱心網友回復:
你說的沒錯,是用回呼,傳個函式指標進去,DLL里呼叫。uj5u.com熱心網友回復:
還可以發送訊息在dll里給主程式發送訊息,主程式在訊息回應里呼叫函式
uj5u.com熱心網友回復:
僅供參考:
dll中:
private:
void (WINAPI *FUN_OnSocketEventCallBack)(LPVOID pWnd,ISNSTCPClient *pSocket,const CString &strIP,ISNSTCPClient::SOCKET_EVENT_ID uEventID);
LPVOID m_lpSocketEventCallBackWnd;
virtual void SetSocketEventCallBack(LPVOID lpWnd,void (WINAPI *OnSocketEventCallBack)(LPVOID pWnd,ISNSTCPClient *pSocket,const CString &strIP,ISNSTCPClient::SOCKET_EVENT_ID uEventID));
void CTCPClient::SetSocketEventCallBack(LPVOID lpWnd,void (WINAPI *OnSocketEventCallBack)(LPVOID pWnd,ISNSTCPClient *pSocket,const CString &strIP,ISNSTCPClient::SOCKET_EVENT_ID uEventID))
{
FUN_OnSocketEventCallBack = OnSocketEventCallBack;
m_lpSocketEventCallBackWnd = lpWnd;
}
void CTCPClient::PostSocketEvent(const CString &strIP,ISNSTCPClient::SOCKET_EVENT_ID uEventID)
{
if(FUN_OnSocketEventCallBack)
{
FUN_OnSocketEventCallBack(m_lpSocketEventCallBackWnd,GetOwner(),strIP,uEventID);
}
}
主程式中:
CXXX::Init()
{
CTCPClient m_Cliient;
m_Cliient.SetSocketEventCallBack(this,OnSocketEventCallBack):
}
void WINAPI CXXX::OnSocketEventCallBack)(LPVOID pWnd,ISNSTCPClient *pSocket,const CString &strIP,ISNSTCPClient::SOCKET_EVENT_ID uEventID))
{
}
uj5u.com熱心網友回復:
發訊息,回呼都可以。uj5u.com熱心網友回復:
主程式傳遞一個函式指標進去給DLL,然后DLL中呼叫這個函式就實作了回呼主程式uj5u.com熱心網友回復:
回呼函式是一個不錯的方案dll有一個函式setCallBack,用于設定回呼,
你的主程式初始化時,呼叫dll的setCallBack,將你主程式的函式A設定給DLL
DLL在合適時候,呼叫你的主程式函式A
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/86843.html
標籤:基礎類
上一篇:MFC結構體指標使用賦值問題
