Domanda

Sto scrivendo un'applicazione direct3d e dopo aver notato strani bug come l'antialiasing che si verificano anche quando è stato spento e il puntatore del mouse non si allinea alle cose con le stesse coordinate di me stesso ho scoperto che durante la creazione di una finestra il i parametri di larghezza e altezza includono il bordo. Il programma stava eseguendo il rendering di un output grafico 800x600 su una finestra della stessa dimensione, ma a causa dei bordi è stato schiacciato in un rettangolo 792x566. Ho compensato le dimensioni della finestra per compensare, ma ciò non funziona se il sistema utilizza uno stile bordo diverso dallo stile XP standard. (Stile classico, ad esempio)

C'è un modo per dire quale sarà la larghezza e l'altezza del bordo prima di creare la finestra?

È stato utile?

Soluzione

Sembra che tu stia cercando la funzione GetSystemMetrics. Ad esempio, la larghezza del bordo in pixel viene restituita da

GetSystemMetrics(SM_CXBORDER)

AGGIUNTO: per la dimensione totale dovrai sommare i vari "pezzi" dell'area non cliente: bordo, dimensioni dei fotogrammi, barre del titolo, ecc.

Altri suggerimenti

Un'altra opzione sarebbe quella di assicurarsi che la superficie D3D abbia le stesse dimensioni della dimensione del rettangolo del client ( GetClientRect () ). Quindi sai che eseguirai il rendering della dimensione appropriata e non dovrai preoccuparti della larghezza di menu, bordi, ecc.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top