131738 发表于 2009-8-4 17:31:17

多层标签页实例(官网搜来)

暂时无用!搜索一场,丢了可惜!放此处可能有人需要!

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <TabConstants.au3>
#include <GuiListView.au3>
#include <GuiTab.au3>

Opt("GUIResizeMode", $GUI_DOCKBORDERS)

;当窗口调整大小时,运行此功能
GUIRegisterMsg($WM_SIZE, "MY_WM_SIZE")

Global $iGUIWidth = 800, $iGUIHeight = 500, $fResized = False

$MainGUI = GUICreate("Tab Row Example", $iGUIWidth, $iGUIHeight, Default, Default, _
        BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX))
$TAB = GUICtrlCreateTab(1, 1, $iGUIWidth - 2, $iGUIHeight - 50, _
        BitOR($GUI_SS_DEFAULT_TAB, $TCS_MULTILINE, $TCS_RIGHTJUSTIFY))

;设置一些选项卡项目
Global $iTabNumber = 15

;创建数组持有虚拟标签项目标题
Global $aTitles[$iTabNumber + 1]
For $i = 1 To $iTabNumber
    $aTitles[$i] = ""
    For $j = 1 To Random(4, 10, 1)
      $aTitles[$i] &= String($i) & " "
    Next
Next

;确定初始顶端标签值
$iTabTop = Tab_Sizer($iTabNumber, $aTitles)

;创建数组,ListView 句柄
Global $aListView[$iTabNumber + 1] = [$iTabNumber]

;创建标签项目
For $i = 1 To $iTabNumber

    GUICtrlCreateTabItem($aTitles[$i])
    $aListView[$i] = GUICtrlCreateListView("文件清单", 10, $iTabTop, $iGUIWidth - 22, _
                $iGUIHeight - $iTabTop - 50, -1, $LVS_EX_CHECKBOXES)
      _GUICtrlListView_SetColumnWidth($aListView[$i], 0, $LVSCW_AUTOSIZE_USEHEADER)
      _GUICtrlListView_SetBkColor($aListView[$i], 0xFF0000) ; 只是为了显示尺寸
      GUICtrlSetResizing($aListView[$i], BitOR($GUI_DOCKBORDERS, $GUI_DOCKLEFT))

; 填写完整的项目   
For $j = 1 To 25
      GUICtrlCreateListViewItem("项目 " & $j & " - 清单 " & $i _
                        & "    Blahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblah", $aListView[$i])
    Next

Next

;关闭表定义
GUICtrlCreateTabItem("")

;创建虚拟按钮
$hButton = GUICtrlCreateButton("按钮", 10, $iGUIHeight - 40, 120, 30)
GUICtrlSetResizing(-1, BitOR($GUI_DOCKWIDTH, $GUI_DOCKHEIGHT, $GUI_DOCKBOTTOM))

GUISetState(@SW_SHOW)

While 1
   
    Switch GUIGetMsg()
      Case $GUI_EVENT_CLOSE
            Exit
      Case $hButton
      ; dummy
    EndSwitch

;查找调整信息   
    If $fResized Then
        ;确定顶端标签值
      $iTabTop = Tab_Sizer($iTabNumber, $aTitles)
    ; 复位所有标签,以适应新的标签尺寸
      For $i = 1 To $aListView
            GUICtrlSetPos($aListView[$i], 10, $iTabTop, $iGUIWidth - 22, $iGUIHeight - $iTabTop - 50)
            _GUICtrlListView_SetColumnWidth($aListView[$i], 0, $LVSCW_AUTOSIZE_USEHEADER)
      Next
    ; 重置标签
      $fResized = False
    EndIf

WEnd

Func Tab_Sizer($iTabTotal, $aTabTitles)
   
; 创建 GUI
    $TestGUI = GUICreate("", $iGUIWidth, 500)
; 创建标签
    $TestTAB = GUICtrlCreateTab(1, 1, $iGUIWidth - 2, 500, BitOR($GUI_SS_DEFAULT_TAB, $TCS_MULTILINE, $TCS_RIGHTJUSTIFY))
; 建立标签项目
    For $i = 1 To $iTabTotal
      GUICtrlCreateTabItem($aTabTitles[$i])
    Next
; 估算客户区标签
    $aPos = _GUICtrlTab_GetDisplayRect(ControlGetHandle($TestGUI, "", $TestTAB))
; 删除 GUI
    GUIDelete($TestGUI)
; 返回顶端标签值
    Return $aPos
   
EndFunc
   
Func MY_WM_SIZE($hWnd, $Msg, $wParam, $lParam)
   
    $iGUIWidth = BitAND($lParam, 0xFFFF)
    $iGUIHeight = BitShift($lParam, 16)
; 设置标志
    $fResized = True
      
    Return $GUI_RUNDEFMSG
   
EndFunc;==>MY_WM_SIZE



天堂泪吻泪 发表于 2009-8-4 19:20:18

学习下!这个对在下有用!

nxbigdaddy 发表于 2009-8-7 08:37:49

板凳,不错,不错啊!
老版本的显卡驱动的设置里用过这样的,
一直觉得很乱,没想到用autoit 可以实现

menfan 发表于 2009-8-7 10:35:42

不错,学习一下。。

jialibin 发表于 2009-8-7 21:21:17

不错,收藏备用!
感谢分享!

qwea888 发表于 2009-8-10 21:18:56

太乱:face (13):

mcknight1013 发表于 2009-10-10 21:01:16

谢谢分享!:face (26):

四海皆狂龙 发表于 2009-10-16 22:47:04

暂时用不上,占位先!

xrbenbeba 发表于 2009-10-17 03:09:25

不错哦!收藏了!:face (36):

luke 发表于 2009-10-17 10:15:03

值得学习!
谢谢分享!

luke 发表于 2009-10-17 10:15:22

值得学习!
谢谢分享!

别情 发表于 2009-11-11 21:23:28

谢谢分享!!!!!!!!!1

wgzhi 发表于 2010-1-11 00:12:47

值得学习!
谢谢分享!

xhei 发表于 2010-1-11 20:14:59

这个对在下有用!谢谢分享

bobo2007 发表于 2010-9-10 13:25:31

{:face (356):}
页: [1] 2
查看完整版本: 多层标签页实例(官网搜来)