标签页下如何引入一个存在的FORM?『已经解决』
本帖最后由 loveauto 于 2012-9-10 13:52 编辑因为主界面有有很多个GUICtrlCreateTab创建的标签页,如果直接在每个标签页下面UI及代码实现,主文件过于庞大杂乱,是否可以把每个标签页的功能一个单独的FORM实现,在将FORM加到标签页? 想法是不错,能够加快显示速度。
通过子窗口的方式来实现,个人应该也是可以的。 善用以下參數,即可有效修飾…
GUISetState(@SW_LOCK, $Menu)
GUISetState(@SW_UNLOCK, $Menu)
至於重複調借?表格是相同的,不知道調借的價值…
#include <GuiTab.au3>
#include <WindowsConstants.au3>
Local $iWidth = 640, $iHeight = 480
Local $aItem
$hForm = GUICreate("tab", $iWidth, $iHeight)
$hTab = GUICtrlCreateTab(1, 1, $iWidth-2, 22)
$aItem = GUICtrlCreateTabItem("窗口1")
$aItem = GUICtrlCreateTabItem("窗口2")
GUICtrlCreateTabItem("")
GUISetState(@SW_SHOW, $hForm)
$aItem = GUICreate("子窗口1", $iWidth - 4, $iHeight - 24, 2, 24, 0x80000000, 0x00000040 + 0x00000010, $hForm)
GUISetBkColor(0xFF7788)
GUICtrlCreateLabel("我是子窗口1",30,40)
GUISetState(@SW_HIDE)
$aItem = GUICreate("子窗口2", $iWidth - 4, $iHeight - 24, 2, 24, 0x80000000, 0x00000040 + 0x00000010, $hForm)
GUISetBkColor(0x77FF88)
GUICtrlCreateLabel("我是子窗口2",30,40)
GUISetState(@SW_HIDE)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
_GUICtrlTab_ClickTab($hTab, $aItem)
Do
Until GUIGetMsg()=-3
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR
$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $iIDFrom
Case $hTab
If $iCode = $NM_CLICK Then
_ChildSwitch(Int(_GUICtrlTab_GetCurSel($hTab)))
EndIf
EndSwitch
EndFunc ;==>WM_NOTIFY
Func _ChildSwitch($iActTab)
For $i = 0 To UBound($aItem) - 1
If $i = $iActTab Then
GUISetState(@SW_SHOW, $aItem[$i])
Else
GUISetState(@SW_HIDE, $aItem[$i])
EndIf
Next
EndFunc
非常感谢xiehuahere 、ZEROBOYS 、298311657 的热情帮助,子窗加GUISetState是不错的选择
页:
[1]