动态调整CStatic控件的大小以适合文本

时间:2013-03-28 06:40:31

标签: c++ mfc resize controls

截至目前,我正在使用以下代码来调整我的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. 设置窗口文本,如上面的代码示例所示。
  6. 这是一种好的,有效的方法吗?此外,GetTextExtentPoint32是否使用像素或对话框?

0 个答案:

没有答案