当 SendMessage 和 Perform 需要 NativeUInt 时,我应该如何将负值传递给它们?

发布于 2025-01-07 11:52:27 字数 221 浏览 0 评论 0原文

假设您有这样的代码:

Result.X := ACustomMemo.Perform(EM_LINEFROMCHAR, -1, 0); 

Windows API 声明“-1”是一个有效值,使其返回活动行。

然而,Delphi 将其定义为 NaiveUInt,并且如果我尝试传递 -1 就会抱怨。

最干净的解决方案是什么?铸件?

Suppose you have code like this:

Result.X := ACustomMemo.Perform(EM_LINEFROMCHAR, -1, 0); 

The Windows API claims "-1" is a valid value that makes it it return the active line.

However, Delphi has this defined as NaiveUInt and complains if I try to pass -1.

What is the cleanest solution to this? Casting?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

旧伤慢歌 2025-01-14 11:52:27

将 -1 值转换为 WPARAM 是处理这种情况的正确方法。

 Result.X := ACustomMemo.Perform(EM_LINEFROMCHAR, WPARAM(-1), LPARAM(0));

顺便说一句,WPARAM 类型的 delphi NativeUint 定义是正确的,因为在 x86 上是无符号 32 位,在 x64 上是无符号 64 位。

Casting the -1 value to WPARAM is the proper way to handle this case.

 Result.X := ACustomMemo.Perform(EM_LINEFROMCHAR, WPARAM(-1), LPARAM(0));

btw, the delphi NativeUint definition for the WPARAM type is correct, because is a unsigned 32-bit on x86 and unsigned 64-bit on x64.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文