本文共 2605 字,大约阅读时间需要 8 分钟。
<script type="text/javascript"> </script>
<script type="text/javascript"> </script>
计算对话框单元为单位时,GetDialogBaseUnits() 始终假定系统字体。 如果将不任何字体不系统字体返回值可能无法适合对话框。 本文提供了两种替代...计算对话框单元为单位时,GetDialogBaseUnits() 始终假定系统字体。 如果将不任何字体不系统字体返回值可能无法适合对话框。 本文提供了两种替代方法使用可根据当前字体对话框框单元。
<script type="text/javascript"> </script>
<script type="text/javascript"> </script> 水平的基本单位相当于的系统字体中字符平均宽度 (以像素为单位)。 GetDialogBaseUnits() 帮助建议用于计算正确的单位以下代码:
pixelX = (dialogunitX * baseunitX) / 4 pixelY = (dialogunitY * baseunitY) / 8
<script type="text/javascript"> </script> 垂直对话框框单位等于字符高度。 水平对话框框单位等效于对话框的字体的平均字符宽度。 通过查找字母的字符集的平均的文本范围,计算平均字符宽度。 这是必需的因为 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); }
<script type="text/javascript"> </script> 在替代项是更加容易。 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 开发员指南”中的 。有关手动将资源文件添加到托管项目、访问资源、显示静态资源和将资源字符串分配给属性的信息,请参见 和 。
Win32
转载地址:http://pnmfn.baihongyu.com/