精華區beta Programming 關於我們 聯絡資訊
※ 引述《Mute@bbs.ee.ntu.edu.tw (123456780)》之銘言: > 那麼, 我們寫給 qsort 用的東西也算是囉... 我想... 完全正確。;) > 還有, 一般我們的 window proc 都算是 callback, > 而 DefWindowProc() 算不算? > 我對它的宣告沒有查的很清楚, 不不, 它不算, DefWindowProc() 是十分正常的由 USER(32).DLL 匯出的 WinAPI 之一而已, 與 callback 扯上的唯一關係就是, 我們會在自己的 window procedure 呼叫 DefWindowProc(), 而 window procedure 屬於 callback functions. > 只是我想到我們會在自己的 window proc 中呼叫它, > 而如果我們可以在 Register Window Class 的時候指定要用 DefWindowProc, > 那它就算是被系統呼叫的函式囉; 對, 把系統提供的函式以 callback 的方式使用。 說得更清楚一點: callback 並不是函式的型態或種類, 它指的是函式的使用方式。 > 這樣一個東西算是 callback 的話, > 那 callback 的呼叫者看起來就沒有限制了. > 我想, 如果可以把 window proc 直接拿來呼叫, > 那好像可以代替 SendMessage() ? 某些情況下是的。 但經由 SendMessage() 將訊息傳入 window procedure 的動作不啻是直接呼叫而已, 還經過 message loop, keyboard messages translating 等等。另外, SendMessage() 還可處理 synchronization 及跨 process 等等, 都是直接呼叫 window procedure 是辦不到的。 > 只是不知道如果送進這個 window procedure 的 HWND > 其所屬的視窗如果與這個 window proc 不合的話, > 結果會不會很有趣... 這就跟拿 SendMessage(), 將要傳給 hwnd1 的 message 誤傳給 hwnd2 而已, 應該 不算是太有趣的課題 :Q 一般來說除了運作不正常外, 大概不會有什麼特別狀況發生。 -- 現在人做事要是不夠快,就會覺得浪費時間; 但是他們又不知如何善用時間,只好找其他消遣消磨時間。 - 弗洛姆 -- ※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw> ◆ From: a-181.RAS.NCTU.edu.tw