現在、次のコードを使用してCStatic
コントロールのサイズを変更しています。
WINDOWPLACEMENT wndpl;
m_myStaticControl.GetWindowPlacement(&wndpl);
// Increase the static box's width
wndpl.rcNormalPosition.right += 10;
m_myStaticControl.SetWindowPlacement(&wndpl);
m_myStaticControl.SetWindowText("Some text");
試行錯誤で定数(上記の場合は10)を取得します。これは非常に洗練されておらず、保守が難しいソリューションのように思われるため、これを変更したいと考えています。いくつかの調査の後、私は基本的な考えを持っていると思います。つまり:
- を使用して、必要なテキストのピクセル幅と高さを取得します
GetTextExtentPoint32
。 CStatic
上記のコード例のように、コントロールの現在のウィンドウ配置を取得します。- 現在の幅 < 取得したピクセル幅の場合、取得したピクセル幅を加算します。高さについても同じことを行います。
- 上記のコード例のようにウィンドウの配置を設定します。
- 上記のコード例のようにウィンドウ テキストを設定します。
これは良い、効率的なアプローチでしょうか? また、GetTextExtentPoint32
ピクセルまたはダイアログ単位を使用しますか?