2012-02-19 9 views
6

は、あなたがこのようなコードがあるとします。SendMessageに負の値を渡す必要があり、NativeUIntが必要なときに実行する必要がありますか?</p> <pre><code>Result.X := ACustomMemo.Perform(EM_LINEFROMCHAR, -1, 0); </code></pre> <p>Windows APIの主張「-1」、それがアクティブな行を返します有効な値である:

しかし、DelphiはこれをNaiveUIntと定義し、-1を渡そうとすると文句を言います。

この中で最もクリーンな解決策は何ですか?鋳造?

+3

API(NativeUINT)のWin64クリーンアップのために、現在より多くのキャストが必要であることに慣れてください。ここだけでなく、Win32およびWin64 APIがnativeIntまたはnativeUintを使用する他の場所でも使用できます。 –

答えて

15

-1の値をWPARAMにキャストすることは、このケースを処理する適切な方法です。 x64でx86および符号なし64ビットで符号なし32ビットであるため

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

ところで、WPARAMタイプのデルファイNativeUint定義は、正確です。

関連する問題