DrawText的详细用法?

whupyf 2003-05-13 04:19:43
http://expert.csdn.net/Expert/topic/1766/1766592.xml?temp=.9609186
中RECT是干什么用的?如何用?
还有
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


wFormat是long型的.有什么用该怎样用
...全文
2942 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
officercat 2010-06-23
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 marlenechenbin 的回复:]
DrawText可以显示文本,但是如果我想让它显示变量应该如何修改参数。
例如我想显示有n个信息。(n是变量)
[/Quote]

不知道我是不是把你的问题理解简单了
n是非字符变量的话,直接用sprintf把其打印成字符串再显示啊

VC里面很多显示基本都需要转换成文本的
幸福绿光 2010-06-21
  • 打赏
  • 举报
回复
DrawText可以显示文本,但是如果我想让它显示变量应该如何修改参数。
例如我想显示有n个信息。(n是变量)
whupyf 2003-05-18
  • 打赏
  • 举报
回复
太好了.

不过又有了另一个问题请看

http://expert.csdn.net/Expert/topic/1797/1797236.xml?temp=4.732913E-02
rainstormmaster 2003-05-15
  • 打赏
  • 举报
回复
wFormat Long,一个标志位数组,决定了以何种形式执行绘图。参考下面总结的常数类型列表
标志常数 说明
DT_BOTTOM 必须同时指定DT_SINGLE。指示文本对齐格式化矩形的底边
DT_CALCRECT 象下面这样计算格式化矩形:多行绘图时矩形的底边根据需要进行延展,以便 容下所有文字;单行绘图时,延展矩形的右侧。不描绘文字。由lpRect参数指定的矩形会载入计算出来的值
DT_CENTER 文本垂直居中
DT_EXPANDTABS 描绘文字的时候,对制表站进行扩展。默认的制表站间距是8个字符。但是,可用DT_TABSTOP标志改变这项设定
DT_EXTERNALLEADING 计算文本行高度的时候,使用当前字体的外部间距属性(the external leading attribute)
DT_LEFT 文本左对齐
DT_NOCLIP 描绘文字时不剪切到指定的矩形
DT_NOPREFIX 通常,函数认为 & 字符表示应为下一个字符加上下划线。该标志禁止这种行为
DT_RIGHT 文本右对齐
DT_SINGLELINE 只画单行
DT_TABSTOP 指定新的制表站间距,采用这个整数的高8位
DT_TOP 必须同时指定DT_SINGLE。指示文本对齐格式化矩形的顶部
DT_VCENTER 必须同时指定DT_SINGLE。指示文本对齐格式化矩形的中部
DT_WORDBREAK 进行自动换行。如用SetTextAlign函数设置了TA_UPDATECP标志,这里的设置则无效
bydisplay 2003-05-14
  • 打赏
  • 举报
回复
指定用于绘图的一个格式化矩形
whupyf 2003-05-14
  • 打赏
  • 举报
回复
还是不明白RECT这个框是干什么的?
whupyf 2003-05-14
  • 打赏
  • 举报
回复
我想在另一个窗体上(一个游戏)
发现写的字带有背景色.而且由于游戏在运行中所以需要不停的重写才能看见.
这样就有个问题,文字看起来很闪
即使用timer控件最快的时间间隔写(1/1000秒)仍然非常闪烁啊.
whupyf 2003-05-14
  • 打赏
  • 举报
回复
我再看看资料

那么第二个问题怎么解决啊?
rainstormmaster 2003-05-14
  • 打赏
  • 举报
回复
lpRect --------- RECT,指定用于绘图的一个格式化矩形(采用逻辑坐标)
用户 昵称 2003-05-13
  • 打赏
  • 举报
回复
DT_BOTTOM 在矩形的底部显示,必须和DT_SINGLELINE合用
DT_CENTER 水平居中
DT_VCENTER 垂直居中
DT_SINGLELINE 用来显示单独一行
rainstormmaster 2003-05-13
  • 打赏
  • 举报
回复
【VB声明】
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

【别名】
DrawTextA

【说明】
DT_BOTTOM
必须同时指定DT_SINGLE。指示文本对齐格式化矩形的底边
DT_CALCRECT
象下面这样计算格式化矩形:多行绘图时矩形的底边根据需要进行延展,以便容下所有文字;单行绘图时,延展矩形的右侧。不描绘文字。由lpRect参数指定的矩形会载入计算出来的值
DT_CENTER
文本垂直居中
DT_EXPANDTABS
描绘文字的时候,对制表站进行扩展。默认的制表站间距是8个字符。但是,可用DT_TABSTOP标志改变这项设定
DT_EXTERNALLEADING
计算文本行高度的时候,使用当前字体的外部间距属性(the
external leading attribute)
DT_LEFT
文本左对齐
DT_NOCLIP
描绘文字时不剪切到指定的矩形
DT_NOPREFIX
通常,函数认为 &
字符表示应为下一个字符加上下划线。该标志禁止这种行为
DT_RIGHT
文本右对齐
DT_SINGLELINE
只画单行
DT_TABSTOP
指定新的制表站间距,采用这个整数的高8位
DT_TOP
必须同时指定DT_SINGLE。指示文本对齐格式化矩形的顶部
DT_VCENTER
必须同时指定DT_SINGLE。指示文本对齐格式化矩形的中部
DT_WORDBREAK
进行自动换行。如用SetTextAlign函数设置了TA_UPDATECP标志,这里的设置则无效

【返回值】
Long,描绘文字的高度

【参数表】
hdc ------------ Long,欲在其中显示文字的一个设备场景的句柄

lpStr ---------- String,欲描绘的文本字串

nCount --------- Long,欲描绘的字符数量。如果要描绘整个字串(直到空中止符),则可将这个参数设为-1

lpRect --------- RECT,指定用于绘图的一个格式化矩形(采用逻辑坐标)

wFormat -------- Long,一个标志位数组,决定了以何种形式执行绘图。参考下面总结的常数类型列表
标志常数

示例:
Const DC_ACTIVE = &H1
Const DC_ICON = &H4
Const DC_TEXT = &H8
Const BDR_SUNKENOUTER = &H2
Const BDR_RAISEDINNER = &H4
Const EDGE_ETCHED = (BDR_SUNKENOUTER Or BDR_RAISEDINNER)
Const BF_BOTTOM = &H8
Const BF_LEFT = &H1
Const BF_RIGHT = &H4
Const BF_TOP = &H2
Const BF_RECT = (BF_LEFT Or BF_TOP Or BF_RIGHT Or BF_BOTTOM)
Const DFC_BUTTON = 4
Const DFC_POPUPMENU = 5 'Only Win98/2000 !!
Const DFCS_BUTTON3STATE = &H10
Const DT_CENTER = &H1
Const DC_GRADIENT = &H20 'Only Win98/2000 !!
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Declare Function DrawCaption Lib "user32" (ByVal hWnd As Long, ByVal hdc As Long, pcRect As RECT, ByVal un As Long) As Long
Private Declare Function DrawEdge Lib "user32" (ByVal hdc As Long, qrc As RECT, ByVal edge As Long, ByVal grfFlags As Long) As Long
Private Declare Function DrawFocusRect Lib "user32" (ByVal hdc As Long, lpRect As RECT) As Long
Private Declare Function DrawFrameControl Lib "user32" (ByVal hdc As Long, lpRect As RECT, ByVal un1 As Long, ByVal un2 As Long) As Long
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
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
Private Declare Function OffsetRect Lib "user32" (lpRect As RECT, ByVal x As Long, ByVal y As Long) As Long
Private Sub Form_Paint()
Dim R As RECT
'Clear the form
Me.Cls
'API uses pixels
Me.ScaleMode = vbPixels
'Set the rectangle's values
SetRect R, 0, 0, Me.ScaleWidth, 20
'Draw a caption on the form
DrawCaption Me.hWnd, Me.hdc, R, DC_ACTIVE Or DC_ICON Or DC_TEXT Or DC_GRADIENT
'Move the recatangle
OffsetRect R, 0, 22
'Draw an edge on our window
DrawEdge Me.hdc, R, EDGE_ETCHED, BF_RECT
OffsetRect R, 0, 22
'Draw a focus rectangle on our window
DrawFocusRect Me.hdc, R
OffsetRect R, 0, 22
'Draw a frame control on our window
DrawFrameControl Me.hdc, R, DFC_BUTTON, DFCS_BUTTON3STATE
OffsetRect R, 0, 22
'draw some text on our form
DrawText Me.hdc, "Hello World !", Len("Hello World !"), R, DT_CENTER
End Sub
TechnoFantasy 2003-05-13
  • 打赏
  • 举报
回复
wFormat 值 类型 说明
DT_BOTTOM 与DT_SINGLELINE组合使用,指定底对齐
DT_CENTER 文本水平居中
DT_VCENTER 垂直对中文本(与DT_SINGLELINE组合使用)
DT_LEFT 文本左对齐
DT_RIGHT 文本右对齐
DT_TOP 顶对齐(与DT_SINGLELINE组合使用)
DT_SINGLELINE 绘制在一行中。回车换行符不打断该行

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧