Larghezza e altezza del bordo della finestra
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?
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.