討論區快速選單
知識庫快速選單
討論區最近新進100則主題 政府補助!學嵌入式+物聯網 軟體開發過程中有哪些資安漏洞?
[ 回上頁 ] [ 討論區發言規則 ]
何謂CALLBACK
更改我的閱讀文章字型大小
作者 : natibm(Nat)
[ 貼文 42 | 人氣 9758 | 評價 100 | 評價/貼文 2.38 | 送出評價 7 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/8/9 下午 07:54:39
我在MSDN上找到解釋,但還是不太懂它的意思,
使用callback function呼叫DLL,但一般直接呼叫DLL有何差別
從主程式中去呼叫一個function,而該function回傳其實作的方法
那該function就是一個callback function嗎???
作者 : johnny6740(牧童哥) VC++優秀好手驅動程式優秀好手Assembly優秀好手貼文超過500則人氣指數超過10000點
[ 貼文 791 | 人氣 24021 | 評價 3770 | 評價/貼文 4.77 | 送出評價 31 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/8/10 上午 10:55:21
所以 CALLBACK function 是指你寫好的程式,提供給 OS 呼叫的。
例如 Timer Callback function,就是當 Timer 計時到達你設定的時間時,就會呼叫你的 function.

一般 Callback function 會有一個註冊的動作,這樣 OS 在事件產生時,才知道要呼叫那一個 function
作者 : natibm(Nat)
[ 貼文 42 | 人氣 9758 | 評價 100 | 評價/貼文 2.38 | 送出評價 7 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/8/10 下午 11:15:58
有點懂,又不太懂,
那為何callback function適合重覆的呼叫,如enumWindows
那和遞迴呼叫又有啥不同??

我實在太笨啦,可以舉個實例嗎????
作者 : shing819(Clier) VC++曠世奇才貼文超過1000則人氣指數超過30000點
[ 貼文 1740 | 人氣 40353 | 評價 8630 | 評價/貼文 4.96 | 送出評價 84 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人natibm註記此篇回應為很有道理 2006/8/10 下午 11:56:49

>有點懂,又不太懂,
>那為何callback function適合重覆的呼叫,如enumWindows
>那和遞迴呼叫又有啥不同??
>
>我實在太笨啦,可以舉個實例嗎????


call-back function 給作業呼叫用的,就是作業系統會自己傳值
給 call-back function 使用.

Google or MSDN 找個範例,自己 Debug 就知道原理了.





作者 : johnny6740(牧童哥) VC++優秀好手驅動程式優秀好手Assembly優秀好手貼文超過500則人氣指數超過10000點
[ 貼文 791 | 人氣 24021 | 評價 3770 | 評價/貼文 4.77 | 送出評價 31 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人natibm註記此篇回應為最佳解答 2006/8/11 上午 10:30:28
以你說的 enumWindows 為例,這個函式就是我前面說的註冊的動作,也就是註冊你自己的 enumWindowsProc

BOOL enumWindows(
  WNDenumPROC lpenumFunc, // pointer to callback function
  LPARAM lParam // application-defined value
);

這個函式是用來搜尋所有在 Top-level 的視窗,每當它找到一個視窗,就會呼叫你的 Callback function,因為你的程式不會知道目前 Desktop 上有多少視窗,只有 OS 才會知道,所以你必須透過這樣的機制,跟 OS 合作來處理你要的步驟

至於遞迴呼叫跟這個好像扯不上關係,遞迴呼叫是將問題分解為更小的問題,然後呼叫本身的函式來處理,直到結束條件產生為止。以階層為例

n! = n * (n-1)!
0! = 1

所以計算 n! 的函式可以用下列的方式寫

int order(int xorder)
{
    if (xorder == 0)
    {
     return 1;
    }
    else
{
     return (xorder * order(xorder-1));
    }
}
作者 : shing819(Clier) VC++曠世奇才貼文超過1000則人氣指數超過30000點
[ 貼文 1740 | 人氣 40353 | 評價 8630 | 評價/貼文 4.96 | 送出評價 84 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/8/11 下午 08:41:42

鼓勵一下,解說的不錯,如果樓主還看不懂?請將 SDK 基礎打好,
這書本都有.
作者 : johnny6740(牧童哥) VC++優秀好手驅動程式優秀好手Assembly優秀好手貼文超過500則人氣指數超過10000點
[ 貼文 791 | 人氣 24021 | 評價 3770 | 評價/貼文 4.77 | 送出評價 31 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/8/14 上午 09:27:13
謝謝前輩的鼓勵
作者 : shing819(Clier) VC++曠世奇才貼文超過1000則人氣指數超過30000點
[ 貼文 1740 | 人氣 40353 | 評價 8630 | 評價/貼文 4.96 | 送出評價 84 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/8/14 下午 05:25:40

>謝謝前輩的鼓勵

查了留言記錄 青衫 Raymond 你,都是2004 才來到這區,
我 2002 就來了,那時候是問有什麼 MFC 好書? 結果白問
了,後來工作需要用 VB6 開發程式,MFC 再也沒碰過,最近
1年多才又碰,依先到的來劃分我算你們3人的前輩,依 MFC
接觸時間我算是你們3人的後輩,互相鼓勵,最近要忙著跟客
戶周旋,浪費了10多天時間,真是不划算.
作者 : argus(中年人)
[ 貼文 156 | 人氣 31 | 評價 450 | 評價/貼文 2.88 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/8/17 上午 09:43:32
建議先把C Library "qsort"的使用方法搞懂
就比較好理解了
作者 : jonnyyao(Johnny)
[ 貼文 2 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/10/10 上午 12:18:16
CALLBACK function 廣義來說, 就是 function pointer 的傳遞而已,
例如你把某個 function pointer 傳給某個 function A,
這個 A function 就可以利用所傳進來的 function pointer 來呼叫 function A 了,

這就是 function CALLBACK 的一個應用範例....
作者 : jonnyyao(Johnny)
[ 貼文 2 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/10/10 上午 12:20:37
CALLBACK function 廣義來說, 就是 function pointer 的傳遞而已,
例如你把某個 function pointer 傳給某個 function A,
這個 A function 就可以利用所傳進來的 function pointer 來呼叫 function A 了,

這就是 function CALLBACK 的一個應用範例....
作者 : fly12316(fly)
[ 貼文 18 | 人氣 1108 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/2/21 下午 05:20:11
我也是初學者, 拜讀各位大師所說的, 那麼下面這個例子也是個 call back function 囉?
DDX_Control( pDX, IDC_PIC_BG, *m_pPicBG );
其中 m_pPigBG 是我自訂的 function
作者 : fly12316(fly)
[ 貼文 18 | 人氣 1108 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/2/21 下午 05:20:27
我也是初學者, 拜讀各位大師所說的, 那麼下面這個例子也是個 call back function 囉?
DDX_Control( pDX, IDC_PIC_BG, *m_pPicBG );
其中 m_pPigBG 是我自訂的 function
作者 : sflam(Raymond)討論區板主 Visual C++ .NET卓越專家VC++一代宗師新手入門優秀好手資訊類作業求救頂尖高手C++一代宗師貼文超過4000則
[ 貼文 4945 | 人氣 9172 | 評價 32290 | 評價/貼文 6.53 | 送出評價 142 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/2/21 下午 08:23:46
>我也是初學者, 拜讀各位大師所說的, 那麼下面這個例子也是個 call back function 囉?

請先參考:
  http://en.wikipedia.org/wiki/Callback_(computer_science)

>DDX_Control( pDX, IDC_PIC_BG, *m_pPicBG );
>其中 m_pPigBG 是我自訂的 function

m_pPicBG 是個 function?
 板主 : 青衫 , Raymond
 > Visual C++ - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Visual C++ - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Visual C++
1 青衫 11070 
2 Raymond 10090 
3 Clier 7630 
4 小約翰 2500 
5 Cog 2030 
6 coco 1870 
7 aming 1410 
8 牧童哥 1400 
9 r2109 1380 
10 Akira 1350 
Visual C++
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.1884766