设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1210|回复: 3
打印 上一主题 下一主题

[Access本身] [借花献佛]Status Bar Demo

[复制链接]
跳转到指定楼层
1#
发表于 2005-4-16 07:36:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
源自VB东东,一样适合他的兄弟VBA。

STEP ONE:

CREATE ONE FORM AND COPY THE BELOWS INTO

Option Compare Database

'-----------------------------------------------
'
'               Create Status Bar Demo
'
'  code by loveboom[DFCG][FCG][US]
'  email:loveboom#163.com
'  http://blog.csdn.net/bmd2chen
'
'-------------------------------------------------
Private 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 Dem-)!"
End Sub

'移动状态栏
Private Sub Form_Resize()
MoveStatWindow hWndBar
End Sub

STEP TWO:

CREATE ANOTHER NEW MODULE AND COPY THE BELOWS INTO

Option Compare Database

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_SETTEXT
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2005-4-16 17:35:00 | 只看该作者
好东东!
3#
发表于 2005-4-16 18:25:00 | 只看该作者
收藏
4#
发表于 2005-4-16 19:45:00 | 只看该作者
值得,谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-2 13:56 , Processed in 0.091359 second(s), 27 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表