您的位置:首页 > 编程语言 > Delphi

Delphi调用WINAPI时到底应该是指针还是结构体(注意是Delphi变量本身就是指针)

2015-08-30 04:11 483 查看
看MSDN,GetWindowRect的说明如下:

BOOL WINAPI GetWindowRect(
_In_  HWND   hWnd,
_Out_ LPRECT lpRect // 注意,没*号指针
);

BOOL WINAPI GetWindowPlacement(
_In_    HWND            hWnd,
_Inout_ WINDOWPLACEMENT *lpwndpl  // 注意,有*号指针,这里可能已经是双重指针
);

但是实际调用直接传递Rect结构体,而不是指针:


procedure TWinControl.UpdateBounds;
var
ParentHandle: HWnd; // 4字节
Rect: TRect; // 16字节
WindowPlacement: TWindowPlacement; // 44字节
begin
// 非最小化状态下,取得Win控件显示区域
if IsIconic(FHandle) then // API
begin
WindowPlacement.Length := SizeOf(WindowPlacement);
GetWindowPlacement(FHandle, @WindowPlacement); // API,传递的是指针
Rect := WindowPlacement.rcNormalPosition;
end else
GetWindowRect(FHandle, Rect); // API,取得客户区,注意第二个参数是结构体本身,而不是结构体指针,在Delphi里直接使用
end;



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: