VB中你想創(chuàng)建一個(gè)簡單的狀態(tài)欄也用上那個(gè)幾MB的OCX嗎?有沒有方法可以不用呢,下面就是以API來創(chuàng)建
一個(gè)狀態(tài)欄,VB讓初學(xué)朋友學(xué)得很方便,但對你對VB有所了解的時(shí)候,卻發(fā)現(xiàn)VB原來就是雞肋......
先創(chuàng)建一個(gè)窗體,在窗體里添加兩個(gè)Button,然后寫下以下代碼:
'-----------------------------------------------
'
'CreateStatusBarDemo
'
'codebyloveboom[DFCG][FCG][US]
'email:loveboom#163.com
'
PrivateConstWS_VISIBLEAsLong=&H10000000
PrivateConstWM_USERAsLong=&H400
PrivateConstSB_SETPARTSAsLong=(WM_USER 4)'這兩個(gè)常數(shù)在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
'--------------------------------------------------
'
'創(chuàng)建狀態(tài)欄
'函數(shù)說明:
'ParenthWnd 狀態(tài)欄所屬的句柄
'IDC_STATBAR狀態(tài)欄的ID號,用于對狀態(tài)欄的單擊之類的操作
'hBarWin函數(shù)返回狀態(tài)欄的句柄
'szText要顯示的信息
'
'---------------------------------------------------
FunctionCreateStatBar(ParenthWndAsLong,IDC_STATBARAsLong,hBarWinAsLong,OptionalszTextAsString="Demo")AsBoolean
DimretAsLong'返回值
Dimbar(0To1)AsLong'分欄的各項(xiàng)位置
DimszbarAsLong'分欄的數(shù)目
'-------------------------------------------------------
'定義數(shù)組
bar(0)=235'第一欄寬度為245
bar(1)=-1'-1表示后面的分為一欄
'-------------------------------------------------------
ret=CreateStatusWindow(WS_CHILDOrWS_VISIBLE,ByValszText,ParenthWnd,IDC_STATBAR)'創(chuàng)建狀態(tài)欄
szbar=2
Ifret=0Then'如果創(chuàng)建失敗則退出過程
CreateStatBar=False
ExitFunction
EndIf
hBarWin=ret'返回狀態(tài)欄的句柄
Ifszbar>1Then'因?yàn)槟J(rèn)就是分一欄所以,這里判斷為大于1就是分欄
SendMessagehBarWin,SB_SETPARTS,szbar,bar(0)'分欄
EndIf
CreateStatBar=True'創(chuàng)建成功返回真值
EndFunction
'----------------------------
'移動(dòng)狀態(tài)欄
'----------------------------
SubMoveStatWindow(hBarAsLong)
IfhBarThen'如果狀態(tài)欄句柄不為0則移動(dòng)
CallMoveWindow(hBar,0,0,0,0,True)
EndIf
EndSub
'------------------------------
'在指定欄上顯示信息
'hBar為狀態(tài)欄的句柄
'szbar指定要在哪一欄顯示信息,從0開始計(jì),也就是說,如果分兩欄,我們要在第二欄里顯示信息,szbar就設(shè)置為1
'szText要顯示的信息
'-------------------------------
SubSetBarText(hBarAsLong,szbarAsLong,strTextAsString)
SendMessagehBar,SB_SETTEXTA,szbar,ByValstrText
EndSub
這樣狀態(tài)欄就基本可行了,當(dāng)然,你還可以用SetWindowLong來處理狀態(tài)欄信息.
程序在Win2003vb6sp6下測試通過
新聞熱點(diǎn)
疑難解答
圖片精選