我剛纔注意到,我們很(非常)舊自定義控件(不是由我創建)中的一個具有此WM_SIZE
消息處理程序(我用了一個TPanel
這裏演示):當消息處理程序不調用繼承時會發生什麼?
TPanel = class(ExtCtrls.TPanel)
private
procedure WMSize(var Message: TWMSize); message WM_SIZE;
end;
procedure TPanel.WMSize(var Message: TWMSize);
begin
DoSomethingWhenResized;
end;
的inherited
不被稱爲。 DoSomethingWhenResized
創建一個緩存的漸變位圖,用於控件的繪製過程。
每一件事情「看起來」和表現很好,但我只是想知道什麼事情都可能先調用inherited
處理程序出問題通過不?
取決於。發生的唯一情況是不會調用此消息處理程序的祖先代碼。如果你自己處理消息,則不需要調用'inherited'。 – Victoria