设为首页 加入收藏

TOP

输出文字(二十四)
2010-12-30 21:10:02 来源: 作者: 【 】 浏览:24233
Tags:输出 文字
大写识别字有20个字元,因此第二列必须在第一列文字开头向右20 × cxCaps处开始。我使用22,以在两列之间加一点多余的空间。

第三条TextOut叙述显示从GetSystemMetrics函式取得的数值。变宽字体使得格式化向右对齐的数值有些棘手。从0到9的数字具有相同的宽度,但是这个宽度比空格宽度大。数值可以比一个数字宽,所以不同的数值应该从不同的横向位置开始。

那么,如果我们指定字串结束的图素位置,而不是指定字串的开始位置,以此向右对齐数值,是否会容易一些呢?用SetTextAlign函式就可以做到这一点。在SYSMETS1呼叫:

之後,传给後续TextOut函式的座标将指定字串的右上角,而不是左上角。

显示列数的TextOut函式的第二个参数设定为:

值40*cxChar包含了第二列的宽度和第三列的宽度。在TextOut函式之後,另一个对SetTextAlign的呼叫将对齐方式设定回普通方式,以进行下次回圈。

空间不够
 

在SYSMETS1程式中存在著一个很难处理的问题:除非您有一个大萤幕跟高解析度的显示卡,否则就无法看到系统尺度列表的最後几行。如果视窗太窄,甚至根本看不到值。

SYSMETS1不知道这个问题。否则我们就会显示一个讯息方块说「抱歉!」程式甚至不知道它的显示区域有多大,它从视窗顶部开始输出文字,并仰赖Windows裁剪超出显示区域底部的内容。

显然,这很不理想。为了解决这个问题,我们的第一个任务是确定程式在显示区域内能输出多少内容。

显示区域的大小
 

如果您使用过现有的Windows应用程式,可能会发现视窗的尺寸变化极大。视窗最大化时(假定视窗只有标题列并且没有功能表),显示区域几乎占据了整个萤幕。这一最大化了的显示区域的尺寸可以通过以SM_CXFULLSCREEN和SM_CYFULLSCREEN为参数呼叫GetSystemMetrics来获得。视窗的最小尺寸可以很小,有时甚至不存在,更不用说显示区域了。

在最近一章,我们使用GetClientRect函式来取得显示区域的大小。使用这个函式没有什么不好,但是在您每次要使用资讯时就去呼叫它一遍是没有效率的。确定视窗显示区域大小的更好方法是在视窗讯息处理程式中处理W

首页 上一页 21 22 23 24 25 26 27 下一页 尾页 24/44/44
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇图形基础 下一篇视窗和讯息

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: