質問
私はdirect3dアプリケーションを書いていますが、アンチエイリアシングなどの奇妙なバグに気付きました。幅と高さのパラメーターには境界線が含まれます。プログラムは800x600のグラフィックス出力を同じサイズのウィンドウにレンダリングしていましたが、境界線のために792x566の長方形に押しつぶされました。これを補うためにウィンドウのサイズを大きくしましたが、システムが標準XPスタイル以外のボーダースタイルを使用している場合、これは機能しません。 (たとえば、クラシックスタイル)
ウィンドウを作成する前に、境界線の幅と高さを知る方法はありますか?
解決
GetSystemMetrics関数を探しているようです。たとえば、ピクセル単位の境界線の幅は、次によって返されます
GetSystemMetrics(SM_CXBORDER)
追加済み:合計サイズについては、さまざまな「ピース」を合計する必要があります。非クライアント領域の:境界線、フレームサイズ、タイトルバーなど。
他のヒント
別のオプションは、D3Dサーフェスがクライアントの長方形サイズと同じサイズであることを確認することです( GetClientRect())。そうすれば、適切なサイズにレンダリングし、メニュー、ボーダーなどの幅についてまったく心配する必要がないことがわかります。
所属していません StackOverflow