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;
相关文章推荐
- Delphi的字符串与16进制的相互转换函数的汇编代码
- delphi的取整函数round、trunc、ceil和floor
- Delphi判断文件是否正在被使用(CreateFile也可以只是为了读取数据,而不是创建)
- Delphi 的运算符列表,运算符及优先级表格 good
- Delphi编程中资源文件的应用
- Delphi 指针大全(光看不练是学不会的)
- delphi编程里的bool跟boolean类型有什么区别
- * Delphi编程时候诡异地出现ORA-00937错误,记录解决它的思路和方法
- python4delphi import lxml pandas 出错的小结
- Delphi 和 DFM
- win8(x64)下,重新安装delphi 2007时出现“Invalid Serial Number”,如何解决?
- delphi中文件以及线程操作基础
- [备忘]Delphi 7 编译软件申请管理员权限
- Delphi 在多线程中会应用到的读写锁-“多读一写”同步器-TMultiReadExclusiveWriteSynchronizer
- (转载)Delphi TStringList的用法
- Delphi 连接SQLserver
- Delphi 7连接MySql 5.5.15
- python4delphi 设置syspath
- Delphi 指针大全
- Delphi 异常抛出与捕获