欢迎光临
我们一直在努力

使用api在vb中创建状态栏_visualbasic教程

建站超值云服务器,限时71元/月

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)
PrivateDeclareFunctionCreateStatusWindowLib”comctl32.dll”(ByValstyleAsLong,ByVallpszTextAsString,ByValhwndParentAsLong,ByValwIDAsLong)AsLong
PrivateDeclareFunctionSendMessageLib”user32.dll”Alias”SendMessageA”(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,ByReflParamAsAny)AsLong
PrivateDeclareFunctionMoveWindowLib”user32.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下测试通过

->

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 使用api在vb中创建状态栏_visualbasic教程
分享到: 更多 (0)