如何预先测量静态尺寸? WINAPI

时间:2011-01-21 17:05:07

标签: winapi fonts static

我正在创建一个带有静态文本的寡妇,由于所有96/120/180 DPI的东西,我需要创建一个布局迷你引擎。

对话框是用代码创建的,静态代码是用代码创建的,字体是用代码创建的,一切都是因为.rc中的资源也有与DPI相关的问题,我想要完全控制。

所有这一切的问题在于我不知道如何在静力学中找到文本的长度。我需要计算静态控件的初始大小,而且,我需要计算字体单位大小中不同静态之间的填充,但由于我不知道前一个静态的大小,我无法抵消下一个静态之一。

最大的问题是static会自动换行,因此我找不到可以计算的文本测量功能和自定义字体的校正,斜体,粗体,超大......

有人有什么想法吗?

2 个答案:

答案 0 :(得分:2)

static control styles(ENDELLIPSIS,PATHELLIPSIS和LEFTNOWORDWRAP)似乎映射到DrawText标志,因此使用DT_WORDBREAK|DT_CALCRECT调用DrawText可能会尽可能接近...... < / p>

答案 1 :(得分:1)

我想不出有任何令人信服的理由这样做,就像所有其他GUI类库一样。只需缩放“设计”DPI设置和目标机器DPI设置之间的窗口大小。使用独立于DPI的常量在MFC中非常痛苦,因为一切都是基于像素的。因此,请将工作站保持在通用的96 DPI设置,从目标计算机上进行扩展。由于TrueType提示,你必须保持一点松弛。