You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Win32中如何通过已有x、y坐标创建可用于PtInRect的POINT对象?

Win32 下基于x、y坐标构造POINT实例的方法

POINT是Windef.h中定义的Plain Old Data结构体,核心成员仅包含两个LONG类型的坐标值x、y,不存在专门的构造函数,直接通过结构体赋值即可完成实例创建,常用实现方式如下:

  • 分步赋值写法(兼容性最强,无语言版本语法依赖)
POINT pt;
pt.x = your_x_value;
pt.y = your_y_value;
  • 一行聚合初始化写法
// 兼容所有Win32开发环境的通用写法
POINT pt = { your_x_value, your_y_value };

// C99/C++ 指定初始化器写法,避免结构体成员顺序变动引发的赋值错误
POINT pt = { .x = your_x_value, .y = your_y_value };

关键注意点

  • 类型匹配要求:POINT的x、y成员是32位有符号整数LONG类型,如果获取到的x、y是其他类型(如int、float、DWORD),需要做显式类型转换,避免出现数值截断、符号位错误:
// 示例:将int类型的原始坐标转换为POINT兼容格式
int raw_x = 120, raw_y = 85;
POINT pt = { (LONG)raw_x, (LONG)raw_y };
  • 常见使用误区:MAKEPOINT宏仅用于将Win32消息中打包为单个LPARAM值的坐标拆解为POINT结构,不能直接传入两个独立的x、y值用来构造实例,避免参数错配。

调用PtInRect时,直接传入构造完成的POINT实例即可,该函数的第二个参数要求为POINT传值,无需取地址。


内容的提问来源于stack exchange,提问作者professionalgrammer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.30 14:06:04