站长学院通行证

 

返回“站长学院”网站首页

 当前位置 → 中国站长学院网络编程Visual Basic教程 → 浏览正文


使用API在VB中创建状态栏


作者:中国站长学院[收集整理]     来源:互联网转载     点击数:     更新时间:2008年03月17日

【字体: 】           【背景色 杏仁黄 秋叶褐 胭脂红 芥末绿 天蓝 雪青 灰 银河白(默认色) 】    【收藏本文】   【打印


VB中你想创建一个简单的状态栏也用上那个几MB的OCX吗?有没有方法可以不用呢,下面就是以API来创建
一个状态栏,VB让初学朋友学得很方便,但对你对VB有所了解的时候,却发现VB原来就是鸡肋......

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

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

CreateStatusBarDemo

codebyloveboom[DFCG][FCG][US]
email:loveboom#163.com
http://blog.csdn.net/bmd2chen

-------------------------------------------------
DimhWndBarAsLong;状态栏句柄
PrivateConstIDC_STATBARAsLong=&H2005状态栏ID

PrivateSubCommand1_Click()
DimretAsBoolean

ret=CreateStatBar(Me.hwnd,IDC_STATBAR,hWndBar)
Ifret=TrueThen
MsgBox创建状态栏成功!
Else
MsgBox创建状态栏失败:-(!,48
EndIf

EndSub


PrivateSubCommand2_Click()
SetBarTexthWndBar,1,CreateStatusBarDemo:-)!
EndSub

移动状态栏
PrivateSubForm_Resize()
MoveStatWindowhWndBar
EndSub

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

PrivateConstWS_CHILDAsLong=&H40000000WS_CHILD和WS_VISIBLE是必需函数
PrivateConstWS_VISIBLEAsLong=&H10000000
PrivateConstWM_USERAsLong=&H400
PrivateConstSB_SETPARTSAsLong=(WM_USER 4)这两个常数在VB自带的api查询器里没有,需要手工添加
PrivateConstSB_SETTEXTAAsLong=(WM_USER 1)
PrivateDeclareFunctionCreateStatusWindowLibcomctl32.dll(ByValstyleAsLong,ByVallpszTextAsString,ByValhwndParentAsLong,ByValwIDAsLong)AsLong
PrivateDeclareFunctionSendMessageLibuser32.dllAliasSendMessageA(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,ByReflParamAsAny)AsLong
PrivateDeclareFunctionMoveWindowLibuser32.dll(ByValhwndAsLong,ByValxAsLong,ByValyAsLong,ByValnWidthAsLong,ByValnHeightAsLong,ByValbRepaintAsLong)AsLong

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

创建状态栏
函数说明:
ParenthWnd  状态栏所属的句柄
IDC_STATBAR状态栏的ID号,用于对状态栏的单击之类的操作
hBarWin函数返回状态栏的句柄
szText要显示的信息

---------------------------------------------------
FunctionCreateStatBar(ParenthWndAsLong,IDC_STATBARAsLong,hBarWinAsLong,OptionalszTextAsString=Demo)AsBoolean
DimretAsLong返回值
Dimbar(0To1)AsLong分栏的各项位置
DimszbarAsLong分栏的数目

-------------------------------------------------------
定义数组
bar(0)=235第一栏宽度为245
bar(1)=-1-1表示后面的分为一栏

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

ret=CreateStatusWindow(WS_CHILDOrWS_VISIBLE,ByValszText,ParenthWnd,IDC_STATBAR)创建状态栏
szbar=2
Ifret=0Then如果创建失败则退出过程
CreateStatBar=False
ExitFunction
EndIf
hBarWin=ret返回状态栏的句柄
Ifszbar>1Then因为默认就是分一栏所以,这里判断为大于1就是分栏
SendMessagehBarWin,SB_SETPARTS,szbar,bar(0)分栏
EndIf
CreateStatBar=True创建成功返回真值
EndFunction

----------------------------
移动状态栏
----------------------------
SubMoveStatWindow(hBarAsLong)
IfhBarThen如果状态栏句柄不为0则移动
CallMoveWindow(hBar,0,0,0,0,True)
EndIf
EndSub

------------------------------
在指定栏上显示信息
hBar为状态栏的句柄
szbar指定要在哪一栏显示信息,从0开始计,也就是说,如果分两栏,我们要在第二栏里显示信息,szbar就设置为1
szText要显示的信息
-------------------------------
SubSetBarText(hBarAsLong,szbarAsLong,strTextAsString)
SendMessagehBar,SB_SETTEXTA,szbar,ByValstrText
EndSub

这样状态栏就基本可行了,当然,你还可以用SetWindowLong来处理状态栏信息.
程序在Win2003vb6sp6下测试通过

->


责任编辑:中国站长学院

注册投稿

收藏本文到  >>>

相关文章

动网--社区论坛新模式的领航者04/11 
从宏观到细节,我们一样坚持完美04/11 
[动网.Net]融入新技术,点亮新型04/11 
IWMS官方论坛安家动网.Net04/11 
动网-动易强强联手,开掘.NET产品04/11 
目录式伪静态 -- 新型社区模式元素04/11 
[动网.Net]PK、电子商务、活动04/11 
[动网 .Net] 创新、颠覆和对新04/11 
财付通参加动网站长聚会共谋深入合作04/11 
腾讯财付通携手动网 共推论坛交易模式04/11 
动网广州站长聚会圆满结束04/11 
模板教程【Pagetitle 标记】04/11 
模板教程【Prenext 标记】(十04/11 
模板教程【Pagebreak 标记】04/11 
模板教程【Pagelist 标记】(04/11 
模板教程【List 标记】(十一)04/11 

推荐导读

热门资讯

资讯快报

论坛新贴

返回首页

关于我们 - 帮助(?) - 广告服务 - 诚征英才 - 友情链接 - 网站地图 - 站长BLOG

返回网站顶部

Copyright © 2007 中国站长学院(CNZZXY.COM). All Rights Reserved
站长学院服务资咨热线:0755-84289786    业务合作:(0)13554938953  (0)13423986856    网络宽带及主机提供:深圳傲网科技
粤ICP备08006968号   站长:忧郁的秋天(向管理员发邮件)   站长交流QQ群①:1815595   站长交流QQ群②:32960074