一天前,我开始重写我的一个旧组件,并决定提高其可读性.我的组件是一个典型的TWinControl被覆盖WndProc来处理我自己的很多消息.每条消息都有很多代码,我阅读代码成了一个问题.
因此,在寻找改进内部代码的解决方案时WndProc,我已经在程序中组织了这些大量代码,每次在适当的消息传递时调用WndProc.这就是它现在的样子:
procedure TMyControl.WndProc(var Message: TMessage);
begin
case Message.Msg of
WM_WINDOWPOSCHANGED:
WMWINDOWPOSCHANGED(Message);
WM_DESTROY:
WMDESTROY(Message);
WM_STYLECHANGED:
WMSTYLECHANGED(Message);
// lots of the same procedures for Windows messages
// ...
MM_FOLDER_CHANGED:
MMFOLDERCHANGED(Message);
MM_DIRECTORY_CHANGED:
MMDIRECTORYCHANGED(Message);
// lots of the same procedures for my own messages
// ...
else
Inherited WndProc(Message);
end;
end;
Run Code Online (Sandbox Code Playgroud)
不幸的是Inherited,这些程序中的单词不再起作用了!
重要提示:在某些WM_XXX消息中,我没有调用Inherited自己处理此类消息,因此下面显示的代码将分解我实现某些功能的努力.
procedure TMyControl.WndProc(var Message: TMessage);
begin
Inherited WndProc(Message);
case Message.Msg of
WM_WINDOWPOSCHANGED:
WMWINDOWPOSCHANGED(Message);
// further messages
// ... …Run Code Online (Sandbox Code Playgroud)