(已解决)请教关于Guitab UDF如何创建分属各个标签的控件?
本帖最后由 ahphsautoit 于 2013-2-28 11:01 编辑AU3中自带的标签控件会用,但创建UDF GuiTAB.au3中的标签,翻遍了每条示例和论坛资料,都只有标签页的控制方法,而没有涉及如何在选定的标签页创建其它控件的问题。有没有高手回答下? guitab几乎是模拟出来的,页操作和页效果可以认为是不同步的,不同的标签页可以认为是不同的窗口来操作 回复 1# ahphsautoit
没有特别的要求,还是用au3内建的创建tab吧,因为大量工作都是au3帮你做了。
若用udf,则很多事都需要你自己去做,远没有用默认的那么简单了。
#include <GuiConstantsEx.au3>
#include <GuiTab.au3>
#include <WindowsConstants.au3>
Global $hGui, $hTab, $aCtrl
$hGui = GUICreate("Tab UDF", 400, 300)
$hTab = _GUICtrlTab_Create($hGui, 0, 0, 640, 120)
$aCtrl = GUICtrlCreateLabel ("Label", 50, 50, 100, 20)
$aCtrl = GUICtrlCreateButton("Button", 60, 60, 100, 20)
$aCtrl = GUICtrlCreateCombo('Combo', 70, 70, 100, 20)
$aCtrl = GUICtrlCreateRadio('Radio', 80, 80, 100, 20)
For $i = 0 To 3
_GUICtrlTab_InsertItem($hTab, $i ,'Tab' & $i)
GUICtrlSetState($aCtrl[$i], $GUI_HIDE)
Next
GUISetState(@SW_SHOW, $hGui)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete()
Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam)
Local $hWndTab, $tNMHDR, $hWndGui, $iCode, $iIndex
$hWndTab = $hTab
If Not IsHWnd($hWndTab) Then $hWndTab = GUICtrlGetHandle($hTab)
$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
$hWndGui = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iCode = DllStructGetData($tNMHDR, "Code")
If $hWndGui == $hWndTab And $iCode == $TCN_SELCHANGE Then
$iIndex = _GUICtrlTab_GetCurSel($hTab)
For $i = 0 To UBound($aCtrl) - 1
If $iIndex == $i Then
GUICtrlSetState($aCtrl[$i], $GUI_SHOW)
Else
GUICtrlSetState($aCtrl[$i], $GUI_HIDE)
EndIf
Next
EndIf
Return $GUI_RUNDEFMSG
EndFunc
感谢netegg、happytc两位朋友的帮助。我自己编写有一个用于管理程序、资料、账户的程序供自己使用,目前又推翻了以前的代码重新再写一个新的,涉及的UDF有菜单、状态栏、进度条、富文本EDIT、视图列表等,就是卡在Guitab上了,已经改用系统默认的TAB来创建了。再次感谢两位! 回复 2# netegg
谢谢解惑! 回复 3# happytc
感谢你的代码,多有启迪!
页:
[1]