如题
解决方案 »
- 发布电子表格控件2.0版,可以免费使用。
- 仓库管理软件源码,本人愿意买,谢谢,那位好心人,能和我联系
- 请问 shellexecute?
- [求助] 请给位大虾帮忙!
- 想开发一个医学影像文档管理系统,请指点
- 在DELPHI中,与VB类似的DoEvents函数是什么?
- 窗体入坞后的热键失效问题如何解决?
- 已经完成了IE右键得到URL的DLL,但是DLL如何通知EXE?
- 请问有没有delphi7可用的类似i7风格的tab控件?
- 请教关于Delphi 回调函数的编写问题
- 请问如何才能在程序里进行拨号并断开连接
- 我以前在delphi写代码时候,左边有1条条,鼠标点1下,f9程序就运行到光标处,现在找不到它了
TMyProc = function(A, B: Integer): Boolean;function IsLower(X, Y: Integer): Boolean;
begin
Result := X < Y;
end;function IsEqual(X, Y: Integer): Boolean;
begin
Result := X = Y;
end;function TestCallback(A, B: Integer; P1, P2: TMyProc): string;
begin
if P1(A, B) then
Result := 'P1 Pass'
else if P2(A, B) then
Result := 'P2 Pass'
else
Result := 'None Pass';
end;function GetString(M, N: Integer): string;
begin
Result := TestCallback(M, N, @IsLower, @IsEqual);
end;procedure Test;
begin
ShowMessage(GetString(1, 2));
ShowMessage(GetString(2, 2));
ShowMessage(GetString(3, 2));
end;也许太罗嗦了,但应该很清晰。
建议楼主再瞧瞧TTreeView中的自定义排序例子,那是更有实际意义的应用。
比如:要想得到当前显示运行的所有窗口,需要使用enumwindows函数,来指定回调函数,如下:
BOOL EnumWindows( WNDENUMPROC lpEnumFunc, // pointer to callback function
LPARAM lParam // application-defined value
);
第一个参数指定了回调函数的地址,这个函数由你自己编写,由WINDOWS来调用它,在这个函数中你就可以得到所有的窗口句柄:
BOOL CALLBACK EnumWindowsProc( HWND hwnd, // handle to parent window
LPARAM lParam // application-defined value
);
你的回调函数不能是类的函数。
举例,下面代码可以取得当前系统窗口的句柄及文本。function Enumwindowscallback(handle:integer;Lparam:integer):boolean;stdcall;
var s:string;
a:integer;
begin
setlength(s,100);
a:=getwindowtext(handle,@s[1],90);
if a>0 then
form1.ListBox1.items.add(format('%8d %s',[handle,s]));
result:=true;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
enumwindows(@Enumwindowscallback,0);
end;