在學(xué)習(xí)C++的時候相信大家都知道VC回調(diào)函數(shù)這個工具,但是對于如何使用VC回調(diào)函數(shù)卻不是每個人都了解的,那么今天我們就針對這個問題去看看VC回調(diào)函數(shù)的使用方法吧。
回調(diào)函數(shù)說白了就是事件響應(yīng)程序,Windows的每個消息可以理解為一個事件,事件的響應(yīng)代碼要由用戶自己來定義。用戶定義了事件響應(yīng)的代碼,但還要Windows知道這段代碼的位置(要不然Windows就不知道如何去調(diào)用,這也沒有用),于是用戶需要將回調(diào)函數(shù)的指針告訴Windows,最典型的例子是在窗口類的結(jié)構(gòu)(WNDCLASS)中給lpfnWndProc分量賦回調(diào)函數(shù)指針值。
回調(diào)函數(shù)的參數(shù)格式是由回調(diào)函數(shù)的調(diào)用者(一般是Windows)來定義的,而回調(diào)函數(shù)的實現(xiàn)者必須遵循這種格式。Windows程序是以事件驅(qū)動模型為基礎(chǔ)的,這就必然要用到回調(diào)函數(shù)這種機制。
要透徹了解回調(diào)函數(shù),多看看SDK Samples。而MFC中的消息映射機制已經(jīng)將窗口消息響應(yīng)的回調(diào)函數(shù)隱藏起來了,這也符合C++的編程思想,回調(diào)函數(shù)終究是一種全局函數(shù),它不能在類中實現(xiàn),而消息映射機制的目的是使消息響應(yīng)的代碼最終封裝在窗口類(CWnd類的子類)中。
如果有時間,不妨看看MESSAGE_MAP宏,消息映射是回調(diào)函數(shù),只是這種回調(diào)函數(shù)的用法不同而已。普通的回調(diào)函數(shù)是要你提供地址,傳進某個函數(shù),由它去調(diào)用;而消息映射函數(shù),卻是由你定義函數(shù),由MESSAGE_MAP宏去取得地址,并實現(xiàn)它的調(diào)用。
回調(diào)函數(shù)是一個程序員不能顯式調(diào)用的函數(shù);通過將回調(diào)函數(shù)的地址傳給調(diào)用者從而實現(xiàn)調(diào)用。要實現(xiàn)回調(diào),必須首先定義函數(shù)指針。盡管定義的語法有點不可思議,但如果你熟悉函數(shù)聲明的一般方法,便會發(fā)現(xiàn)函數(shù)指針的聲明與函數(shù)聲明非常類似。
CODE:
?
?
如何使用VC回調(diào)函數(shù)?上文中小編就為大家介紹了使用VC回調(diào)函數(shù)的方法,希望對大家的學(xué)習(xí)C語言有所幫助,接下來的路就看你自己摸索了!
新聞熱點
疑難解答
圖片精選