Como práctica, quise calcular el alto de la barra de título de una ventana.
El valor calculado es del tipo long. Luego debía convertirlo a LPCWSTR para pasarlo como parámetro a la api setWindowText que lo escribirá en lugar del título de la ventana.
He usado la información que hallé en estas webs:
La función ltoa (reemplazada por _ltoa)
Convertir de char* a LPCWSTR
La función MultiByteToWideChar
El código es el siguiente:
RECT
r1, r2;
GetWindowRect(hWnd,
&r1);
GetClientRect(hWnd,
&r2);
long
alto1 = r1.bottom - r1.top;
long
alto2 = r2.bottom - r2.top;
long
alto3 = alto1-alto2;
//
convertir long a Wide WCHAR*
int
size=sizeof(long)*8+1;
char*
texto = new
char[size];
WCHAR*
texto2 = new
WCHAR[size];
_ltoa(alto3,texto,10);
MultiByteToWideChar(CP_UTF8,
0, texto, -1, texto2, size);
//
fin de la conversión. Para convertir de WCHAR* a LPCWSTR (puntero
largo a Const Wide String) basta un casteo
SetWindowText(hWnd,
(LPCWSTR)texto2);
En el caso de una aplicación tipo win32, coloqué este código dentro de la función que procesa los mensajes de la ventana (WndProc), exactamente en el mensaje que se envía al crearla:
Al ejecutar el programa, mostrará el alto de la barra de título en el texto de... la barra de título.
Interesting my friend, el valor calculado que nos muestra en la barra de titulo en base a que esta amiga.
ResponderEliminarOscar Cueva M.
cueva009@gmail.com
Este comentario ha sido eliminado por el autor.
ResponderEliminarHola Oscar!
ResponderEliminarEl valor del alto de la barra de título varía con el tema de Windows escogido. Para Windows clásico me da un valor de cuarentaitantos, y en Windos 7 es de casi sesenta. Este ejemplo no tenía la intención de ser práctico, si no académico (por ningún lado hallé un tutorial que me mostrara cómo convertir de long a LPCWSTR), pero sirve para saber dónde están las cuatro esquinas de la barra de tareas y hacerle unos cuantos pantallazos con la api BitBlt o PrintWindow.
Saludos!