摘要载入中…    请稍等…












内容载入中…    请稍等…

如长时间看不到内容,请关闭浏览器,重新打开此页!

芯友首页 应用软件 编程开发 网络硬件 资源下载 动漫音乐 精美图库 芯友论坛 视频教程 电脑技术QQ群:73422782
 ★★photoshop学友-史上最强播放器★★
 位置:编程开发>VB>VB窗体文章
◎→ 本类最新
VB6制作Win98风格的工具栏
动态加载ActiveX控件漫谈
实现窗口图像缩放、滚动技巧
VB中处理长列表框项的两种方法
VB应用程序中的工具提示和状态显
VB实现窗口的弹出式菜单
VB实现按钮浮动效果
◎→相关资源
C语言入门视频教程
C#编程WinForm入门视频
Asp.net入门视频教程下载
VC++编程视频教程下载
VB窗体文章
HTML入门教程
VB基础视频教程
VB窗体文章
VB文件文章
VB数据库文章
VB-API文章
VB控制文章
◎→ 热门资源
在VB中让控件大小和位置随着表单
c在VB中利用API实现窗体的平滑显
在ListBox适当设定水平滚动条的宽
运行中隐藏 显示窗口标题栏
运行时改变控件大小的两种方法
用VisualBasic制作半透明窗体
用Visual Basic设计三维图形按钮

设定StatusBar的文字成不同的颜色


日期:2008-10-20 17:42:51    来源:互联网
   
 ·在ListBox适当设定水平滚动条的宽度 ·MsComm 文字传输
 ·使用API获取颜色
设定StatusBar的文字成不同的颜色


设定StatusBar上的文字,该文字以StatusBar所在Form的字型设定为准,并以form
的ForeColor为字的颜色,文字过长时,自动会截除
这个程式的实质意义不太大,因为当文字被盖掉後需自行重新再呼叫这个Sub才能再
将文字显示出来,除非我们再使用Subclassing的方式,於statusBar接收到WM_PAINT
时,去呼叫这个SubRoutine,这程式着重於Font的了解

'below is within Form
Private Sub Command1_Click()
Call ShowPanelText(StatusBar1, 1, "这是一个有趣的程式hahahaha")
End Sub

'第一个叁数传入StatusBar
'第二个叁数表示文字要在第几个panel上 显示,由1算起
'第三个叁数是待显示的字串
Private Sub ShowPanelText(StatusBar1 As StatusBar, Pno As Long, ByVal PanelText
As String)
Dim bkcolor As Long
Dim Color As Long
Dim res As Long
Dim aRect As RECT, rect5 As RECT
Dim hfont As Long
Dim hdc2 As Long
Dim TextHeight As Long
Dim tx As TEXTMETRIC
Dim oScaleT As Long, oScaleL As Long, oScaleH As Long, oScaleW As Long
Dim oScaleM As Long

oScaleM = Me.ScaleMode
oScaleT = Me.ScaleTop
oScaleL = Me.ScaleLeft
oScaleH = Me.ScaleHeight
oScaleW = Me.ScaleWidth
Me.ScaleMode = 3

hdc2 = GetDC(StatusBar1.hwnd)
Call GetTextMetrics(Me.hdc, tx) '取得form 字型资讯
hfont = CreateFont(tx.tmHeight, tx.tmAveCharWidth, 0, 0, _
tx.tmWeight, 0, 0, 0, tx.tmCharSet, 0, 0, 0, _
tx.tmPitchAndFamily, Me.Font.Name) '依form的字型产生另一个font
'因为不知如何取得font的handle只好,使用CreateFont的方式来取得 hfont
Call SelectObject(hdc2, hfont) '设字型
res = SetTextColor(hdc2, Me.ForeColor) '设字的颜色
bkcolor = GetSysColor(COLOR_BTNFACE)
SetBkColor hdc2, bkcolor '设字的背景色
SetTextAlign hdc2, TA_TOP
TextHeight = Me.TextHeight(PanelText)
aRect.Top = (StatusBar1.Height - TextHeight) \ 2
If StatusBar1.Style = 0 Then
aRect.Left = StatusBar1.Panels(Pno).Left + 2
aRect.Right = aRect.Left + StatusBar1.Panels(Pno).Width - 6
Else
aRect.Left = StatusBar1.Left + 2
aRect.Right = StatusBar1.Width - 6
End If
aRect.Bottom = StatusBar1.Height
InvalidateRect StatusBar1.hwnd, aRect, 1 '宣告工作区无效,用来重画statusBar
UpdateWindow StatusBar1.hwnd
DrawText hdc2, PanelText, LenB(StrConv(PanelText, vbFromUnicode)), aRect, 0
ReleaseDC StatusBar1.hwnd, hdc2
DeleteObject (hfont)
Me.ScaleMode = oScaleM
Me.ScaleHeight = oScaleH
Me.ScaleTop = oScaleT
Me.ScaleLeft = oScaleL
Me.ScaleWidth = oScaleW
End Sub


'below is within .bas module
Option Explicit
Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Type TEXTMETRIC
tmHeight As Long
tmAscent As Long
tmDescent As Long
tmInternalLeading As Long
tmExternalLeading As Long
tmAveCharWidth As Long
tmMaxCharWidth As Long
tmWeight As Long
tmOverhang As Long
tmDigitizedAspectX As Long
tmDigitizedAspectY As Long
tmFirstChar As Byte
tmLastChar As Byte
tmDefaultChar As Byte
tmBreakChar As Byte
tmItalic As Byte
tmUnderlined As Byte
tmStruckOut As Byte
tmPitchAndFamily As Byte
tmCharSet As Byte
End Type
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
Declare Function GetTextMetrics Lib "gdi32" Alias "GetTextMetricsA" _
(ByVal hdc As Long, lpMetrics As TEXTMETRIC) As Long
Declare Function GetBkColor Lib "gdi32" (ByVal hdc As Long) As Long
Declare Function SetTextColor Lib "gdi32" (ByVal hdc As Long, _
ByVal crColor As Long) As Long
Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, _
ByVal hdc As Long) As Long
Declare Function SetBkColor Lib "gdi32" (ByVal hdc As Long, _
ByVal crColor As Long) As Long
Declare Function SetTextAlign Lib "gdi32" (ByVal hdc As Long, _
ByVal wFlags As Long) As Long
Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, _
ByVal hObject As Long) As Long
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
Declare Function InvalidateRect Lib "user32" (ByVal hwnd As Long, _
lpRect As RECT, ByVal bErase As Long) As Long

Declare Function UpdateWindow Lib "user32" (ByVal hwnd As Long) As Long
Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long
Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long

Public Const COLOR_BTNFACE = 15
Public Const TA_TOP = 0

 [1]

如何设定墙纸的显示方式?

在VB5中将英文字母及阿拉伯数字旋转任意角度

如何读取 Picture 内任何一点的颜色值?

--->新华拼音输入法 V5.0[1126]┊拼音文字化的汉字词语输入法┊简体中文特别版
--->NOD32官方升级服务器清除器 V1.0┊设定私服、清除官方服务器┊英文绿色免费版
--->WPS Office 2005 V6.2.0.1238┊WPS文字、表格、演示┊绿色下载站免安装特别版
--->多行文本替换工具 V1.00_简体中文绿色版_可替换多行文字、支持各种格式
--->Atlantis Word Processor V1.6.1.5┊直观无盲点文字处理软件┊英文绿色特别版
Tags:  设定 文字 颜色

芯友网版权所有 1999-2006 | 著作权与商标声明 | 法律声明 | 服务条款 | 隐私声明 | 联系我们