Existe alguna forma a traves del API de Windows de obtener las propiedades de apariencia de Windows, como por ejemplo el tamaño en pixeles del borde de una ventana, el tamaño de la barra de titulos, etc etc...??
Salu2...
Pues para eso del tamaño puedes utilizar las funciones:
GetWindowRect: Devuelve el tamaño total de la ventana
GetClientRect: Devuelve el tamaño del área cliente de la ventana
Después restando esos rectángulos puedes averiguar el tamaño del borde, y de la barra de titulo+menu y de la barra de estado.
Tambien puedes utilizar la función:
BOOL AdjustWindowRectEx(
LPRECT lpRect, // pointer to client-rectangle structure
DWORD dwStyle, // window styles
BOOL bMenu, // menu-present flag
DWORD dwExStyle // extended style
);
y metiendole primero bMenu=true y luego bMenu=false, y restando, puedes saber el tamaño del menu, ya que con las funciones anteriores podrias calcular el tamaño de la suma de menu+titulo...
Es todo lo que se me ocurre sobre tamaño de ventanas, mira la ayuda de estas funciones, a ver si es esto lo que necesitas.
un saludo
Muy interesante, fiero. Pero yendo un poqito más allá: además de saber el tamaño del titlebar,el menú,etc, me gustaría poder cambiarlo. ¿Hay alguna forma?
He estado ojeando las APIs, pero no encuentro nada :(
Weno, mas o menos creo ke me podre apañar entre GetWindowRect() y GetClientRect(). Mi problema es que necesito averiguar las coordenadas del rectangulo devuelto por GetClientRect() en la pantalla, pero como en cada ekipo el tamaño de la barra de titulo y los bordes pueden ser diferentes pos no seria posible precisar las coordenadas correctas del rectangulo. Solo necesitaria saber cual es el tamaño de la barra de titulos y el tamaño de borde de ventana.
Gracias por la ayuda ;)
Salu2...
Creo que lo que buscas es la función:
Citarint GetSystemMetrics (
int nIndex // system metric or configuration setting to retrieve
);
a la cual le pasas el elemento de la ventana del cual quieres conocer sus dimensiones. Mírate las MSDN para los posibles valores del parámetro "nIndex".
Saludos.
Como no cai antes, ke despiste! (nooo)
Ya he solucionado el problema ke tenia para averiguar las coordenadas de posicion en pantalla del area de cliente de una ventana. Al final he utilizado una funcion he usado cientos de veces y ke no recordaba,
ClientToScreen() para ke me devolviera la posicion en pantalla del area de cliente y
GetClientArea() para saber las dimensiones, asi ke el problemilla ke tenia en el otro post de
Programacion grafica 3D->Captura de pantalla sobre la captura de pantalla en modo ventana ya esta solucionado. :)
Gracias a todos por la ayuda ;)
Salu2...
más dificil todavía, alguien puede decirme si usando SDL se pueden llegar a saber estas cosas? o si es factible usar SDL e incrustar llamadas al API de windows para esas cosas que SDL no cubre (como tamaño, posicion de la ventana, etc).
Gracias,
Hombre, no se si SDL tendra funciones para eso, pero no veo por ke no seria factible hacerlo a traves del API de Windows. Hombre, si por factible te refieres a no tener ke programar eso en varias plataformas a parte de windows, pos si SDL trae las funciones, mejor ke mejor, trabajo ke te ahorras.
Salu2...