3

ウィンドウの幅と高さが必要なを使用してウィンドウを作成する場合CreateWindow(...)、ウィンドウの境界を考慮して、640と480ではなく656と516の値を入力する必要があります。

境界線を含まないウィンドウの部分のみに基づいてウィンドウを作成する方法があるかどうか疑問に思っています。特に、異なるバージョンのウィンドウの境界線のサイズが異なる場合、プログラムを実行するとプログラムの表示が異なる可能性があることを考慮してください。上記の異なるバージョンで

(つまり、640を使用すると、ユーザーのバージョンのウィンドウの境界線のサイズが異なる場合、object.widthはオブジェクトを画面の端に配置しません)。

したがって、プログラムに関連する画面の部分のみに基づいてウィンドウを作成する方法、または少なくともGetVericalBorder()/の行に沿った関数を変更して、次のような任意のあいまいな値の代わりにGetHorizontalBorder()これらをのパラメータで使用する方法はありますか? CreateWindow()656と516?

4

3 に答える 3

3

AdjustWindowRectExをご覧ください。この関数に、ウィンドウのクライアント領域の目的のサイズとウィンドウスタイルフラグを含む長方形を渡し、クライアント領域が目的のサイズになるようにウィンドウ全体の大きさを計算します。

于 2010-03-01T02:48:49.280 に答える
2

SystemParametersInfo()APIを使用して、この種のウィンドウ情報を取得できます。SPI_GETBORDERおよび/またはSPI_GETNONCLIENTMETRICSパラメータを参照してくださいMicrosoftライブラリを参照してください

SystemParametersInfoを使用すると、境界線やメニューなどを考慮することができます。

于 2010-03-01T02:49:29.627 に答える
0
int WINAPI GetSystemMetrics(
  __in  int nIndex
);

Microsoftライブラリを参照してください

于 2010-03-01T22:59:07.727 に答える