如何计算基于 Visual C++ 中的当前字体对话框框单元

本文介绍在Visual C++中计算基于当前字体的对话框单位的方法。提供了两种替代方案以确保对话框适应不同字体。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何计算基于 Visual C++ 中的当前字体对话框框单元

请注意 Microsoft Visual C++.NET (2002) 既支持在托管的代码模型所提供的 Microsoft.NET Framework 也支持非托管本机 Microsoft Windows 代码模型。 本文中的信息仅应用于非托管 Visual C++ 代码。

本页

概要

计算对话框单元为单位时,GetDialogBaseUnits() 始终假定系统字体。 如果将不任何字体不系统字体返回值可能无法适合对话框。 本文提供了两种替代...计算对话框单元为单位时,GetDialogBaseUnits() 始终假定系统字体。 如果将不任何字体不系统字体返回值可能无法适合对话框。 本文提供了两种替代方法使用可根据当前字体对话框框单元。

更多信息
水平的基本单位相当于的系统字体中字符平均宽度 (以像素为单位)。 GetDialogBaseUnits() 帮助建议用于计算正确的单位以下代码: pixelX...

水平的基本单位相当于的系统字体中字符平均宽度 (以像素为单位)。 GetDialogBaseUnits() 帮助建议用于计算正确的单位以下代码:

pixelX = (dialogunitX * baseunitX) / 4
pixelY = (dialogunitY * baseunitY) / 8


但是,如果您不使用系统字体,您需要执行一些其他计算将右坐标。 下面是两种方法:

方法 1

垂直对话框框单位等于字符高度。 水平对话框框单位等效于对话框的字体的平均字符宽度。 通过查找字母的字符集的平均的文本范围,计算平均字符宽度。 这是必需的因为 tmAveCharWidth 不是精确。 使用以下代码:

   void CAboutDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting

CFont* pFont = GetFont();
CFont* oldFont = dc.SelectObject(pFont);
TEXTMETRIC tm;
dc.GetTextMetrics( &tm );
int baseUnitY = tm.tmHeight;
CSize size;
size = dc.GetTextExtent(
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", 52);
int baseUnitX = (size.cx / 26 + 1) / 2;
TRACE("baseUnitX = %d/n", baseUnitX);
TRACE("baseUnitY = %d/n", baseUnitY);
dc.SelectObject(oldFont);

}

 

方法 2

在替代项是更加容易。 MapDialogRect() 使用某坐标处的 x = 4,y = 8 将返回对话框框基本单位,无论对话框的字体。 但是,在大多数的情况下,程序员不需要知道对话框框中的基本单位。 MapDialogRect() 可用于直接任何对话框框单位换算直接与设备坐标。 下面的示例代码演示如何它可以使用查找对话框框中的基本单位:

   void CAboutDlg::OnPaint()

{

CPaintDC dc(this); // device context for painting



CRect rc( 0, 0, 4, 8 );



MapDialogRect( &rc );

int baseUnitY = rc.bottom;

int baseUnitX = rc.right;

TRACE("baseUnitX = %d/n", baseUnitX);

TRACE("baseUnitY = %d/n", baseUnitY);



}

参考线设置”对话框

 

版式参考线

显示布局参考线的设置。

隐藏布局工具。

标尺和参考线

如果启用,则在布局工具中添加标尺;可将参考线放置在标尺中。默认参考线是边距,可以通过拖动来移动它。在标尺中单击以设置参考线。当控件在参考线上面或 旁边移动时,控件将“对齐”参考线。控件附加到参考线上后便与参考线一起移动。如果控件的每一端均附加到参考线上,则当参考线移动时,控件将调整大小。

网格

创建布局网格。新控件自动对齐网格。

网格间距

显示以对话框单元 (DLU) 为单位的网格间距设置。

宽度:DLU

设置以 DLU 为单位的布局网格宽度。水平 DLU 是按四划分的对话框字体的平均宽度。

高度:DLU

设置以 DLU 为单位的布局网格高度。垂直 DLU 是按八划分的对话框字体的平均高度。

有关将资源添加到托管项目的信息,请参见“.NET Framework 开发员指南”中的应用程序中的资源 。有关手动将资源文件添加到托管项目、访问资源、显示静态资源和将资源字符串分配给属性的信息,请参见演练:本地化 Windows 窗体演练:将本地化资源用于 ASP.NET

要求

Win32

				
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值