状态栏可以通过状态栏设置窗口来添加设置窗格(Pane),在设计窗口放入状态栏,点击属性栏里的Status(窗格)属性的的下拉按钮,即会弹出状态栏设置窗口,如图:
通过状态栏设置窗口可以添加或插入窗格,可以设置每个窗格的文本,提示,对齐方式,样式和宽度以及图标。设置示例:
一、属性
1、Icon(图标)
设置或者返回窗格的图标,参数为窗格的序号,从0开始。
2、Text(文本)
设置或返回窗格的文本,参数为窗格的序号,从0开始。
3、TipText(提示文本)
设置或返回窗格的提示文本,参数为窗格的序号,从0开始。
二、方法
1、AddPane(添加窗格)
添加一个窗格,如果使用代码添加窗格时要注意,状态栏默认就有一个已经添加的窗格。
该方法的函数原型如下:
Function AddPane(zText As CWStr, zTipText As CWStr = "", uType As Long = 0, nWidth As Long = 0, ResImg As String = "") As Long '多窗格 新增窗格,返回新添加的索引(从0开始),失败返回 -1 {3.0 绘制的文本带有边框,显示为低于窗口的平面。.SBT_NOBORDERS 绘制的文本没有边框。.SBT_OWNERDRAW 自绘.SBT_POPOUT 绘制的文本带有边框,看起来比窗口的平面高。.SBT_RTLREADING 文本将以与父窗口中的文本相反的方向显示。.SBT_NOTABPARSING 制表符将被忽略。}
2、RemovePane(移除窗格)
移除一个窗格。该方法的函数原型如下:
Function RemovePane(nIndex As Long) As Long '删除一个窗格,从0开始的索引,返回剩余窗格数 ,失败返回 0 ,窗格数最小为1 ,最后1个不可以删除
3、GetPartsCount(获取窗格数)
获取窗格个数。该方法的函数原型如下:
Function GetPartsCount() As Long '返回部件总数
三、事件
1、NM_Click事件
Function Form1_Status1_NM_Click(hWndForm As hWnd, hWndControl As hWnd,pNM As NMMOUSE) As LResult '用户已在控件单击鼠标左键
Function = FALSE ' 返回 TRUE 表示已处理了鼠标点击,不需要系统处理。返回 FALSE 允许系统默认处理点击。
End Function
状态栏单击事件。
2、NM_DBlclk事件
Function Form1_Status1_NM_DBlclk(hWndForm As hWnd, hWndControl As hWnd,pNM As NMMOUSE) As LResult '用户已在控件双击鼠标左键
Function = False '根据自己需要修改(函数必须有个返回,否则编译会警告)
End Function
状态栏双击事件。
四、示例
根据状态栏属性,设置一个例程,包括添加窗格,移除窗格,修改文本等。窗体如下:
代码如下:
Sub Form1_Command2_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd) '单击
Status1.RemovePane 0
End Sub
Sub Form1_Command1_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd) '单击
Status1.AddPane "增加的窗格","窗格提示",0,-1 '新增的窗格添加在原有窗格的后面,如果是最末尾一个,则需要设置长度为-1,表示后面的长度都是该窗格的。
End Sub
Sub Form1_Command3_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd) '单击
Status1.Text(0) = "新的窗格文本"
End Sub
Sub Form1_Timer1_WM_Timer(hWndForm As hWnd, wTimerID As Long) '定时器
Status1.Text(1) = NowString '用定时器刷新时间
End Sub
Function Form1_Status1_NM_Click(hWndForm As hWnd, hWndControl As hWnd,pNM As NMMOUSE) As LResult '用户已在控件单击鼠标左键
AfxMsg "您单击了状态栏的第" & pNM.dwItemSpec + 1 & "个窗格"
Function = FALSE ' 返回 TRUE 表示已处理了鼠标点击,不需要系统处理。返回 FALSE 允许系统默认处理点击。
End Function
运行效果:
完整例子:
https://github.com/rainheart311/VisualFreeBASIC/tree/master/StatusBar