请教vb3.0中WindowsFromPoint()API函数的使用法

ly2099 2000-02-22 10:23:00
vb6.0中WindowFromPoint(ByVal xPoint As Long,ByVal yPoint As Long)
xPoint,yPoint表示屏幕的坐标,但在vb3.0中
WindowFromPoint(ByVal ptScreen As Any), 我想请教这个ptScreen是如何表示
屏幕的坐标的,该是个什么数?
...全文
196 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Un1 2000-02-22
  • 打赏
  • 举报
回复
ptScreen 应该是一个POINT结构:

Type POINT
X AS Long
Y AS Long
End Type

Dim ps as POINT
WindowFromPoint ps

另外我想申明应是
WindowFromPoint(ptScreen As Any)
吧! 因为Any不可以ByVal
dongdong 2000-02-22
  • 打赏
  • 举报
回复
下面是我在MSDN上摘录的有关ANY的参考,这里PTSCREEN应当是POINT类型(即由X,Y组成的复合类型)。

某些 DLL 过程的同一个参数能够接受多种数据类型。如果需要传递多种类型的数据,可以将参数声明为 As Any,从而取消类型限制。

例如,根据需要,下面的声明中的第三个参数 (lppt As Any) 既可以传递一个 POINT 结构的数组,也可以传递一个 RECT 结构:

Declare Function MapWindowPoints Lib "user32" Alias _
"MapWindowPoints" (ByVal hwndFrom As Long, _
ByVal hwndTo As Long, lppt As Any, _
ByVal cPoints As Long) As Long

As Any 子句提供了一定的灵活性,但是,由于它不进行任何的类型检查,风险也随之增加。如果不进行类型检查,那么在调用过程时用错类型的可能性增加,这可能导致各种问题,包括应用程序的失败。在使用 As Any 子句时,必须仔细检查所有参数的类型。

在消除了类型限制以后,Visual Basic 假定参数以传引用方式传递。在实际调用过程时,如果要使用传值方式,可以加入 ByVal。字符串将以传值方式传递,因此传递的是指向字符串的指针,而不是指向指针的指针。

1,485

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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