Pregunta

Estoy escribiendo una aplicación de direct3d y después de notar errores extraños como el anti-aliasing, incluso cuando estaba apagado y el puntero del mouse no se alineaba con cosas con las mismas coordenadas que él mismo, descubrí que al crear una ventana, el Los parámetros de ancho y alto incluyen el borde. El programa renderizaba una salida de gráficos de 800x600 a una ventana del mismo tamaño, pero debido a los bordes se reducía a un rectángulo de 792x566. Aumenté el tamaño de la ventana para compensar, pero esto no funciona si el sistema usa un estilo de borde diferente al estilo XP estándar. (Estilo clásico, por ejemplo)

¿Hay alguna manera de saber cuál será el ancho y la altura del borde antes de crear la ventana?

¿Fue útil?

Solución

Parece que está buscando la función GetSystemMetrics. Por ejemplo, el ancho del borde en píxeles es devuelto por

GetSystemMetrics(SM_CXBORDER)

AGREGADO: para el tamaño total necesitará sumar las diversas '' piezas '' del área no cliente: borde, tamaños de marco, barras de título, etc.

Otros consejos

Otra opción sería asegurarse de que la superficie D3D sea del mismo tamaño que el tamaño del rectángulo del cliente ( GetClientRect () ). Entonces sabrá que renderizará al tamaño apropiado y no tendrá que preocuparse en absoluto por el ancho de los menús, bordes, etc.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top