Multipart Statusbar


nomainwin
'statusbar parts:
'0=changing text
'1=Window Title
'2=Numberlock On/Off
'3=Ins On/Off
'4=time

' Open window
WindowWidth=600:WindowHeight=150
button #1, "Update",[update],UL,10,10,100,30
open "StatusBar Test" for window as #1
    print #1, "trapclose [quit]"
    print #1, "resizehandler [size]"

    ' Init common controls
    calldll #comctl32, "InitCommonControls", _
    re as void

    hStatus=StatusBar(hwnd(#1), "Changing Text")
    call SetParts hStatus
    Call SetText hStatus,1,"StatusBar Test"
    Call SetText hStatus,4,time$()
    timer 1000, [changeTime]

wait
[changeTime]
    Call SetText hStatus,4,time$()
    numLock=GetKeyState(_VK_NUMLOCK)
    if numLock=0 then
        call SetText hStatus, 2, "NUM OFF"
    else
        call SetText hStatus, 2, "NUM ON"
    end if

    insLock=GetKeyState(_VK_INSERT)
    if insLock=0 then
        call SetText hStatus, 3, "INS OFF"
    else
        call SetText hStatus, 3, "INS ON"
    end if

    wait

[update]
    updateTotal=updateTotal+1
    update$="Message updated ";str$(updateTotal);" times."
    call SetText hStatus,0,update$
    wait

[size]
    calldll #user32, "SendMessageA",_
    hStatus as ulong,_WM_SIZE as long,_
    0 as long, WindowWidth as long,_
    re as long
    wait

[quit]
    calldll #user32, "SendMessageA",_
    hStatus as word,_WM_DESTROY as word,_
    0 as word,0 as long,re as long
    close #1:end

Function StatusBar(hWnd, txt$)
    style = _WS_VISIBLE or _WS_CHILD
    calldll #comctl32, "CreateStatusWindow",_
    style as long,_   'window style
    txt$ as ptr,_     'desired caption
    hWnd as long,_    'handle of parent window
    10 as word,_      'ID, not used by LB
    StatusBar as ulong 'returns handle of status bar
    End Function

Sub SetParts hWnd
    SB.SETPARTS = 1028
    struct prt,edge1 as long, edge2 as long,_
        edge3 as long,edge4 as long,edge5 as long
    prt.edge1.struct=180
    prt.edge2.struct=300
    prt.edge3.struct=380
    prt.edge4.struct=460
    prt.edge5.struct=-1
    numParts=5
    calldll #user32,  "SendMessageA",_
    hWnd as ulong, SB.SETPARTS as long,_
    numParts as long,prt as struct,r as long
    End Sub

Sub SetText hWnd,segID,txt$
    SB.SETTEXT  = 1025
    calldll #user32,  "SendMessageA",_
    hWnd as ulong,SB.SETTEXT as long,_
    segID as long,txt$ as ptr,r as long
    End Sub

Function GetKeyState(key)
    CallDLL #user32, "GetKeyState",key As long,_
    GetKeyState As long
    End Function


Home

Source Code

Utilities

Internet

Games

Graphics

Media Demos

Snippets

DLL's

API Resources

Freeware

LB 4 Companion

Mastering LB 3

LB Workshop

Game Workshop

Links

Index