c++ - ntlite - ¿Cómo podría crear un mensaje de Windows personalizado?
nlite windows 10 full (1)
Nuestro proyecto se ejecuta en Windows CE 6.0 y está escrito en C ++. Tenemos algunos problemas con el código y no podemos depurar. También descubrimos que si en nuestra aplicación creamos hilos y tratamos de imprimirlos, la salida no aparecerá. La única salida que aparecerá es la del hilo principal. Me gustaría hacer lo siguiente:
crear un mensaje de Windows personalizado
usar como es WPARAM la dirección de un char * que quiero mostrar en la pantalla
usar como es LPARAM la longitud del char * que quiero mostrar en la pantalla
envía el mensaje
procesarlo cuando llegue, para que imprima el carbón *
¿Cómo podría crear el mensaje de Windows personalizado? ¿Cuáles son los tipos de WPARAM y LPARAM? ¿Es posible hacer lo que acabo de escribir?
Gracias
Ciertamente es posible hacer lo que describes. No necesita hacer nada para crear un mensaje personalizado para la comunicación dentro de su aplicación: simplemente asegúrese de que el código que envía el mensaje y el código que recibe el mensaje coinciden en cuál es realmente el número de mensaje, y use un mensaje. número que no se superpone con ninguno de los números que usa Windows. Hay una función RegisterWindowMessage (), pero eso solo es necesario para obtener un número de mensaje único en todo el sistema operativo, por lo que se usa para la comunicación entre procesos.
La forma más sencilla de lograr esto es simplemente tener un archivo de encabezado en algún lugar que contenga sus números de mensaje personalizados, comenzando con WM_USER y la numeración hacia arriba, así:
#define WM_FIRST_CUSTOM_MSG (WM_USER+0)
#define WM_SECOND_CUSTOM_MSG (WM_USER+1)
Los tipos WPARAM y LPARAM se definen cuando se incluye "windows.h", por lo que pueden tener diferentes tipos en diferentes sistemas. Para sistemas operativos de 32 bits, ambos son generalmente enteros de 32 bits. Si solo está usando el mensaje para fines de prueba, por lo general es lo suficientemente bueno, y puede guardar lo que quiera allí. Para el código de producción, sin embargo, debe tener más cuidado: WPARAM es realmente para datos "enteros" y LPARAM para datos "tipo puntero". En Win64, por ejemplo, LPARAM es lo suficientemente largo como para contener un puntero de 64 bits, pero WPARAM solo contiene un entero de 32 bits. Para pasar más datos que solo un entero y un puntero, usaría lParam para pasar un puntero a algún tipo de estructura que contenga todos mis argumentos.
Habiendo dicho todo eso, parece una forma complicada de obtener resultados de depuración. ¿Has intentado utilizar la llamada API OutputDebugString ()? ¿O eliminando errores de la llamada printf () del hilo?