递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
12
返回列表 发新帖
楼主: 创世魂
打印 上一主题 下一主题

[视窗] 【WindowsAPI封装】WindowFromPoint(取坐标窗口句柄)方法

[复制链接]

23

主题

260

帖子

1466

积分

金牌会员

Rank: 6Rank: 6

积分
1466
11#
发表于 7 小时前 | 只看该作者
火山编程(中文编程)封装 WindowFromPoint 模块教程
以下是完整的「取坐标窗口句柄」模块封装实现,基于火山编程的中文语法,适配 Windows API 规范,包含结构体定义、API 声明、封装函数及使用说明。
一、模块整体结构
新建火山模块(建议命名:窗口坐标操作模块),模块内包含:
Windows POINT 结构体定义(对应 API 坐标参数)
WindowFromPoint API 声明(调用 user32.dll 底层接口)
中文封装函数「取坐标窗口句柄」(简化调用,适配火山语法)
二、完整模块代码
plaintext
' ===================== 模块声明区 =====================
' 1. 定义 Windows POINT 结构体(对应屏幕坐标点)
结构体 POINT
    长整数型 x  ' 横坐标(屏幕坐标)
    长整数型 y  ' 纵坐标(屏幕坐标)
结束 结构体

' 2. 声明 WindowFromPoint API 函数(user32.dll)
DLL命令 WindowFromPoint, 整数型, "user32.dll", "WindowFromPoint", 公开, 根据屏幕坐标获取窗口句柄
    参数 pt, POINT, 传址, , 包含屏幕坐标的POINT结构体

' 3. 中文封装函数(简化调用,无需手动构造结构体)
函数 取坐标窗口句柄, 整数型, 公开, 根据屏幕坐标获取对应窗口的句柄
    参数 屏幕横坐标, 长整数型, , 要查询的屏幕横坐标(像素)
    参数 屏幕纵坐标, 长整数型, , 要查询的屏幕纵坐标(像素)
    局部变量 坐标点, POINT  ' 构造API所需的坐标结构体
   
    ' 给结构体赋值
    坐标点.x = 屏幕横坐标
    坐标点.y = 屏幕纵坐标
   
    ' 调用API并返回结果
    返回 WindowFromPoint(坐标点)
结束 函数
三、关键说明
数据类型对应:
Windows API 的 LONG 对应火山的「长整数型」
Windows API 的 HWND(窗口句柄)对应火山的「整数型」
POINT 结构体是 API 强制要求的参数格式,必须传址调用。
坐标类型:
该函数接收的是「屏幕绝对坐标」(不是窗口客户区坐标),如果需要使用客户区坐标,需先通过 ClientToScreen API 转换。
返回值说明:
返回非 0 数值:对应坐标位置的窗口句柄
返回 0:坐标位置无可见窗口(如桌面空白处)
四、使用示例(在火山窗口程序中调用)
plaintext
' 示例:获取鼠标当前位置的窗口句柄
子程序 按钮_获取句柄_被单击
    局部变量 鼠标X, 长整数型
    局部变量 鼠标Y, 长整数型
    局部变量 目标句柄, 整数型
   
    ' 获取鼠标当前屏幕坐标
    获取鼠标位置(鼠标X, 鼠标Y)
   
    ' 调用封装的函数获取窗口句柄
    目标句柄 = 取坐标窗口句柄(鼠标X, 鼠标Y)
   
    ' 显示结果
    信息框("鼠标位置的窗口句柄:" + 到文本(目标句柄), "查询结果", 0)
结束 子程序

' 辅助:获取鼠标当前屏幕坐标(火山内置函数)
DLL命令 获取鼠标位置, 逻辑型, "user32.dll", "GetCursorPos", 公开
    参数 lpPoint, POINT, 传址
五、注意事项
模块需引用「Windows 核心库」(火山默认已引用,无需额外操作)。
该函数返回的是「最顶层可见窗口」的句柄(如覆盖在上方的窗口会优先返回)。
如果需要排除透明窗口 / 系统控件,需结合 GetParent/GetWindowLongPtr 等 API 二次筛选。
64 位程序编译时,需确保 API 声明的调用约定为 stdcall(火山默认适配,无需修改)。
此模块可直接导入火山编程工程使用,完全遵循中文编程习惯,封装后无需关注底层 API 细节,只需传入屏幕坐标即可获取窗口句柄。
回复

使用道具 举报

1

主题

25

帖子

193

积分

注册会员

Rank: 2

积分
193
12#
发表于 6 小时前 | 只看该作者
取坐标窗口句柄
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2025-12-10 17:21 , Processed in 0.092268 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表