转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
使用API在VB中创建状态栏         ★★★★

使用API在VB中创建状态栏

作者:闵涛 文章来源:闵涛的学习笔记 点击数:919 更新时间:2009/4/23 15:37:20

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下测试通过 


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台