Pergunta

Eu estou escrevendo um aplicativo Direct3D e depois de perceber bugs estranhos, tais como anti-aliasing que ocorre mesmo quando foi desligado e o ponteiro do mouse não alinhando para as coisas com as mesmas coordenadas que em si eu descobri que ao criar uma janela de largura e altura parâmetros incluem a fronteira. O programa foi tornando uma saída 800x600 gráficos para uma janela do mesmo tamanho, mas por causa das fronteiras foi esmagado em 792x566 retângulo. Eu já aumentou o tamanho da janela para compensar, mas isso não funciona se o sistema usa um estilo de borda outra o estilo padrão XP. (Estilo clássico, por exemplo)

Existe uma maneira de dizer o que a largura e altura de fronteira será antes de criar a janela?

Foi útil?

Solução

Parece que você está procurando a função GetSystemMetrics. Por exemplo, a largura da borda em pixels é devolvido pelo

GetSystemMetrics(SM_CXBORDER)

ADICIONADO: Para o tamanho total que você terá que somar os vários "pedaços" da área de não-cliente:. Fronteira, tamanhos de quadros, barras de título, etc

Outras dicas

Outra opção seria para se certificar de superfície do D3D é o mesmo tamanho que o retângulo do cliente ( GetClientRect () ). Então você sabe que vai render para o tamanho apropriado e não precisa se preocupar em tudo sobre a largura de menus, bordas, etc.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top