質問

CreateWindowEx()関数を使用してウィンドウを作成しましたが、作成したウィンドウから幅と高さを取得するにはどうすればよいですか?これは非常に基本的なことのように聞こえますが、答えが見つかりませんでした; _;

ウィンドウの作成方法に応じてウィンドウの高さが自動的に作成されるため、これが必要です。

言語CまたはC ++

役に立ちましたか?

解決

GetWindowRect を使用します。幅を取得するには左から右を減算し、高さを取得するには上から下を取得します。

RECT rect;
if(GetWindowRect(hwnd, &rect))
{
  int width = rect.right - rect.left;
  int height = rect.bottom - rect.top;
}

補足として、ウィンドウ全体ではなくクライアント領域が必要な場合。 GetClientRect を使用できます。ウィンドウに関するその他の情報については、 GetWindowInfo を使用できます。 。

他のヒント

GetWindowInfo

例:

HWND window = ::CreateWindowEx(...);
WINDOWINFO info;
if ( ::GetWindowInfo(window, &info) ) {
  ...
}

サイズが必要な理由が示されておらず、ウィンドウスタイルがサイズ変更可能な属性を含むように設定されている場合、サイズを変更できることを示す[そして、ユーザーがウィンドウの端を最小化/最大化/復元またはドラッグしてウィンドウのサイズを変更する]、最も安全な選択は、WM_SIZEのメッセージハンドラを含め、wparamおよびlparamパラメータ値を使用してウィンドウのサイズを決定することです。これにより、常に現在のサイズがわかります。 WM_SIZEは、ウィンドウ作成後のメッセージのシーケンスで呼び出されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top