2012-02-19 9 views
6

Suponga que tiene un código como éste:¿Cómo debo pasar valores negativos a SendMessage y Perform cuando esperan un NativeUInt?

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

Las reclamaciones API de Windows "-1" es un valor válido que hace que se devuelva la línea activa.

Sin embargo, Delphi tiene esto definido como NaiveUInt y se queja si intento pasar -1.

¿Cuál es la solución más limpia para esto? ¿Fundición?

+3

Acostúmbrese al hecho de que ahora se requiere más conversión, debido a las limpiezas de Win64 en la API (NativeUINT). No solo aquí, sino en otros lugares donde las API Win32 y Win64 usan nativeInt o nativeUint. –

Respuesta

15

Lanzar el valor -1 a WPARAM es la forma correcta de manejar este caso.

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

Por cierto, el NativeUint definición delphi para el tipo WPARAM es correcto, porque es un sin signo de 32 bits en x86 y sin signo de 64 bits en x64.

Cuestiones relacionadas