3

現在、次のコードを使用して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)を取得します。これは非常に洗練されておらず、保守が難しいソリューションのように思われるため、これを変更したいと考えています。いくつかの調査の後、私は基本的な考えを持っていると思います。つまり:

  1. を使用して、必要なテキストのピクセル幅と高さを取得しますGetTextExtentPoint32
  2. CStatic上記のコード例のように、コントロールの現在のウィンドウ配置を取得します。
  3. 現在の幅 < 取得したピクセル幅の場合、取得したピクセル幅を加算します。高さについても同じことを行います。
  4. 上記のコード例のようにウィンドウの配置を設定します。
  5. 上記のコード例のようにウィンドウ テキストを設定します。

これは良い、効率的なアプローチでしょうか? また、GetTextExtentPoint32ピクセルまたはダイアログ単位を使用しますか?

4

0 に答える 0