使用API在VB中创建状态栏_VB.net_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

使用API在VB中创建状态栏

作者:黑客防线网安VB教程基地 来源:黑客防线网安VB教程基地 浏览次数:0

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

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=&H40000000'WS_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下测试通过

->

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-14611-1.html
网站维护教程更新时间:2012-04-03 01:10:42  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer