下面的程序可以搞定: function GetParentWindowNameAt ( X, Y : integer ) : string; var P : TPoint; W : TWinControl; begin P.X := X; P.Y := Y; W := FindVCLWindow( P ); if( nil <> W ) then begin Result := W.Name; end else begin Result := ''; end; end;
procedure TForm1.Label1MouseMove(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ReleaseCapture; SendMessage(Handle,WM_SYSCOMMAND,$f012,0); end
下面这个怎么用啊??? function GetParentWindowNameAt ( X, Y : integer ) : string; var P : TPoint; W : TWinControl; begin P.X := X; P.Y := Y; W := FindVCLWindow( P ); if( nil <> W ) then begin Result := W.Name; end else begin Result := ''; end; end;
2:句柄是整数型,edit1.text:=inttostr(handle);
3:利用api函数
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
const
sc_dragmove = $f012;
begin
releasecapture;
twincontrol(application.mainform).perform(wm_syscommand,sc_dragmove, 0);
end;
A2:Windows可视对象唯一标识,如果这个都搞不懂,就不要写Win32的程序了
A3: 可以的
在Form1的private里加入申明
procedure wmnchittest(var msg:twmnchittest);message WM_NCHITTEST;procedure TForm1.wmnchittest(var msg:twmnchittest)
var
P:TPoint;
begin
inherited;
P.X := msg.XPos;
P.Y := msg.YPos;
P := ScreenToClient(P);
//可以在这里利用P判断你点击鼠标的位置
msg.Result := htCaption;//拖动窗体
end;
2. 句柄就相当于一个编号号一样,每一个窗口有一个编号, 这样系统才能识别出每一个窗口, 才能管理每一个窗口,IntToStr(*)
3. 工具栏的背景是可以改的,调用API就行了
function GetParentWindowNameAt ( X, Y : integer ) : string;
var P : TPoint; W : TWinControl;
begin
P.X := X;
P.Y := Y;
W := FindVCLWindow( P );
if( nil <> W ) then
begin
Result := W.Name;
end
else
begin
Result := '';
end;
end;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
SendMessage(Handle,WM_SYSCOMMAND,$f012,0);
end
function GetParentWindowNameAt ( X, Y : integer ) : string;
var P : TPoint; W : TWinControl;
begin
P.X := X;
P.Y := Y;
W := FindVCLWindow( P );
if( nil <> W ) then
begin
Result := W.Name;
end
else
begin
Result := '';
end;
end;