end;
其中,oldbrowseproc是在implementation部分声明的变量:
var
oldbrowseproc : twindowproc = nil;
而newbrowseproc和adjustdlg都是自己编写的函数,它们都比较长,我将分段讲述它们的内容。
先来看adjustdlg的工作。它的任务是向对话框中添加一个组合框(combo box),并且向其中添加几个项目。听起来很简单,不过有许多琐碎的工作必须要做。因为我们是在对系统定义的窗口进行subclass,所以vcl在这里基本上帮不上什么忙:我们必须大量使用api。
procedure adjustdlg(awnd:hwnd);
var
wnd : hwnd;
wndcombo : hwnd;
rc : trect;
found : boolean;
classname : array[0..80] of char;
saverect : trect;
oldstyle : integer;
begin
// find the treeview first
wnd := getwindow(awnd, gw_child);
found := false;
while iswindow(wnd) do begin