1

私は direct3d アプリケーションを書いていますが、アンチエイリアシングがオフになっていても発生するなどの奇妙なバグに気づいた後、マウスポインターがそれ自体と同じ座標のものに整列しないことを発見しました。ウィンドウを作成するときに、幅と高さがパラメータにはボーダーが含まれます。プログラムは 800x600 のグラフィックス出力を同じサイズのウィンドウにレンダリングしていましたが、境界線のために 792x566 の長方形に押しつぶされていました。これを補うためにウィンドウのサイズを大きくしましたが、システムが標準の XP スタイル以外の境界線スタイルを使用している場合、これは機能しません。(例:クラシックスタイル)

ウィンドウを作成する前に境界線の幅と高さを知る方法はありますか?

4

2 に答える 2

3

もう 1 つのオプションは、D3D サーフェスがクライアントの四角形のサイズ ( GetClientRect() )と同じサイズであることを確認することです。その後、適切なサイズにレンダリングされることがわかり、メニューや境界線などの幅についてまったく心配する必要はありません.

于 2008-11-19T00:22:11.040 に答える
2

GetSystemMetrics 関数を探しているようです。たとえば、境界線の幅 (ピクセル単位) は次のように返されます。

GetSystemMetrics(SM_CXBORDER)

追加: 合計サイズについては、非クライアント領域のさまざまな「部分」を合計する必要があります: 境界線、フレーム サイズ、タイトル バーなど。

于 2008-11-19T00:12:20.810 に答える