子類處理 當你一最大限度利用了VB所給你的並且還想知道更多的東西,或只是想更多地了解你自己的窗口,你將會發現子類處理的優勢. 子類處理是指用一個新的窗口函數來取代當前活動窗口函數.這個用戶自定義函數能處理任何需要的消息,並能調用原來的窗口函數,它將在原來的窗口函數之前收到各種消息.但原來的那個窗口處理函數依然存在,並沒有消失.如果你不想處理某條消息,你應該讓原來的窗口函數去處理它. 子類處理是通過調用SetWindowLong函數實現的,該函數將改變指定窗口的特殊屬性.下面是它的聲明: Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA"(ByVal hwnd As Long, ByVal nIndex As Long,ByVal dwNewLong As Long) As Long 第一個參數代表要進行子類處理的窗口,第二個參數應該是GWL_WNDPROC(-4),第三個參數是新的窗口函數的地址.參見回調和窗口函數一節. 此函數將在窗口取得焦點,發生事件,或其他情況下(如其他進程改變了系統的某些參數)被隨時調用. 如果發生錯誤SetWindowLong函數將返回0,否則將返回原來的窗口函數的地址.這個地址特別重要,你應該把它保存在一個變量中或其他地方.當你不處理某些消息時(實際上,你可能只處理不到1%的消息,其他的都將由原窗口函數處理),調用原來的窗口函數就需要該地址.