Delphi 我应该如何将负值传递给SendMessage并在它们期望NativeUInt时执行?

Delphi 我应该如何将负值传递给SendMessage并在它们期望NativeUInt时执行?,delphi,64-bit,Delphi,64 Bit,假设您有如下代码: Result.X := ACustomMemo.Perform(EM_LINEFROMCHAR, -1, 0); Windows API声明“-1”是使其返回活动行的有效值 然而,Delphi将其定义为NaiveUInt,如果我试图通过-1,就会抱怨 最干净的解决方案是什么?强制转换?将-1值强制转换为WPARAM是处理此情况的正确方法 Result.X := ACustomMemo.Perform(EM_LINEFROMCHAR, WPARAM(-1), LPARAM

假设您有如下代码:

Result.X := ACustomMemo.Perform(EM_LINEFROMCHAR, -1, 0); 
Windows API声明“-1”是使其返回活动行的有效值

然而,Delphi将其定义为NaiveUInt,如果我试图通过-1,就会抱怨


最干净的解决方案是什么?强制转换?

将-1值强制转换为WPARAM是处理此情况的正确方法

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

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

习惯于这样一个事实,即由于API(NativeUint)中的Win64清理,现在需要更多的强制转换。不仅在这里,而且在Win32和Win64 API使用nativeInt或nativeUint的其他地方。