找回密码
 加入
搜索
查看: 2229|回复: 4

[网络通信] 标签页下如何引入一个存在的FORM?『已经解决』

  [复制链接]
发表于 2012-9-8 16:31:44 | 显示全部楼层 |阅读模式
本帖最后由 loveauto 于 2012-9-10 13:52 编辑

因为主界面有有很多个GUICtrlCreateTab创建的标签页,如果直接在每个标签页下面UI及代码实现,主文件过于庞大杂乱,是否可以把每个标签页的功能一个单独的FORM实现,在将FORM加到标签页?
发表于 2012-9-8 20:20:51 | 显示全部楼层
想法是不错,能够加快显示速度。
通过子窗口的方式来实现,个人应该也是可以的。
发表于 2012-9-9 00:16:46 | 显示全部楼层
善用以下參數,即可有效修飾…
GUISetState(@SW_LOCK, $Menu)
GUISetState(@SW_UNLOCK, $Menu)

至於重複調借?表格是相同的,不知道調借的價值…
发表于 2012-9-9 13:25:58 | 显示全部楼层

#include <GuiTab.au3>
#include <WindowsConstants.au3>
Local $iWidth = 640, $iHeight = 480
Local $aItem[2][2]
$hForm = GUICreate("tab", $iWidth, $iHeight)
$hTab = GUICtrlCreateTab(1, 1, $iWidth-2, 22)
$aItem[0][0] = GUICtrlCreateTabItem("窗口1")
$aItem[1][0] = GUICtrlCreateTabItem("窗口2")
GUICtrlCreateTabItem("")
GUISetState(@SW_SHOW, $hForm)

$aItem[0][1] = GUICreate("子窗口1", $iWidth - 4, $iHeight - 24, 2, 24, 0x80000000, 0x00000040 + 0x00000010, $hForm)
GUISetBkColor(0xFF7788)
GUICtrlCreateLabel("我是子窗口1",30,40)
GUISetState(@SW_HIDE)

$aItem[1][1] = 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[0][0])

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][1])
                Else
                        GUISetState(@SW_HIDE, $aItem[$i][1])
                EndIf
        Next
EndFunc
 楼主| 发表于 2012-9-9 16:10:49 | 显示全部楼层
非常感谢xiehuahere 、ZEROBOYS 、298311657 的热情帮助,子窗加GUISetState是不错的选择
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-30 01:38 , Processed in 0.082681 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表