当 SendMessage 和 Perform 需要 NativeUInt 时,我应该如何将负值传递给它们?
假设您有这样的代码:
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
将 -1 值转换为 WPARAM 是处理这种情况的正确方法。
顺便说一句,WPARAM 类型的 delphi NativeUint 定义是正确的,因为在 x86 上是无符号 32 位,在 x64 上是无符号 64 位。
Casting the -1 value to WPARAM is the proper way to handle this case.
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.