VB中利用DrawText输出字符串且自动换行
VB中有个Print函数可以对字符串输出到窗体、图像框、立即窗口、打印机等对象上,但它也有一定的局限性,比如长文本时需要自动换行是很麻烦的,但是利用API就很容易做到,接下来我们就利用DrawText来实现长文本自动换行,且加上文本背景和文本颜色的方法,如图:
首先我们先设定一个限定文本输出的RECT范围架构,而这个RECT架构我们可以用一个API函数"SetRect"来设置:
RECT结构 |
Private Type Rect Left As Long Top As Long Right As Long Bottom As Long End Type |
SetRect声明 |
Private Declare Function SetRect Lib "user32" (lpRect As Rect, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long |
返回值 |
Long,非零表示成功,零表示失败 |
参数 |
lpRect --------- RECT,欲设置的矩形 X1 ------------- Long,左侧区域(Left)的值 Y1 ------------- Long,顶部区域(Top)的值 X2 ------------- Long,右侧区域(Right)的值 Y2 ------------- Long,底部区域(Bottom)的值 |
设定输出文本在指定的矩形范围内 |
Dim TxtRect as Rect '定义一个RECT变量 Call SetRect(TxtRect, 20, 20, Me.ScaleWidth - 20, Me.ScaleHeight) |
- 设定了输出文本的范围,要想改变文本的背景颜色和前景颜色,需要用到两个API函数:"SetBkColor"和"SetTextColor":
为指定的设备场景设置文本背景颜色。 SetBkColor声明: |
Private Declare Function SetBkColor Lib "gdi32" (ByVal hdc As Long, ByVal nBkMode As Long) As Long |
返回值: |
Long,前一个背景色,CLR_INVALID表示出错 |
参数: |
hdc ------------ Long,设备场景的句柄 crColor -------- Long,新背景颜色的RGB颜色值 |
设定文本背景颜色为浅灰色: |
Call SetBkColor(Me.hdc, RGB(200, 200,200)) |
要实现文本背景颜色还需要一个API函数:SetBkMode 指定阴影刷子、虚线画笔以及字符中的空隙的填充方式。 |
SetBkMode声明: |
Private Declare Function SetBkMode Lib "gdi32" (ByVal hdc As Long, ByVal nBkMode As Long) As Long |
返回值: |
Long,前一个背景模式的值 |
参数: |
hdc ------------ Long,设备场景的句柄 nBkMode -------- Long,下述常数之一: |
设置当前文本颜色。这种颜色也称为“前景色”。 SetTextColor声明: |
Private Declare Function SetTextColor Lib "gdi32" (ByVal hdc As Long, ByVal crColor As Long) As Long |
返回值: |
Long,文本色的前一个RGB颜色设定 |
参数: |
hdc ------------ Long,设备场景的句柄 crColor -------- Long,新的文本色 |
设定文本颜色为红色: |
Call SetTextColor(Me.hdc, RGB(255, 0, 0)) |
DrawText声明: |
Private Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As Rect, ByVal wFormat As Long) As Long |
返回值: |
Long,描绘文字的高度 |
参数: |
hdc ------------ Long,欲在其中显示文字的一个设备场景的句柄 lpStr ---------- String,欲描绘的文本字串 nCount --------- Long,欲描绘的字符数量。如果要描绘整个字串(直到空中止符),则可将这个参数设为-1 lpRect --------- RECT,指定用于绘图的一个格式化矩形(采用逻辑坐标) wFormat -------- Long,一个标志位数组,决定了以何种形式执行绘图。参考下面总结的常数类型列表 |
定义文本左对齐和自动换行常数: |
Private Const DT_NOCLIP = &H100 Private Const DT_WORDBREAK = &H10 Private Const DT_EDITCONTROL = &H2000 |
输出文本到窗体: |
Dim text As String'定义一个存储文本的变量 text="vb中,我想只用一个print在窗体上输出一串字符,但由于字行符较多且是连续的,我不想用多个print词句换行,请问有没有什么方法能,字符串自动换行" Call DrawText(Me.hdc, text, -1, Rect, DT_WORDBREAK Or DT_NOCLIP Or DT_EDITCONTROL) |
实例: |
Option Explicit Private Type Rect Private Declare Function SetBkMode Lib "gdi32" (ByVal hdc As Long, ByVal nBkMode As Long) As Long Private Const DT_NOCLIP = &H100 Private Sub Form_Load() Private Sub Form_Click() |
发
VB中利用DrawText输出字符串且自动换行相关推荐
- php 字符串进行计算_怎么在php中利用eval对字符串格式进行计算
怎么在php中利用eval对字符串格式进行计算 发布时间:2020-12-16 16:42:57 来源:亿速云 阅读:101 作者:Leah 本篇文章给大家分享的是有关怎么在php中利用eval对字符 ...
- php表格增加一行数据,““vb中数据库内容输出到excel如何把表格第一行合并添加一个大标题...
excel表格上面和下面都有行怎么在中间添加一行 excel表面和下面都有行怎么在中间添加一行的方法如下: 1.打开要处理的文档, 2.标定位到要插入的位置之后,比如要在2,3行之间插入,就定位到第3 ...
- java 中利用subString 截取字符串中第三个/后面的内容,并将/用代替
原文地址为: java 中利用subString 截取字符串中第三个"/"后面的内容,并将/用>代替 private String extractString(String ...
- VB.net小技巧——VB中利用TreeView控件和Box控件做知识备忘
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 VB.net小技巧--VB中利用TreeView控件和Box控件做知识备忘 这里不涉及代码的展示,主要是为了阐述一种做笔记的思想. 为 ...
- 写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串
写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串 #include<stdio.h> #include<string.h> int main() {void ...
- C#中利用正则表达式实现字符串搜索
原文转载自:http://www.yesky.com/top/389/2036889.shtml 摘要:本文给出了在C#下利用正则表达式实现字符串搜索功能的方法,通过对.NET框架下的正则表达式的研究 ...
- VB中利用CopyMemory使用指针
一.指针是什么? 不需要去找什么标准的定义,它就是一个32位整数,在C语言和在VB里都可以用Long类型来表示.在32位Windows平台下它和普通的32位长整型数没有什么不同,只不过它的值是一个内存 ...
- 在sql server中用正则表达式替换html标签,SQL Server中利用正则表达式替换字符串
建立正则替换函数,利用了OLE对象,以下是函数代码: --如果存在则删除原有函数 IF OBJECT_ID(N'dbo.RegexReplace') IS NOT NULL DROP FUNCTION ...
- JAVA输出字符串中字母_Java输出字符串中的大写英文字母数,小写英文字母数以及非英文字母的三种方法...
import java.util.*; /** * 3.编写一个程序,输出一个字符串中的大写英文字母数,小写英文字母数以及非英文字母. 提示: 方法一:使用循环提取字符,判断字符是否在A-Z .a-z ...
- VB中利用FSO对象对文件夹操作
windows还给我们提供了一个叫做FileSystemObject(简称FSO)对象.FSO对象模型中包括了计算机文件系统所有的对象.见下.利用这些对象可以更方便的操作文件系统. 对象 功能 D ...
最新文章
- 第二阶段个人博客总结8
- 理解Java字符串常量池与intern()方法
- 阿里云mysql 日志_mysql日志-阿里云开发者社区
- 大学生影视主题网页制作 银翼杀手2049电影网页设计模板 学生静态网页作业成品 dreamweaver电影HTML网站制作
- java 中linux命令参数说明,java中linux命令参数说明
- TensorFlow新功能「AutoGraph」:将Python转换为计算图
- 百家号在线视频编辑器的技术演进
- 什么是物联网(IoT)?
- Neo4j【有与无】【N6】Graph数据库内部
- 如何下载微信公众号音频,不需要插件,不安装软件
- ai跟随路径_AI 路径寻找器(形状组合工具)-怎么使用,使用教程
- 1156 十个成绩排序
- AI时代,APP运营是否会被淘汰
- Java Web之过滤器的简单创建
- 洛谷P3987 我永远喜欢珂朵莉~(set 树状数组)
- 8年老码农现身说法:大龄程序员找工作,为什么这么难?
- 读《做人的最高境界是厚道》有感
- 123456123456#5#----com.zzj.DinosourKnown235---前拼show后广--恐龙百科-333333
- js打开飞行模式_什么是飞行模式? 它有什么作用?什么时候应该打开它?
- (SQL入门经典+SQL必知必会+视频)笔记之一