回撥函式快速使用 (轉)
我們經常在C++設計時透過使用回撥可以使有些應用(如定時器事件回撥處理、用回撥函式記錄某操作進度等)變得非常方便和符合邏輯,那麼它的內在機制如何呢,怎麼定義呢?它和其它函式(比如鉤子函式)有何不同呢?這裡結合自己的使用經歷做一個簡單的介紹。
使用回撥函式實際上就是在某個函式(通常是函式)時,將自己的一個函式(這個函式為回撥函式)的地址作為引數傳遞給那個函式。而那個函式在需要的時候,利用傳遞的地址呼叫回撥函式,這時你可以利用這個機會在回撥函式中處理訊息或完成一定的操作。至於如何定義回撥函式,跟具體使用的API函式有關,一般在幫助中有說明回撥函式的引數和返回值等。C++中一般要求在回撥函式前加CALLBACK(相當於FAR PASCAL),這主要是說明該函式的呼叫方式。
至於鉤子函式,只是回撥函式的一個特例。習慣上把與SetHookEx函式一起使用的回撥函式稱為鉤子函式。也有人把利用VirtualQueryEx的函式稱為鉤子函式,不過這種叫法不太流行。
也可以這樣,更容易理解:回撥函式就好像是一箇中斷處理函式,在符合你設定的條件時自動呼叫。為此,你需要做三件事:
1. 宣告;
2. 定義;
3. 設定觸發條件,就是在你的函式中把你的回撥函式名稱轉化為地址作為一個引數,以便於系統呼叫。
宣告和定義時應注意:回撥函式由系統呼叫,所以可以認為它屬於WINDOWS系統,不要把它當作你的某個類的成員函式。
這是我的粗淺認識,望指正。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-984973/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 回撥函式函式
- JavaScript 回撥函式JavaScript函式
- JavaScript回撥函式JavaScript函式
- JS—回撥函式JS函式
- 動畫回撥函式動畫函式
- java回撥函式Java函式
- 回撥函式(CallBack)函式
- [JS]回撥函式和回撥地獄JS函式
- 回撥函式,求積函式函式
- 函式指標之回撥函式和轉移表函式指標
- C++回撥函式(callback)的使用C++函式
- 回撥函式 與 函式閉包函式
- 函式指標&回撥函式Callback函式指標
- 回撥函式的作用函式
- TLS回撥函式(Note)TLS函式
- java 回撥函式示例Java函式
- Python回撥函式Python函式
- android回撥函式Android函式
- 函式回撥(C++)函式C++
- 理解javascript中的回撥函式(callback)【轉】JavaScript函式
- 回撥函式、訊息和事件例程 (轉)函式事件
- JS閉包函式和回撥函式JS函式
- 宣告函式指標並實現回撥 (轉)函式指標
- C++回撥函式 用法C++函式
- 回撥函式的理解(一)函式
- Python/OpenCV:回撥函式PythonOpenCV函式
- java回撥函式機制Java函式
- JS之回撥函式(callback)JS函式
- js中的回撥函式JS函式
- js函式回撥錯誤JS函式
- c++回撥函式(下)C++函式
- Java回撥函式的理解Java函式
- C++回撥函式示例C++函式
- c#之回撥函式C#函式
- java回撥函式-非同步回撥-簡明講解Java函式非同步
- C語言函式指標與回撥函式使用方法C語言函式指標
- 函式指標的重要用途——回撥函式函式指標
- 深入理解 JavaScript 回撥函式JavaScript函式