子類處理簡介
子類處理,熟悉API函式的VB愛好者們一定不會感到陌生,它又稱為“子類化”或“子類派生”,是一種功能強大的技術。在套用它之前,我們需要先對之原理進行簡單的了解:在WINDOWS中,每一個視窗都有一個默認的視窗函式,它的作用是對傳送到視窗的訊息進行處理。
子類處理套用
在VB中,這個默認的視窗函式不是直接公開的,它提供了對VB中的事件進行處理的代碼,當接受到一條WINDOWS訊息時,這個視窗函式就會回響並產生一個VB事件,換言之,這個視窗函式隱藏了訊息處理的細節,用一個VB事件來回響一條WINDOWS訊息。然而,VB沒有提供對所有WINDOWS訊息的支持,許多WINDOWS訊息都不會生成一個VB事件,但這不能說是VB的缺點,恰是VB的優點,放棄對那些程式設計師並不常用的訊息的支持,在功能強大和性能穩定之間做了很好的平衡。而且,幸運的是,儘管這個幕後主宰是默認的,但它不是唯一的,我們完全可以用自己定製的一個視窗函式替代它,並保留指向默認視窗函式的指針,當一個訊息到達視窗時,自製的視窗函式會攔截它並進行識別處理,對不能識別或不需進行特別處理的訊息,就通過指向默認視窗函式的指針傳遞給默認的視窗函式進行處理,這樣便擴充了默認視窗函式的功能。這種用定製的視窗函式代替默認的視窗函式,攔截並處理到達視窗的訊息的技術,我們就稱之為“子類處理”,定製的函式我們稱之為“回調函式”。子類處理的方法主要有三種:忽略訊息並傳遞給默認的視窗函式;截獲訊息,執行特定操作後,傳遞給默認的視窗函式或傳遞給默認的視窗函式處理後,對返回值進行控制;截獲訊息,執行特定操作並禁止默認的視窗函式對之進行處理。