文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发VBVB6.0中调用API函数创建和使用逻辑字体
精品推荐
特别推荐
·VB表格控件总览与例程分析
·用VB6.0制作画图板
·VB打造超酷个性化菜单(六)
·MSHFlexGrid 控件的应用
·Visual Basic 控件简介
·利用硬盘序列号计算软件注册码
·计算机等级考试二级VB常用算法:排序
·用diskid.dll和disk32.dll获得硬盘序列号
·VB6中使用Winsock穿越各种代理的实现
·在VFP、VB应用程序中激活鼠标功能
热点TOP10
·vb 高手搜集-常见问题总结(1)
·vb高手搜集-常见问题总结(3)
·自己动手做一个数学函数作图器
·利用VB6.0实现五线谱作曲工具
·VB实现程序的隐形
·vb高手搜集-常见问题总结(2)
·vb高手搜集-常见问题总结4(终章)
·Visual Basic通信程序设计
·用VB编写记事本
·窗体控件大小随窗体大小变化而变化

VB6.0中调用API函数创建和使用逻辑字体

日期:2008年6月7日 作者: 查看:[大字体 中字体 小字体]



作者:王寿兵


文章摘要:
  我们在用Visual FoxPro或Power Builder 等开发工具开发各种管理系统时,都要打印出一些各式各样的报表,在设计报表时,有时会遇到如下问题:报表的纵向数据列数太多,常用的宽行打印机(如LQ-1600K系列)使用最宽的纸张也无法在同一页面内打印出所有列;  
         

--------------------------------------------------------------------------------

正文:    

VB6.0中调用API函数创建和使用逻辑字体
  我们在用Visual FoxPro或Power Builder 等开发工具开发各种管理系统时,都要打印出一些各式各样的报表,在设计报表时,有时会遇到如下问题:报表的纵向数据列数太多,常用的宽行打印机(如LQ-1600K系列)使用最宽的纸张也无法在同一页面内打印出所有列;如果将打印机设为横向打印,纸张长度设大,虽然可在连续的几页纸上横向打印出来,但是这样的报表一方面不美观,另一方面连续的纸张容易分开,使报表同一页面分成几页,也不适于打印分发给职工的工资条。从STAR-AR3240打印机在DOS环境下能打印出24×12点阵的汉字得到启发,打印报表时采用纵横比可变的字体打印,就可灵活控制报表的页面在一页纸上打印出所有的数据列。例如要打印分发给职工的工资条,当工资的项目较多时,就需要用横向变倍的字体打印。
  因为Windows 系统采用的是TrueType字体,可以平滑的无级变倍,但是纵横比不为1的汉字毕竟不是标准汉字,在Windows的系统字库中没有,然而Windows系统提供了丰富的API(应用程序接口)函数,调用CreateFont()创建理想的逻辑字体,用这些字体打印报表就可满足我们的需要。
  要调用API函数,选取相应的函数,先申明,后调用。Windows系统中CreateFont()的定义如下:
BOOL CreateFont( //创建逻辑字体,成功返回True,否则返回False。
int nHeight, // 所创建字体的字符高度
int nWidth, // 字体的字符平均宽度
int nEscapement, // 字符输出方向与水平向右的方向所成角度,
以0.1度为单位
int nOrientation, // 字符与基线的角度,以0.1度为单位
int nWeight, // 字符颜色的深浅度
BYTE bItalic, // 斜体属性标志(0:正常字体,非0:斜体)
BYTE bUnderline, //下划线属性标志(0:无下划线,非0:有下划线)
BYTE cStrikeOut,//删除线属性标志(0:无删除线,非0:有删除线)
BYTE nCharSet, //字符集标识0:ANSI字符集,1:系统缺省字符集
BYTE nOutPrecision, // 输出精度
BYTE nClipPrecision, // 剪切精度
BYTE nQuality, // 输出品质
BYTE nPitchAndFamily, // 字符间距
LPCTSTR lpszFacename // 现有系统TrueType字体名称
)
  为了显示和打印用户创建的字体,还需要调用另外几个API函数:TextOut()、SelectObject()、DeleteObject(),它们的定义分别如下:
BOOL TextOut( //用当前选定字体向输出设备输出字符串
HDC hdc, // 字符输出设备的句柄
int nXStart, // X-轴起始位置
int nYStart, // Y--轴起始位置
LPCTSTR lpString, // 待输出字符串的首地址
int cbString // 输出的字符个数
); //输出成功返回True,否则返回False。
HGDIOBJ SelectObject( //为指定的字符设备设定对象(字体)
HDC hdc, // 输出设备的句柄
HGDIOBJ hgdiobj // 对象的句柄
);
BOOL DeleteObject( //删除指定的逻辑对象
HGDIOBJ hObject // 对象的句柄
); //删除成功返回True,否则返回False。
  为节省篇幅,本程序仅完成了字体的创建、在屏幕上显示和简单的字符串打印示例,将其功能逐步扩充,可编制出字体灵活的报表打印程序,以满足用水平压缩字体打印超宽报表的要求。

程序的源代码如下:

'在窗口体上创建3个ComboBox控件,分别命名为char_type,char_size,char_vhp;
'再创建3个CommandButton控件,分别命名为cmd_prn,cmd_pre,cmd_quit
'最后创建一个4个Label控件和1个Shape控件,Shape控件定义为矩形(Rectangle)

Option Explicit
Private Declare Function CreateFont Lib "gdi32" Alias "CreateFontA" (ByVal H As Long, ByVal W As Long, ByVal E As Long, ByVal O As Long, ByVal W As Long, ByVal I As Long, ByVal u As Long, ByVal S As Long, ByVal C As Long, ByVal OP As Long, ByVal CP As Long, ByVal Q As Long, ByVal PAF As Long, ByVal F As String) As Long

[1] [2] 下一页 




上一篇:VB6.0使用ADO对象连接数据库

下一篇:VB6.0中类聚集关系的实现

相关文章:
·为什么iexplore.exe在打开网页时CPU使用会100%?
·溯雪使用说明
·键盘的使用与指法训练
·Firefox 使用常见问题和解决方法
·GHOST使用方法(图解)
·注册表应用100例—注册表使用全攻略之十一
·Vista系统使用技巧总结
·教您如何使用无线上网全攻略
·TninkPad笔记本电池使用指南
·GM使用命令以及物品怪物中文清单1
相关软件:
·300多种中文字体
·黑客视频教程 VMware虚拟机的安装和使用
·C函数浏览
·素材字体-中国龙字库
·黑客视频教程-灰鸽子远控使用教程
·使用GPMC随心所欲管理组策略
·微软雅黑字体
·Adobe Photoshop CS 2 简体中文使用指南
·很多人要的毛笔书法字体(启功体 简体+繁体)
·数码相机购买使用宝典 V1.03.29

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot