本帖最后由 shqf 于 2010-4-16 22:15 编辑
近在编一程序,发现 状态栏设置的文本过长时导致程序出问题。程序意图是当在TAB的3 个标签页间切换时,状态栏能有不同的文本显示。摘录代码 如下:#NoTrayIcon
#include <GuiTab.au3>
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
$Form1_1 = GUICreate("Form1", 570, 449, 230, 133)
$Tab1 = GUICtrlCreateTab(6, 6, 558, 410)
_GUICtrlTab_SetItemSize($Tab1, 70, 22)
GUICtrlSetFont(-1, 10)
$TabSheet1 = GUICtrlCreateTabItem("安装软件")
$TabSheet2 = GUICtrlCreateTabItem("U盘管理")
$TabSheet3 = GUICtrlCreateTabItem("系统工具")
GUICtrlCreateTabItem("") ;关闭标签项目
$StatusBar1 = _GUICtrlStatusBar_Create($Form1_1)
Dim $StatusBar1_PartsWidth[3] = [300, 445, -1]
_GUICtrlStatusBar_SetParts($StatusBar1, $StatusBar1_PartsWidth)
_GUICtrlStatusBar_SetText($StatusBar1, "请选择要安装的软件", 0)
_GUICtrlStatusBar_SetText($StatusBar1, " " & @YEAR & "年" & @MON & "月" & @MDAY & "日", 1)
_GUICtrlStatusBar_SetText($StatusBar1, " BY SHQF", 2)
_GUICtrlStatusBar_SetMinHeight($StatusBar1, 25)
GUISetState(@SW_SHOW)
While 1
$TabCurSel = _GUICtrlTab_GetCurSel($Tab1)
$BarText = _GUICtrlStatusBar_GetText($StatusBar1, 0)
If $TabCurSel = 0 And $BarText <> "请选择要安装的软件" Then
_GUICtrlStatusBar_SetText($StatusBar1, "请选择要安装的软件", 0)
ElseIf $TabCurSel = 1 And $BarText <> "12345678" Then
_GUICtrlStatusBar_SetText($StatusBar1, "12345678",0)
ElseIf $TabCurSel = 2 And $BarText <> "3333333" Then
_GUICtrlStatusBar_SetText($StatusBar1, "3333333",0)
EndIf
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
如上代码,慢速切换好象没有问题,快速切换时autoit马上出错。编译成可执行程序后也同样出错 。
如将31行、32行的“12345678”缩短成7个字符则没有问题。发现:当重新设置状态栏文本半角字符超过7个,全解
字符超过3个,在快速切换标签页时程序就出错。
不知是否是GuiStatusBar.au3存在BUG?还是其他什么原因?各位有兴趣的帮忙看一下。
PS:我的系统XPSP2,AUTOIT程序版本:3.3.5.6 第一汉化版(2010-03-04) |