引用windows和winapi.windows不一样吗

baody8 2018-09-20 06:47:52
真的非常不解,这两种方式不是一样的吗.
如果直接引用windows的话,调用Wndows.ScreenToClient()参数是HWND和TPoint
反之如果引用Winapi.windows的话,调用Wndows.ScreenToClient()参数只是TPoint
...全文
374 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
baody8 2018-09-21
  • 打赏
  • 举报
回复
我意思是实际过程中,
uses Windows
生效
uses Winapi.Windows
不生效了
  • 打赏
  • 举报
回复
正常来说在uses Winapi.windows的情况下,使用Windows.ScreenToClient()这种形式是不行的,在Delphi的名字空间引用规则中,一个标识符要么省略namespace,要么使用完整的namespace,而不能使用部分namespace。
在uses Winapi.windows的情况下,Windows.ScreenToClient()能通过,应该是引用的其他单元,在uses列表中位于winapi.windows右边的某个单元,其中有windows定义。
hj8090 2018-09-21
  • 打赏
  • 举报
回复
uses Windows
Wndows.ScreenToClient()

uses Winapi.Windows
Winapi.Wndows.ScreenToClient()
这个条件下使用Wndows.ScreenToClient()编译通不过的哦

不要前缀,ScreenToClient -->TControl.ScreenToClient
npkaida 2018-09-20
  • 打赏
  • 举报
回复
如果引用 windows,调用Wndows.ScreenToClient(),实际调用的是 Windows API(定义在 Winapi.Windows 中):
function ScreenToClient(hWnd: HWND; var lpPoint: TPoint): BOOL; stdcall;
如果不引用 windows,调用Wndows.ScreenToClient(),实际调用的是 Delphi 自定义的函数(定义在 VCL.Controls):
function TControl.ScreenToClient(const Point: TPoint): TPoint;

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧