2012-01-31 7 views
0

ダイアログを含む垂直および水平の最小サイズを計算したいとします。 私は、GetClientRectを使って幅と高さを決定しました。その後、垂直スクロールバーが必要な幅では、GetSystemMetrics(SM_CXVSCROLL)+ GetSystemMetrics(SM_CXSIZEFRAME)を追加しましたが、私はいくつかのピクセルが足りないと思われます。ダイアログを格納するのに必要な最小サイズの計算

スクロールバーの有無にかかわらず、水平方向と垂直方向の両方のディメンションについて、どのGetSysMetricsを考慮する必要がありますか?

答えて

0

ウィンドウ枠やその他のクライアント以外の領域を考慮する必要があります。これを行う最も簡単な方法は、AdjustWindowRect()またはAdjustWindowRectEx()です。 documentationから

:しかし、あなたはまだスクロールバーを自分で処理する必要があります

AdjustWindowRectEx機能は、アカウントにWS_VSCROLLまたはWS_HSCROLLスタイルを取ることはありません。スクロールバーを考慮するには、SM_CXVSCROLLまたはSM_CYHSCROLLを指定してGetSystemMetrics関数を呼び出します。だから、

、手順は次のとおりです。

  1. ​​あなたの最小サイズのクライアント領域を取得します。

  2. AdjustWindowRectEx()クライアントのサイズをウィンドウスタイルに基づいてウィンドウサイズに変換します。

  3. スクロールバー(GetSystemMetrics()SM_CXVSCROLLおよび/またはSM_CYHSCROLL)を追加するには、必要に応じてアカウントを調整します。

+0

ありがとう、それはトリックです!垂直スクロールバーを追加すると、水平スクロールバーが必要になる可能性があるので、頭が痛いです。 –

関連する問題