How should I pass negative values to SendMessage a

2019-02-22 06:24发布

问题:

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?

回答1:

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.



标签: delphi 64bit