问题 2 已解决,贴出来庆祝一下
大家可以专心帮我解决问题1了)
使用一个TWinControl的OnMouseDown和OnMouseUp事件,Down时:
procedure TForm1.Button5MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
hico := GetCursor;
SetCursor(hI);
end;
// Up时
procedure TForm1.Button5MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var p: TPoint;
t, pw: THandle;
b: Boolean;
buf: array[0..256] of char;
begin
Memo1.Clear;
p.X := X;
p.Y := Y;
Windows.ClientToScreen(Button5.Handle , p);
SetCursor( hico );
t := WindowFromPoint(p);
Memo1.Lines.Add('Handle is :'+IntToStr(t));
b := IsWindow(t);
if not b then Exit;
GetWindowText(t, @buf[0], 255);
Memo1.Lines.Add('Window Text is: ' + Buf);
GetClassName(t, @buf[0], 255);
Memo1.Lines.Add('Class Name is: ' + Buf);
Memo1.Lines.Add('--');
pw := GetParent(t);
while pw<>0 do begin
GetWindowText(pw, @buf[0], 255);
Memo1.Lines.Add('Perant Window Text is: ' + Buf);
GetClassName(pw, @buf[0], 255);
Memo1.Lines.Add('Perant Class Name is: ' + Buf);
Memo1.Lines.Add('--');
pw := GetParent(pw);
end;
end;
其中 var hI: HCURSOR;在Form.OnCreate时 hI := LoadCursor(hInstance, 'SIGN');
(光标用ImageEdit加到res文件中),关闭窗口时DestroyCursor(hI);释放。
hico: HCURSOR;用来记录旧关标