分享
 
 
 

使用API在VB中创建状态栏

王朝vb·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

VB中你想创建一个简单的状态栏也用上那个几MB的OCX吗?有没有方法可以不用呢,下面就是以API来创建

一个状态栏,VB让初学朋友学得很方便,但对你对VB有所了解的时候,却发现VB原来就是鸡肋......

先创建一个窗体,在窗体里添加两个Button,然后写下以下代码:

'-----------------------------------------------

'

' Create Status Bar Demo

'

' code by loveboom[DFCG][FCG][US]

' email:loveboom#163.com

' http://blog.csdn.net/bmd2chen

'

'-------------------------------------------------

Dim hWndBar As Long ;状态栏句柄

Private Const IDC_STATBAR As Long = &H2005 '状态栏ID

Private Sub Command1_Click()

Dim ret As Boolean

ret = CreateStatBar(Me.hwnd, IDC_STATBAR, hWndBar)

If ret = True Then

MsgBox "创建状态栏成功!"

Else

MsgBox "创建状态栏失败:-(!", 48

End If

End Sub

Private Sub Command2_Click()

SetBarText hWndBar, 1, "Create StatusBar Demo:-)!"

End Sub

'移动状态栏

Private Sub Form_Resize()

MoveStatWindow hWndBar

End Sub

然后添加一个模块,模块里写上代码:

Private Const WS_CHILD As Long = &H40000000 'WS_CHILD 和WS_VISIBLE是必需函数

Private Const WS_VISIBLE As Long = &H10000000

Private Const WM_USER As Long = &H400

Private Const SB_SETPARTS As Long = (WM_USER + 4) '这两个常数在VB自带的api查询器里没有,需要手工添加

Private Const SB_SETTEXTA As Long = (WM_USER + 1)

Private Declare Function CreateStatusWindow Lib "comctl32.dll" (ByVal style As Long, ByVal lpszText As String, ByVal hwndParent As Long, ByVal wID As Long) As Long

Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long

Private Declare Function MoveWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long

'--------------------------------------------------

'

' 创建状态栏

'函数说明:

'ParenthWnd状态栏所属的句柄

'IDC_STATBAR 状态栏的ID号,用于对状态栏的单击之类的操作

'hBarWin 函数返回状态栏的句柄

'szText 要显示的信息

'

'---------------------------------------------------

Function CreateStatBar(ParenthWnd As Long, IDC_STATBAR As Long, hBarWin As Long, Optional szText As String = "Demo") As Boolean

Dim ret As Long '返回值

Dim bar(0 To 1) As Long '分栏的各项位置

Dim szbar As Long '分栏的数目

'-------------------------------------------------------

'定义数组

bar(0) = 235 '第一栏宽度为245

bar(1) = -1 '-1表示后面的分为一栏

'-------------------------------------------------------

ret = CreateStatusWindow(WS_CHILD Or WS_VISIBLE, ByVal szText, ParenthWnd, IDC_STATBAR) '创建状态栏

szbar = 2

If ret = 0 Then '如果创建失败则退出过程

CreateStatBar = False

Exit Function

End If

hBarWin = ret '返回状态栏的句柄

If szbar > 1 Then '因为默认就是分一栏所以,这里判断为大于1就是分栏

SendMessage hBarWin, SB_SETPARTS, szbar, bar(0) '分栏

End If

CreateStatBar = True '创建成功返回真值

End Function

'----------------------------

'移动状态栏

'----------------------------

Sub MoveStatWindow(hBar As Long)

If hBar Then '如果状态栏句柄不为0则移动

Call MoveWindow(hBar, 0, 0, 0, 0, True)

End If

End Sub

'------------------------------

'在指定栏上显示信息

'hBar 为状态栏的句柄

'szbar 指定要在哪一栏显示信息,从0开始计,也就是说,如果分两栏,我们要在第二栏里显示信息,szbar就设置为1

'szText 要显示的信息

'-------------------------------

Sub SetBarText(hBar As Long, szbar As Long, strText As String)

SendMessage hBar, SB_SETTEXTA, szbar, ByVal strText

End Sub

这样状态栏就基本可行了,当然,你还可以用SetWindowLong来处理状态栏信息.

程序在Win 2003 vb6 sp6下测试通过

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有