autohotkey ListView控件常量

ListView控件常量

Const_ListView.ahk
; ======================================================================================================================
; Function:          Constants for ListView controls
; AHK version:       1.1.05+
; Language:          English
; Version:           1.0.00.00/2012-04-01/just me
;                    1.0.01.00/2012-05-20/just me - fixed some typos
; ======================================================================================================================
; CCM_FIRST = 8192 (0x2000)
; LVM_FIRST = 4096 (0x1000) ; ListView messages
; LVN_FIRST = -100          ; ListView notifications
; ======================================================================================================================
; Class ================================================================================================================
Global WC_LISTVIEW             := "SysListView32"
; Messages =============================================================================================================
Global LVM_APPROXIMATEVIEWRECT := 0x1040 ; (LVM_FIRST + 64)
Global LVM_ARRANGE             := 0x1016 ; (LVM_FIRST + 22)
Global LVM_CANCELEDITLABEL     := 0x10B3 ; (LVM_FIRST + 179)
Global LVM_CREATEDRAGIMAGE     := 0x1021 ; (LVM_FIRST + 33)
Global LVM_DELETEALLITEMS      := 0x1009 ; (LVM_FIRST + 9)
Global LVM_DELETECOLUMN        := 0x101C ; (LVM_FIRST + 28)
Global LVM_DELETEITEM          := 0x1008 ; (LVM_FIRST + 8)
Global LVM_EDITLABELA          := 0x1017 ; (LVM_FIRST + 23)
Global LVM_EDITLABELW          := 0x1076 ; (LVM_FIRST + 118)
Global LVM_ENABLEGROUPVIEW     := 0x109D ; (LVM_FIRST + 157)
Global LVM_ENSUREVISIBLE       := 0x1013 ; (LVM_FIRST + 19)
Global LVM_FINDITEMA           := 0x100D ; (LVM_FIRST + 13)
Global LVM_FINDITEMW           := 0x1053 ; (LVM_FIRST + 83)
Global LVM_GETBKCOLOR          := 0x1000 ; (LVM_FIRST + 0)
Global LVM_GETBKIMAGEA         := 0x1045 ; (LVM_FIRST + 69)
Global LVM_GETBKIMAGEW         := 0x108B ; (LVM_FIRST + 139)
Global LVM_GETCALLBACKMASK     := 0x100A ; (LVM_FIRST + 10)
Global LVM_GETCOLUMNA          := 0x1019 ; (LVM_FIRST + 25)
Global LVM_GETCOLUMNW          := 0x105F ; (LVM_FIRST + 95)
Global LVM_GETCOLUMNORDERARRAY := 0x103B ; (LVM_FIRST + 59)
Global LVM_GETCOLUMNWIDTH      := 0x101D ; (LVM_FIRST + 29)
Global LVM_GETCOUNTPERPAGE     := 0x1028 ; (LVM_FIRST + 40)
Global LVM_GETEDITCONTROL      := 0x1018 ; (LVM_FIRST + 24)
Global LVM_GETEMPTYTEXT        := 0x10CC ; (LVM_FIRST + 204) >= Vista
Global LVM_GETEXTENDEDLISTVIEWSTYLE := 0x1037 ; (LVM_FIRST + 55)
Global LVM_GETFOCUSEDGROUP     := 0x105D ; (LVM_FIRST + 93)
Global LVM_GETFOOTERINFO       := 0x10CE ; (LVM_FIRST + 206) >= Vista
Global LVM_GETFOOTERITEM       := 0x10D0 ; (LVM_FIRST + 208) >= Vista
Global LVM_GETFOOTERITEMRECT   := 0x10CF ; (LVM_FIRST + 207) >= Vista
Global LVM_GETFOOTERRECT       := 0x10CD ; (LVM_FIRST + 205) >= Vista
Global LVM_GETGROUPCOUNT       := 0x1098 ; (LVM_FIRST + 152)
Global LVM_GETGROUPINFO        := 0x1095 ; (LVM_FIRST + 149)
Global LVM_GETGROUPINFOBYINDEX := 0x1099 ; (LVM_FIRST + 153)
Global LVM_GETGROUPMETRICS     := 0x109C ; (LVM_FIRST + 156)
Global LVM_GETGROUPRECT        := 0x1062 ; (LVM_FIRST + 98)  >= Vista ?
Global LVM_GETGROUPSTATE       := 0x105C ; (LVM_FIRST + 92)
Global LVM_GETHEADER           := 0x101F ; (LVM_FIRST + 31)
Global LVM_GETHOTCURSOR        := 0x103F ; (LVM_FIRST + 63)
Global LVM_GETHOTITEM          := 0x103D ; (LVM_FIRST + 61)
Global LVM_GETHOVERTIME        := 0x1048 ; (LVM_FIRST + 72)
Global LVM_GETIMAGELIST        := 0x1002 ; (LVM_FIRST + 2)
Global LVM_GETINSERTMARK       := 0x10A7 ; (LVM_FIRST + 167)
Global LVM_GETINSERTMARKCOLOR  := 0x10AB ; (LVM_FIRST + 171)
Global LVM_GETINSERTMARKRECT   := 0x10A9 ; (LVM_FIRST + 169)
Global LVM_GETISEARCHSTRINGA   := 0x1034 ; (LVM_FIRST + 52)
Global LVM_GETISEARCHSTRINGW   := 0x1075 ; (LVM_FIRST + 117)
Global LVM_GETITEMA            := 0x1005 ; (LVM_FIRST + 5)
Global LVM_GETITEMW            := 0x104B ; (LVM_FIRST + 75)
Global LVM_GETITEMCOUNT        := 0x1004 ; (LVM_FIRST + 4)
Global LVM_GETITEMINDEXRECT    := 0x10D1 ; (LVM_FIRST + 209) >= Vista
Global LVM_GETITEMPOSITION     := 0x1010 ; (LVM_FIRST + 16)
Global LVM_GETITEMRECT         := 0x100E ; (LVM_FIRST + 14)
Global LVM_GETITEMSPACING      := 0x1033 ; (LVM_FIRST + 51)
Global LVM_GETITEMSTATE        := 0x102C ; (LVM_FIRST + 44)
Global LVM_GETITEMTEXTA        := 0x102D ; (LVM_FIRST + 45)
Global LVM_GETITEMTEXTW        := 0x1073 ; (LVM_FIRST + 115)
Global LVM_GETNEXTITEM         := 0x100C ; (LVM_FIRST + 12)
Global LVM_GETNEXTITEMINDEX    := 0x10D3 ; (LVM_FIRST + 211) >= Vista
Global LVM_GETNUMBEROFWORKAREAS := 0x1049 ; (LVM_FIRST + 73)
Global LVM_GETORIGIN           := 0x1029 ; (LVM_FIRST + 41)
Global LVM_GETOUTLINECOLOR     := 0x10B0 ; (LVM_FIRST + 176)
Global LVM_GETSELECTEDCOLUMN   := 0x10AE ; (LVM_FIRST + 174)
Global LVM_GETSELECTEDCOUNT    := 0x1032 ; (LVM_FIRST + 50)
Global LVM_GETSELECTIONMARK    := 0x1042 ; (LVM_FIRST + 66)
Global LVM_GETSTRINGWIDTHA     := 0x1011 ; (LVM_FIRST + 17)
Global LVM_GETSTRINGWIDTHW     := 0x1057 ; (LVM_FIRST + 87)
Global LVM_GETSUBITEMRECT      := 0x1038 ; (LVM_FIRST + 56)
Global LVM_GETTEXTBKCOLOR      := 0x1025 ; (LVM_FIRST + 37)
Global LVM_GETTEXTCOLOR        := 0x1023 ; (LVM_FIRST + 35)
Global LVM_GETTILEINFO         := 0x10A5 ; (LVM_FIRST + 165)
Global LVM_GETTILEVIEWINFO     := 0x10A3 ; (LVM_FIRST + 163)
Global LVM_GETTOOLTIPS         := 0x104E ; (LVM_FIRST + 78)
Global LVM_GETTOPINDEX         := 0x1027 ; (LVM_FIRST + 39)
Global LVM_GETUNICODEFORMAT    := 0x2006 ; (CCM_FIRST + 6) CCM_GETUNICODEFORMAT
Global LVM_GETVIEW             := 0x108F ; (LVM_FIRST + 143)
Global LVM_GETVIEWRECT         := 0x1022 ; (LVM_FIRST + 34)
Global LVM_GETWORKAREAS        := 0x1046 ; (LVM_FIRST + 70)
Global LVM_HASGROUP            := 0x10A1 ; (LVM_FIRST + 161)
Global LVM_HITTEST             := 0x1012 ; (LVM_FIRST + 18)
Global LVM_INSERTCOLUMNA       := 0x1019 ; (LVM_FIRST + 27)
Global LVM_INSERTCOLUMNW       := 0x1061 ; (LVM_FIRST + 97)
Global LVM_INSERTGROUP         := 0x1091 ; (LVM_FIRST + 145)
Global LVM_INSERTGROUPSORTED   := 0x109F ; (LVM_FIRST + 159)
Global LVM_INSERTITEMA         := 0x1007 ; (LVM_FIRST + 7)
Global LVM_INSERTITEMW         := 0x104D ; (LVM_FIRST + 77)
Global LVM_INSERTMARKHITTEST   := 0x10A8 ; (LVM_FIRST + 168)
Global LVM_ISGROUPVIEWENABLED  := 0x10AF ; (LVM_FIRST + 175)
Global LVM_ISITEMVISIBLE       := 0x10B6 ; (LVM_FIRST + 182)
Global LVM_MAPIDTOINDEX        := 0x10B5 ; (LVM_FIRST + 181)
Global LVM_MAPINDEXTOID        := 0x10B4 ; (LVM_FIRST + 180)
Global LVM_MOVEGROUP           := 0x1097 ; (LVM_FIRST + 151)
Global LVM_MOVEITEMTOGROUP     := 0x109A ; (LVM_FIRST + 154)
Global LVM_REDRAWITEMS         := 0x1015 ; (LVM_FIRST + 21)
Global LVM_REMOVEALLGROUPS     := 0x10A0 ; (LVM_FIRST + 160)
Global LVM_REMOVEGROUP         := 0x1096 ; (LVM_FIRST + 150)
Global LVM_SCROLL              := 0x1014 ; (LVM_FIRST + 20)
Global LVM_SETBKCOLOR          := 0x1001 ; (LVM_FIRST + 1)
Global LVM_SETBKIMAGEA         := 0x1044 ; (LVM_FIRST + 68)
Global LVM_SETBKIMAGEW         := 0x108A ; (LVM_FIRST + 138)
Global LVM_SETCALLBACKMASK     := 0x100B ; (LVM_FIRST + 11)
Global LVM_SETCOLUMNA          := 0x101A ; (LVM_FIRST + 26)
Global LVM_SETCOLUMNW          := 0x1060 ; (LVM_FIRST + 96)
Global LVM_SETCOLUMNORDERARRAY := 0x103A ; (LVM_FIRST + 58)
Global LVM_SETCOLUMNWIDTH      := 0x101E ; (LVM_FIRST + 30)
Global LVM_SETEXTENDEDLISTVIEWSTYLE := 0x1036 ; (LVM_FIRST + 54) optional wParam == mask
Global LVM_SETGROUPINFO        := 0x1093 ; (LVM_FIRST + 147)
Global LVM_SETGROUPMETRICS     := 0x109B ; (LVM_FIRST + 155)
Global LVM_SETHOTCURSOR        := 0x103E ; (LVM_FIRST + 62)
Global LVM_SETHOTITEM          := 0x103C ; (LVM_FIRST + 60)
Global LVM_SETHOVERTIME        := 0x1047 ; (LVM_FIRST + 71)
Global LVM_SETICONSPACING      := 0x1035 ; (LVM_FIRST + 53)
Global LVM_SETIMAGELIST        := 0x1003 ; (LVM_FIRST + 3)
Global LVM_SETINFOTIP          := 0x10AD ; (LVM_FIRST + 173)
Global LVM_SETINSERTMARK       := 0x10A6 ; (LVM_FIRST + 166)
Global LVM_SETINSERTMARKCOLOR  := 0x10AA ; (LVM_FIRST + 170)
Global LVM_SETITEMA            := 0x1006 ; (LVM_FIRST + 6)
Global LVM_SETITEMW            := 0x104C ; (LVM_FIRST + 76)
Global LVM_SETITEMCOUNT        := 0x102F ; (LVM_FIRST + 47)
Global LVM_SETITEMINDEXSTATE   := 0x10D2 ; (LVM_FIRST + 210) >= Vista
Global LVM_SETITEMPOSITION     := 0x100F ; (LVM_FIRST + 15)
Global LVM_SETITEMPOSITION32   := 0x1031 ; (LVM_FIRST + 49)
Global LVM_SETITEMSTATE        := 0x102B ; (LVM_FIRST + 43)
Global LVM_SETITEMTEXTA        := 0x102E ; (LVM_FIRST + 46)
Global LVM_SETITEMTEXTW        := 0x1074 ; (LVM_FIRST + 116)
Global LVM_SETOUTLINECOLOR     := 0x10B1 ; (LVM_FIRST + 177)
Global LVM_SETSELECTIONMARK    := 0x1043 ; (LVM_FIRST + 67)
Global LVM_SETTEXTBKCOLOR      := 0x1026 ; (LVM_FIRST + 38)
Global LVM_SETTEXTCOLOR        := 0x1024 ; (LVM_FIRST + 36)
Global LVM_SETTILEINFO         := 0x10A4 ; (LVM_FIRST + 164)
Global LVM_SETTILEVIEWINFO     := 0x10A2 ; (LVM_FIRST + 162)
Global LVM_SETTOOLTIPS         := 0x104A ; (LVM_FIRST + 74)
Global LVM_SETUNICODEFORMAT    := 0x2005 ; (CCM_FIRST + 5) CCM_SETUNICODEFORMAT
Global LVM_SETVIEW             := 0x108E ; (LVM_FIRST + 142)
Global LVM_SETWORKAREAS        := 0x1041 ; (LVM_FIRST + 65)
Global LVM_SORTGROUPS          := 0x109E ; (LVM_FIRST + 158)
Global LVM_SORTITEMS           := 0x1030 ; (LVM_FIRST + 48)
Global LVM_SORTITEMSEX         := 0x1051 ; (LVM_FIRST + 81)
Global LVM_SUBITEMHITTEST      := 0x1039 ; (LVM_FIRST + 57)
Global LVM_UPDATE              := 0x102A ; (LVM_FIRST + 42)
; Notifications ========================================================================================================
Global LVN_BEGINDRAG           := -109 ; (LVN_FIRST - 9)
Global LVN_BEGINLABELEDITA     := -105 ; (LVN_FIRST - 5)
Global LVN_BEGINLABELEDITW     := -175 ; (LVN_FIRST - 75)
Global LVN_BEGINRDRAG          := -111 ; (LVN_FIRST - 11)
Global LVN_BEGINSCROLL         := -180 ; (LVN_FIRST - 80)
Global LVN_COLUMNCLICK         := -108 ; (LVN_FIRST - 8)
Global LVN_COLUMNDROPDOWN      := -164 ; (LVN_FIRST - 64) >= Vista
Global LVN_COLUMNOVERFLOWCLICK := -166 ; (LVN_FIRST - 66) >= Vista
Global LVN_DELETEALLITEMS      := -104 ; (LVN_FIRST - 4)
Global LVN_DELETEITEM          := -103 ; (LVN_FIRST - 3)
Global LVN_ENDLABELEDITA       := -106 ; (LVN_FIRST - 6)
Global LVN_ENDLABELEDITW       := -176 ; (LVN_FIRST - 76)
Global LVN_ENDSCROLL           := -181 ; (LVN_FIRST - 81)
Global LVN_GETDISPINFOA        := -150 ; (LVN_FIRST - 50)
Global LVN_GETDISPINFOW        := -177 ; (LVN_FIRST - 77)
Global LVN_GETEMPTYMARKUP      := -187 ; (LVN_FIRST - 87) >= Vista
Global LVN_GETINFOTIPA         := -157 ; (LVN_FIRST - 57)
Global LVN_GETINFOTIPW         := -158 ; (LVN_FIRST - 58)
Global LVN_HOTTRACK            := -121 ; (LVN_FIRST - 21)
Global LVN_INCREMENTALSEARCHA  := -162 ; (LVN_FIRST - 62)
Global LVN_INCREMENTALSEARCHW  := -163 ; (LVN_FIRST - 63)
Global LVN_INSERTITEM          := -102 ; (LVN_FIRST - 2)
Global LVN_ITEMACTIVATE        := -114 ; (LVN_FIRST - 14)
Global LVN_ITEMCHANGED         := -101 ; (LVN_FIRST - 1)
Global LVN_ITEMCHANGING        := -100 ; (LVN_FIRST - 0)
Global LVN_KEYDOWN             := -155 ; (LVN_FIRST - 55)
Global LVN_LINKCLICK           := -184 ; (LVN_FIRST - 84) >= Vista
Global LVN_MARQUEEBEGIN        := -156 ; (LVN_FIRST - 56)
Global LVN_ODCACHEHINT         := -113 ; (LVN_FIRST - 13)
Global LVN_ODFINDITEMA         := -152 ; (LVN_FIRST - 52)
Global LVN_ODFINDITEMW         := -179 ; (LVN_FIRST - 79)
Global LVN_ODSTATECHANGED      := -115 ; (LVN_FIRST - 15)
Global LVN_SETDISPINFOA        := -151 ; (LVN_FIRST - 51)
Global LVN_SETDISPINFOW        := -178 ; (LVN_FIRST - 78)
; Styles ===============================================================================================================
GLOBAL LVS_ALIGNLEFT           := 0x0800
GLOBAL LVS_ALIGNMASK           := 0x0C00
GLOBAL LVS_ALIGNTOP            := 0x0000
GLOBAL LVS_AUTOARRANGE         := 0x0100
GLOBAL LVS_EDITLABELS          := 0x0200
GLOBAL LVS_ICON                := 0x0000
GLOBAL LVS_LIST                := 0x0003
GLOBAL LVS_NOCOLUMNHEADER      := 0x4000
GLOBAL LVS_NOLABELWRAP         := 0x0080
GLOBAL LVS_NOSCROLL            := 0x2000
GLOBAL LVS_NOSORTHEADER        := 0x8000
GLOBAL LVS_OWNERDATA           := 0x1000
GLOBAL LVS_OWNERDRAWFIXED      := 0x0400
GLOBAL LVS_REPORT              := 0x0001
GLOBAL LVS_SHAREIMAGELISTS     := 0x0040
GLOBAL LVS_SHOWSELALWAYS       := 0x0008
GLOBAL LVS_SINGLESEL           := 0x0004
GLOBAL LVS_SMALLICON           := 0x0002
GLOBAL LVS_SORTASCENDING       := 0x0010
GLOBAL LVS_SORTDESCENDING      := 0x0020
GLOBAL LVS_TYPEMASK            := 0x0003
GLOBAL LVS_TYPESTYLEMASK       := 0xFC00
; ExStyles =============================================================================================================
Global LVS_EX_AUTOAUTOARRANGE  := 0x01000000  ; >= Vista: icons automatically arrange if no icon positions have been set
Global LVS_EX_AUTOCHECKSELECT  := 0x08000000  ; >= Vista
Global LVS_EX_AUTOSIZECOLUMNS  := 0x10000000  ; >= Vista
Global LVS_EX_BORDERSELECT     := 0x00008000  ; border selection style instead of highlight
Global LVS_EX_CHECKBOXES       := 0x00000004
Global LVS_EX_COLUMNOVERFLOW   := 0x80000000  ; >= Vista
Global LVS_EX_COLUMNSNAPPOINTS := 0x40000000  ; >= Vista
Global LVS_EX_DOUBLEBUFFER     := 0x00010000
Global LVS_EX_FLATSB           := 0x00000100
Global LVS_EX_FULLROWSELECT    := 0x00000020  ; applies to report mode only
Global LVS_EX_GRIDLINES        := 0x00000001
Global LVS_EX_HEADERDRAGDROP   := 0x00000010
Global LVS_EX_HEADERINALLVIEWS := 0x02000000  ; >= Vista: display column header in all view modes
Global LVS_EX_HIDELABELS       := 0x00020000
Global LVS_EX_INFOTIP          := 0x00000400  ; listview does InfoTips for you
Global LVS_EX_JUSTIFYCOLUMNS   := 0x00200000  ; >= Vista: icons are lined up in columns that use up the whole view area
Global LVS_EX_LABELTIP         := 0x00004000  ; listview unfolds partly hidden labels if it does not have infotip text
Global LVS_EX_MULTIWORKAREAS   := 0x00002000
Global LVS_EX_ONECLICKACTIVATE := 0x00000040
Global LVS_EX_REGIONAL         := 0x00000200
Global LVS_EX_SIMPLESELECT     := 0x00100000  ; also changes overlay rendering to top right for icon mode
Global LVS_EX_SINGLEROW        := 0x00040000
Global LVS_EX_SNAPTOGRID       := 0x00080000  ; icons automatically snap to grid
Global LVS_EX_SUBITEMIMAGES    := 0x00000002
Global LVS_EX_TRACKSELECT      := 0x00000008
Global LVS_EX_TRANSPARENTBKGND := 0x00400000  ; >= Vista: background is painted by the parent via WM_PRINTCLIENT
Global LVS_EX_TRANSPARENTSHADOWTEXT := 0x00800000  ; >=Vista: enable shadow text on transparent backgrounds only (useful with bitmaps)
Global LVS_EX_TWOCLICKACTIVATE := 0x00000080
Global LVS_EX_UNDERLINECOLD    := 0x00001000
Global LVS_EX_UNDERLINEHOT     := 0x00000800
; Others ===============================================================================================================
; LVM_GET/SETIMAGELIST
Global LVSIL_GROUPHEADER       := 3
Global LVSIL_NORMAL            := 0
Global LVSIL_SMALL             := 1
Global LVSIL_STATE             := 2
; LVITEM mask
Global LVIF_COLFMT             := 0x00010000  ; >= Vista - the piColFmt member is valid in addition to puColumns
Global LVIF_COLUMNS            := 0x00000200
Global LVIF_DI_SETITEM         := 0x00001000
Global LVIF_GROUPID            := 0x00000100
Global LVIF_IMAGE              := 0x00000002
Global LVIF_INDENT             := 0x00000010
Global LVIF_NORECOMPUTE        := 0x00000800
Global LVIF_PARAM              := 0x00000004
Global LVIF_STATE              := 0x00000008
Global LVIF_TEXT               := 0x00000001
; LVITEM state
Global LVIS_ACTIVATING         := 0x0020
Global LVIS_CUT                := 0x0004
Global LVIS_DROPHILITED        := 0x0008
Global LVIS_FOCUSED            := 0x0001
Global LVIS_GLOW               := 0x0010      ; not documented in MSDN
Global LVIS_OVERLAYMASK        := 0x0F00
Global LVIS_SELECTED           := 0x0002
Global LVIS_STATEIMAGEMASK     := 0xF000
; LVN_GETNEXTITEM
Global LVNI_ABOVE              := 0x0100
Global LVNI_ALL                := 0x0000
Global LVNI_BELOW              := 0x0200
Global LVNI_CUT                := 0x0004
Global LVNI_DIRECTIONMASK      := 0x0F00      ; (LVNI_ABOVE | LVNI_BELOW | LVNI_TOLEFT | LVNI_TORIGHT) >= Vista
Global LVNI_DROPHILITED        := 0x0008
Global LVNI_FOCUSED            := 0x0001
Global LVNI_PREVIOUS           := 0x0020      ; >= Vista
Global LVNI_SAMEGROUPONLY      := 0x0080      ; >= Vista
Global LVNI_SELECTED           := 0x0002
Global LVNI_STATEMASK          := 0x000F      ; (LVNI_FOCUSED | LVNI_SELECTED | LVNI_CUT | LVNI_DROPHILITED) >= Vista
Global LVNI_TOLEFT             := 0x0400
Global LVNI_TORIGHT            := 0x0800
Global LVNI_VISIBLEONLY        := 0x0040      ; >= Vista
Global LVNI_VISIBLEORDER       := 0x0010      ; >= Vista
; LVFINDINFO flags
Global LVFI_NEARESTXY          := 0x0040
Global LVFI_PARAM              := 0x0001
Global LVFI_PARTIAL            := 0x0008
Global LVFI_STRING             := 0x0002
Global LVFI_SUBSTRING          := 0x0004      ; >= Vista - same as LVFI_PARTIAL
Global LVFI_WRAP               := 0x0020
; LVM_GETITEMRECT
Global LVIR_BOUNDS             := 0
Global LVIR_ICON               := 1
Global LVIR_LABEL              := 2
Global LVIR_SELECTBOUNDS       := 3
; LVHITTESTINFO flags
Global LVHT_NOWHERE            := 0x00000001
Global LVHT_ABOVE              := 0x00000008
Global LVHT_BELOW              := 0x00000010
Global LVHT_ONITEM             := 0x0000000E ; (LVHT_ONITEMICON | LVHT_ONITEMLABEL | LVHT_ONITEMSTATEICON)
Global LVHT_ONITEMICON         := 0x00000002
Global LVHT_ONITEMLABEL        := 0x00000004
Global LVHT_ONITEMSTATEICON    := 0x00000008
Global LVHT_TOLEFT             := 0x00000040
Global LVHT_TORIGHT            := 0x00000020
Global LVHT_EX_FOOTER           := 0x08000000 ; >= Vista
Global LVHT_EX_GROUP            := 0xF3000000 ; >= Vista (LVHT_EX_GROUP_BACKGROUND | _COLLAPSE | _FOOTER | _HEADER | _STATEICON | _SUBSETLINK)
Global LVHT_EX_GROUP_BACKGROUND := 0x80000000 ; >= Vista
Global LVHT_EX_GROUP_COLLAPSE   := 0x40000000 ; >= Vista
Global LVHT_EX_GROUP_FOOTER     := 0x20000000 ; >= Vista
Global LVHT_EX_GROUP_HEADER     := 0x10000000 ; >= Vista
Global LVHT_EX_GROUP_STATEICON  := 0x01000000 ; >= Vista
Global LVHT_EX_GROUP_SUBSETLINK := 0x02000000 ; >= Vista
Global LVHT_EX_ONCONTENTS       := 0x04000000 ; >= Vista - on item AND not on the background
; LVM_ARRANGE
Global LVA_ALIGNLEFT           := 0x0001
Global LVA_ALIGNTOP            := 0x0002
Global LVA_DEFAULT             := 0x0000
Global LVA_SNAPTOGRID          := 0x0005
; LVCOLUMN mask
Global LVCF_DEFAULTWIDTH       := 0x0080        ; >= Vista
Global LVCF_FMT                := 0x0001
Global LVCF_IDEALWIDTH         := 0x0100        ; >= Vista
Global LVCF_IMAGE              := 0x0010
Global LVCF_MINWIDTH           := 0x0040        ; >= Vista
Global LVCF_ORDER              := 0x0020
Global LVCF_SUBITEM            := 0x0008
Global LVCF_TEXT               := 0x0004
Global LVCF_WIDTH              := 0x0002
; LVCOLUMN fmt, LVITEM piColFmt
Global LVCFMT_BITMAP_ON_RIGHT    := 0x1000        ; Same as HDF_BITMAP_ON_RIGHT
Global LVCFMT_CENTER             := 0x0002        ; Same as HDF_CENTER
Global LVCFMT_COL_HAS_IMAGES     := 0x8000        ; Same as HDF_OWNERDRAW
Global LVCFMT_FILL               := 0x200000      ; >= Win7   Fill the remainder of the tile area. Might have a title.
Global LVCFMT_FIXED_RATIO        := 0x80000       ; >= Vista  Width will augment with the row height
Global LVCFMT_FIXED_WIDTH        := 0x000100      ; >= Vista  Can't resize the column; same as HDF_FIXEDWIDTH
Global LVCFMT_IMAGE              := 0x0800        ; Same as HDF_IMAGE
Global LVCFMT_JUSTIFYMASK        := 0x0003        ; Same as HDF_JUSTIFYMASK
Global LVCFMT_LEFT               := 0x0000        ; Same as HDF_LEFT
Global LVCFMT_LINE_BREAK         := 0x100000      ; >= Win7   Move to the top of the next list of columns
Global LVCFMT_NO_DPI_SCALE       := 0x40000       ; >= Vista  If not set, CCM_DPISCALE will govern scaling up fixed width
Global LVCFMT_NO_TITLE           := 0x800000      ; >= Win7   This sub-item doesn't have an title.
Global LVCFMT_RIGHT              := 0x0001        ; Same as HDF_RIGHT
Global LVCFMT_SPLITBUTTON        := 0x01000000    ; >= Vista  Column is a split button; same as HDF_SPLITBUTTON
Global LVCFMT_TILE_PLACEMENTMASK := 0x300000      ; (LVCFMT_LINE_BREAK | LVCFMT_FILL) >= Win7
Global LVCFMT_WRAP               := 0x400000      ; >= Win7   This sub-item can be wrapped.
; LVM_SETCOLOMNWIDTH
Global LVSCW_AUTOSIZE           := -1
Global LVSCW_AUTOSIZE_USEHEADER := -2
; LVM_SETITEMCOUNT
Global LVSICF_NOINVALIDATEALL  := 0x00000001
Global LVSICF_NOSCROLL         := 0x00000002
; LVM_SETWORKAREAS
Global LV_MAX_WORKAREAS        := 16
; LVBKIMAGE ulFlags
Global LVBKIF_FLAG_ALPHABLEND  := 0x20000000
Global LVBKIF_FLAG_TILEOFFSET  := 0x00000100
Global LVBKIF_SOURCE_HBITMAP   := 0x00000001
Global LVBKIF_SOURCE_MASK      := 0x00000003
Global LVBKIF_SOURCE_NONE      := 0x00000000
Global LVBKIF_SOURCE_URL       := 0x00000002
Global LVBKIF_STYLE_MASK       := 0x00000010
Global LVBKIF_STYLE_NORMAL     := 0x00000000
Global LVBKIF_STYLE_TILE       := 0x00000010
Global LVBKIF_TYPE_WATERMARK   := 0x10000000
; LVM_GET/SETVIEW
Global LV_VIEW_DETAILS         := 0x0001
Global LV_VIEW_ICON            := 0x0000
Global LV_VIEW_LIST            := 0x0003
Global LV_VIEW_MAX             := 0x0004
Global LV_VIEW_SMALLICON       := 0x0002
Global LV_VIEW_TILE            := 0x0004
; LVGROUP mask
Global LVGF_ALIGN              := 0x00000008
Global LVGF_DESCRIPTIONBOTTOM  := 0x00000800    ; >= Vista  pszDescriptionBottom is valid
Global LVGF_DESCRIPTIONTOP     := 0x00000400    ; >= Vista  pszDescriptionTop is valid
Global LVGF_EXTENDEDIMAGE      := 0x00002000    ; >= Vista  iExtendedImage is valid
Global LVGF_FOOTER             := 0x00000002
Global LVGF_GROUPID            := 0x00000010
Global LVGF_HEADER             := 0x00000001
Global LVGF_ITEMS              := 0x00004000    ; >= Vista  iFirstItem and cItems are valid
Global LVGF_NONE               := 0x00000000
Global LVGF_STATE              := 0x00000004
Global LVGF_SUBSET             := 0x00008000    ; >= Vista  pszSubsetTitle is valid
Global LVGF_SUBSETITEMS        := 0x00010000    ; >= Vista  readonly, cItems holds count of items in visible subset, iFirstItem is valid
Global LVGF_SUBTITLE           := 0x00000100    ; >= Vista  pszSubtitle is valid
Global LVGF_TASK               := 0x00000200    ; >= Vista  pszTask is valid
Global LVGF_TITLEIMAGE         := 0x00001000    ; >= Vista  iTitleImage is valid
; LVGROUP state
Global LVGS_COLLAPSED          := 0x00000001
Global LVGS_COLLAPSIBLE        := 0x00000008    ; >= Vista ?
Global LVGS_FOCUSED            := 0x00000010    ; >= Vista ?
Global LVGS_HIDDEN             := 0x00000002
Global LVGS_NOHEADER           := 0x00000004    ; >= Vista ?
Global LVGS_NORMAL             := 0x00000000
Global LVGS_SELECTED           := 0x00000020    ; >= Vista ?
Global LVGS_SUBSETED           := 0x00000040    ; >= Vista ?
Global LVGS_SUBSETLINKFOCUSED  := 0x00000080    ; >= Vista ?
; LVGROUP uAlign
Global LVGA_FOOTER_CENTER      := 0x00000010
Global LVGA_FOOTER_LEFT        := 0x00000008
Global LVGA_FOOTER_RIGHT       := 0x00000020    ; Don't forget to validate exclusivity
Global LVGA_HEADER_CENTER      := 0x00000002
Global LVGA_HEADER_LEFT        := 0x00000001
Global LVGA_HEADER_RIGHT       := 0x00000004    ; Don't forget to validate exclusivity
; LVM_GETGROUPRECT
Global LVGGR_GROUP             := 0             ; Entire expanded group
Global LVGGR_HEADER            := 1             ; Header only (collapsed group)
Global LVGGR_LABEL             := 2             ; Label only
Global LVGGR_SUBSETLINK        := 3             ; subset link only
; LVGROUPMETRICS mask
Global LVGMF_BORDERCOLOR       := 0x00000002
Global LVGMF_BORDERSIZE        := 0x00000001
Global LVGMF_NONE              := 0x00000000
Global LVGMF_TEXTCOLOR         := 0x00000004
; LVTILEVIEWINFO dwMask
Global LVTVIM_COLUMNS          := 0x00000002
Global LVTVIM_LABELMARGIN      := 0x00000004
Global LVTVIM_TILESIZE         := 0x00000001
; LVTILEVIEWINFO dwFlags
Global LVTVIF_AUTOSIZE         := 0x00000000
Global LVTVIF_EXTENDED         := 0x00000004    ; >= Vista
Global LVTVIF_FIXEDHEIGHT      := 0x00000002
Global LVTVIF_FIXEDSIZE        := 0x00000003
Global LVTVIF_FIXEDWIDTH       := 0x00000001
; LVINSERTMARK dwFlags
Global LVIM_AFTER              := 0x00000001    ; TRUE = insert After iItem, otherwise before
; LVFOOTERINFO mask (>= Vista)
Global LVFF_ITEMCOUNT          := 0x00000001
; LVFOOTERITEM (>= Vista)
Global LVFIF_STATE             := 0x00000002
Global LVFIF_TEXT              := 0x00000001
; footer item state
Global LVFIS_FOCUSED           := 0x0001
; NMITEMACTIVATE uKeyFlags
Global LVKF_ALT                := 0x0001
Global LVKF_CONTROL            := 0x0002
Global LVKF_SHIFT              := 0x0004
; NMLVCUSTOMDRAW
; dwItemType
Global LVCDI_GROUP             := 0x00000001
Global LVCDI_ITEM              := 0x00000000
Global LVCDI_ITEMSLIST         := 0x00000002
; ListView custom draw return values
Global LVCDRF_NOGROUPFRAME     := 0x00020000
Global LVCDRF_NOSELECT         := 0x00010000
; NMLVGETINFOTIP dwFlag
Global LVGIT_UNFOLDED          := 0x0001
; LVN_INCREMENTALSEARCH LVFINDINFO lParam
Global LVNSCH_DEFAULT          := -1
Global LVNSCH_ERROR            := -2
Global LVNSCH_IGNORE           := -3
; NMLVEMPTYMARKUP dwFlags ( >= Vista)
Global EMF_CENTERED            := 0x00000001    ; render markup centered in the listview area
Global L_MAX_URL_LENGTH        := 2083          ; (2048 + 32 + sizeof("://"))
; ======================================================================================================================

autohotkey AutoHotkey的自定义属性表控件。

AutoHotkey的自定义属性表控件。

Class_Properties.ahk
;=======================================================================================
;
;                    Class Properties
;
; Author:            Pulover [Rodolfo U. Batista]
;                    rodolfoub@gmail.com
; AHK version:       1.1.11.00
; Release date:      24 July 2013
; Depends on:        Class_Rebar <https://gist.github.com/Pulover/6003125>
;
;                    Custom Properties Sheet control for AutoHotkey.
;=======================================================================================
Class Properties
{
    __New(gLabel, W=400, H=23, X=0, Y=0, Gui=1)
    {
        If !(IsLabel(gLabel))
            return False
        this.Label := gLabel, this.Gui := Gui
        this.Width := W, this.Height := H
        this.PosX := X, this.PosY := Y
    ,   this.Count := 0, this.Handles := []
    }
    
    Add(CtrlType, BandText="", CtrlValue="")
    {
        this.Count += 1, ID := this.Count
    ,   Gui := this.Gui, Label := this.Label
    ,   W := this.Width, H := this.Height, HalfW := W//2
    ,   X := this.PosX, Y := this.PosY, HalfW := W//2
    
        Gui, %Gui%:Add, Custom, ClassReBarWindow32 hwndhRebar%ID% g%Label% 0x044C x%X% y%Y% w%W% h%H%
        Gui, %Gui%:Add, %CtrlType%, hwndhCtr%ID%, %CtrlValue%
        GuiControlGet, cValue,, % hCtr%ID%
        
        RB%ID% := New Rebar(hRebar%ID%)
    ,   RB%ID%.InsertBand("", 0, "NoGripper Hidden", 0, BandText, HalfW)
    ,   RB%ID%.InsertBand(hCtr%ID%, 0, "NoGripper Hidden", 0, "", HalfW, 0, "", H)
    ,   RB%ID%.InsertBand("", 0, "NoGripper", 0, BandText, HalfW)
    ,   RB%ID%.InsertBand("", 0, "NoGripper", 0, cValue, HalfW, 0, "", H)
    ,   this.Handles.Insert({Ptr: RB%ID%, hRebar: hRebar%ID%, hCtr: hCtr%ID%})
    ,   this.PosY += this.Height
        return
    }
    
    EditProperty()
    {
        nCode := NumGet(A_EventInfo + (A_PtrSize * 2), 0, "Int")
        If (nCode = -16)
        {
            rbHwnd := NumGet(A_EventInfo + 0, 0, "UPtr")
            Loop, % this.Handles.MaxIndex()
            {
                If (this.Handles[A_Index].hRebar = rbHwnd)
                {
                    ID := A_Index
                    break
                }
            }
            GuiControlGet, ctrlValue,, % this.Handles[ID].hCtr
            this.Handles[ID].Ptr.GetBand(1, "", "", "", "", "", Style)
        ,   SetProp := (Style & 0x0008) ? 1 : 0
        ,   this.Handles[ID].Ptr.ModifyBand(4, "Text", (ctrlValue = "") ? A_Space : ctrlValue)
        ,   this.Handles[ID].Ptr.ShowBand(1, SetProp)
        ,   this.Handles[ID].Ptr.ShowBand(2, SetProp)
        ,   this.Handles[ID].Ptr.ShowBand(3, !SetProp)
        ,   this.Handles[ID].Ptr.ShowBand(4, !SetProp)
        }
        return
    }
}

autohotkey GoToTilla.ahk

GoToTilla.ahk
/*
#####################
GoToTilla v0.22 by hoppfrosch - Added parsing of properties (AHK > 1.1.16.*)
http://www.autohotkey.com/board/topic/95536-gototilla-a-combination-of-goto-and-tillagoto/
GoToTilla v0.21 by budRich
http://www.autohotkey.com/board/topic/95536-gototilla-a-combination-of-goto-and-tillagoto/
A combination of: GoTo by Avi Aryan
http://www.autohotkey.com/board/topic/95009-goto-hotkeys-hotstrings-functions-and-labels-in-any-editor/
and TillaGoto by TheGood
http://www.autohotkey.com/forum/viewtopic.php?t=41575
TheGood was inspired by Rajats Active GoTo
http://www.autohotkey.com/board/topic/10936-active-goto-v4/
#####################
 
Go To functions, labels, hotkeys and hotstrings in any editor.
The only requirement is that the Editor shows file full path in Title Bar and has a Goto (Ctrl+G) option.
Examples of such editors - Notepad++, Sublime Text, PSPad, ConTEXT
 
Ctrl+Space to show a list of all functions,hotkeys,hotstrings and labels.
Type to narrow list down, navigate with mouse or arrowkeys, select with doubleclick or Enter.
 
*/
 
;------- CONFIGURE -------------------
GoTo_AutoExecute()	;1 = Gui is movable, A_temp = Working Directory
+F7::Reload
 
#if GetActiveFile()	;If ahk window is active
^Space::
Activefileindex := fileiscached( GetActiveFile() )
if ( Activefile_old != Activefileindex )
	FreshList("-all", activefileindex)
 
GuiControl,, txtSearch,% ""
WinShow, GoToTilla
WinActivate, GoToTilla
ControlFocus,, ahk_id %htxtSearch%
 
Activefile_old := Activefileindex
return
#if
 
#IfWinActive, GoToTilla
^Space::WinHide, GoToTilla
Up::ControlSend,, {Up}, ahk_id %hlblList%
Down::ControlSend,, {Down}, ahk_id %hlblList%
Enter::Gosub, SelectItem
#IfWinActive
 
 
GoTo_AutoExecute(resizable=true, WorkingDir=""){
	global
	#SingleInstance force
	SetTitleMatchMode, 3
	SetWorkingDir,% ( WorkingDir == "" ) ? A_scriptdir : WorkingDir
	SetBatchLines, -1
	FileCreateDir, gotoCache
	FileDelete, gotoCache\*.gotolist
	SetTimer, filecheck, 200
	goto_cache := {}
	if resizable
		OnMessage(0x201, "DragGotoGui") ; WM_LBUTTONDOWN
	Gosub, NewGui
}
 
NewGui:
	Gui, +AlwaysOnTop -Caption +ToolWindow
	Gui, Margin, 3, 3
	Gui, Font, s11, Consolas
	Gui, Add, Edit, h20 w200 vtxtSearch hwndhtxtsearch gtxtSearch_Event
	Gui, Add, ListBox, sort w200 h275 vlblList glblList_Event hwndhlblList -HScroll +256 ;LBS_NOINTEGRALHEIGHT
	Gui, Show, Hide AutoSize, GoToTilla
return
 
 
GoTo_Readfile(File) {
	Critical, On
 
	static filecount , commentneedle := A_space ";|" A_tab	";"
	if ( filecount_N := fileiscached(File) )
		Filename := filecount_N
	else {
		Filename := filecount := filecount ? filecount+1 : 1
		FileAppend,% file "`n",gotoCache\filelist.gotolist
	}
	FileDelete, gotoCache\%Filename%-*
 
	loop, read, %file%
	{
		readline := Trim( A_LoopReadLine )
		if block_comments
			if Instr(readline, "*/") = 1
			{
				block_comments := 0
				continue
			}
			else continue
 
		if Instr(readline, ";") = 1
			continue
 
		if Instr(readline, "/*") = 1
		{
			block_comments := 1
			continue
		}
		readline := Trim( Substr(readline, 1, SuperInstr(readline, commentneedle, 1) ? SuperInstr(readline, commentneedle, 1)-1 : Strlen(readline)) )
 
		if ( readline_temp := Check4Hotkey(readline) )
			CreateCache(filename, "hotkey", readline_temp, A_index)
		else if ( Instr(readline, ":") = 1 ) and ( Instr(readline, "::", 0, 0) > 1 )
			CreateCache(filename, "hotstr", Substr(readline, 1, Instr(readline, "::", 0, 0)-1), A_index )
		else if !SuperInstr(readline, "``|`t| |,", 0) and Substr(readline,0) == ":"
			CreateCache(filename, "label", readline, A_index)
		else if Check4func(readline, A_index, file)
			CreateCache(filename, "func", Substr(readline, 1, Instr(readline, "(")) ")", A_index)
		else if Check4prop(readline, A_index, file)
			CreateCache(filename, "prop", Substr(readline, 1, Instr(readline, "[")) "]", A_index)
	}
}
 
CreateCache(hostfile, type, data, linenum){
	if type = func
		if ( Substr( data, 1, SuperInstr(data, " |`t|,|(", 1)-1 ) == "while" )
			return
	;Exceptions are listed above
 
	FileAppend,% data ">" linenum "`n",% "Gotocache\" hostfile "-all.gotolist"
}
 
Check4Hotkey(line) {
	;The function assumes line is trimmed using Trim() and then checked for ; comment
	if ( Instr(line, "::") = 1 ) and ( Instr(line, ":", false, 0) = 3 )	;hotstring
		return ""
	hK := Substr( line, 1, ( Instr(line, ":::") ? Instr(line, ":::")+2 : ( Instr(line, "::") ? Instr(line, "::")+1 : Strlen(line)+2 ) ) - Strlen(line) - 2)
	if hK =
		return
 
	if !SuperInstr(hK, " | ", 0)
		if !SuperInstr(hK, "^|!|+|#", 0) And RegExMatch(hK, "[a-z]+[,(]")
			return
		else
			return hK
	else
		if Instr(hK, " & ") or ( Substr(hK, -1) == "UP" )
			return hK
}
 
Check4func(readline, linenum, file){
	if RegExmatch(readline, "i)[A-Z0-9#_@\$\?\[\]]+\(.*\)") != 1
		return
	if ( Substr(readline, 0) == "{" )
		return 1
 
	loop, {
		FileReadLine, cl, %file%,% linenum+A_index
		if Errorlevel = 1
			return
		cl := Trim( Substr(cl, 1, Instr(cl, ";") ? Instr(cl, ";")-1 : Strlen(cl)) )
		if cl =
			continue
 
		if block_comments
			if Instr(readline, "*/") = 1 {
				block_comments := 0
				continue
			}
		else continue
		if Instr(readline, "/*") = 1 {
			block_comments := 1
			continue
		}
 
		return Instr(cl, "{") = 1 ? 1 : 0
	}
}

Check4prop(readline, linenum, file){
    if A_AhkVersion < "1.1.16.0"
    	return
	if RegExmatch(readline, "i)[A-Z0-9#_@\$\?]+\[.*\]") != 1
		return
	if ( Substr(readline, 0) == "{" )
		return 1
 
	loop, {
		FileReadLine, cl, %file%,% linenum+A_index
		if Errorlevel = 1
			return
		cl := Trim( Substr(cl, 1, Instr(cl, ";") ? Instr(cl, ";")-1 : Strlen(cl)) )
		if cl =
			continue
 
		if block_comments
			if Instr(readline, "*/") = 1 {
				block_comments := 0
				continue
			}
		else continue
		if Instr(readline, "/*") = 1 {
			block_comments := 1
			continue
		}
 
		return Instr(cl, "{") = 1 ? 1 : 0
	}
}
 
filecheck:
	FileGetTime, Timeforfile,% goto_tempfile := GetActiveFile(), M
	if ( goto_cache[goto_tempfile] != Timeforfile )
		goto_cache[goto_tempfile] := Timeforfile , Goto_Readfile(goto_tempfile)
return
 
fileiscached(file){
	loop, read, gotoCache\filelist.gotolist
	if ( file == A_LoopReadLine )
		return A_index
}
  
GUIEscape:
	WinHide, GoToTilla
return
 
 
FreshList(mode, fileindex){
	global aLst,lblList
	aLst := Object()
	lblList := ""
	GuiControl,, lblList,|
	if !fileindex
		return
 
	loop, read, gotoCache\%fileIndex%%Mode%.gotolist
	{
		StringSplit, toadd, A_LoopReadLine, >
		aLst.Insert(toadd1, toadd2)
		lblList .= "|" toadd1
	}
	GuiControl, -Redraw, lblList
	Guicontrol, ,lblList,% !lblList ? "|" : lblList
	GuiControl, +Redraw, lblList
}
 
 
GetActiveFile(){
	WinGetActiveTitle, Title
	if !( Instr(title, ".ahk") and Instr(title, ":\") )
		return ""
	return Trim( Substr( Title, temp := Instr(Title, ":\")-1, Instr(Title, ".ahk", 0, 0)-temp+4 ) )
}
 
 
DragGotoGui(){	;Thanks Pulover
	PostMessage, 0xA1, 2,,, A
}
 
/*
SuperInstr()
Returns min/max position for a | separated values of Needle(s)
return_min = true ; return minimum position
return_min = false ; return maximum position
 
*/
SuperInstr(Hay, Needles, return_min=true, Case=false, Startpoint=1, Occurrence=1){
	pos := return_min*Strlen(Hay)
	if return_min
	{
		loop, parse, Needles,|
		if ( pos > (var := Instr(Hay, A_LoopField, Case, startpoint, Occurrence)) )
			pos := var ? var : pos
		if ( pos == Strlen(Hay) )
			return 0
	}
	else
	{
		loop, parse, Needles,|
		if ( (var := Instr(Hay, A_LoopField, Case, startpoint, Occurrence)) > pos )
			pos := var
	}
	return pos
}
 
lblList_Event:
If (A_GuiEvent <> "DoubleClick")
Return
SelectItem:	
;Get selected item index. LB_GETCURSEL
SendMessage, 0x188, 0, 0,, ahk_id %hlblList%
 
;Check for error. LB_ERR
If (ErrorLevel = 0xFFFFFFFF)
Return
 
;Get the associated item data
i := GetListBoxItem(hlblList, ErrorLevel)
 
BlockInput, On
WinHide, GoToTilla
SendInput, ^g
sleep, 100
SendInput,% aLst[i] "{Enter}"
BlockInput, Off
Return
 
 
GetListBoxItem(hLB, i) {
	;Get length of item. LB_GETTEXTLEN
	SendMessage 394, %i%, 0,, ahk_id %hLB%
	;Check for error
	If (ErrorLevel = 0xFFFFFFFF)
		Return ""
	;Prepare variable
	VarSetCapacity(sText, ErrorLevel * (1 + !!A_IsUnicode), 0)
	;Retrieve item. LB_GETTEXT
	SendMessage 393, %i%, &sText,, ahk_id %hLB%
	;Check for error
	If (ErrorLevel = 0xFFFFFFFF)
		Return ""
	 
	Return sText
}
 
;Incremental searching
txtSearch_Event:
	GuiControlGet, s,, txtSearch
	CreateList(s)
Return
 
CreateList(filter = "") {
	Global hlblList, bShowing, aLst, activefileindex
	Static sLastfilter := "`n" ;Initialize on an impossible filter
 
	;Trim the right side
	While (SubStr(filter, 0) = A_Space)
		StringTrimRight, filter, filter, 1
	 
	;Trim right side if it ends in " !" since it changes nothing
	If (StrLen(filter) > 2) And (SubStr(filter, -1) = " !") And (SubStr(filter, -2, 1) <> A_Space)
		StringTrimRight, filter, filter, 2
	 
	;Check if the filter is different
	If (filter = sLastfilter) ;And bShowing
		Return
	 
	sLastfilter := filter
	 
	GuiControl, -Redraw, lblList
	GuiControl,, lblList,|
	lblList := ""
	 
	If (filter = "")
		FreshList("-all", activefileindex)
	Else {
		For k, v in aLst
			If (InStr(k, filter) = 1)
				lblList .= "|" k
	 
		Guicontrol, ,lblList,% !lblList ? "|" : lblList
	}
	;Select the first item. LB_SETCURSEL
	SendMessage 390, 0, 0,, ahk_id %hlblList%
	 
	;Redraw
	GuiControl, +Redraw, lblList
}

autohotkey 用于测试Class_Rebar.ahk的测试浏览器原型。

用于测试Class_Rebar.ahk的测试浏览器原型。

Rebar_Browser.ahk
#NoEnv
#SingleInstance, Force
SetBatchLines, -1
Process, Priority,, High
#Include <Class_Toolbar> ; http://www.autohotkey.com/board/topic/94750-class-toolbar-create-and-modify
#Include <Class_Rebar>

Gui, +Resize
Gui, Add, Custom, ClassToolbarWindow32 hwndhToolbar x0 y0 h23 w500 0x0800 0x0100 0x0040 0x0008 0x0004
Gui, Add, Custom, ClassReBarWindow32 hwndhRebar gRB_Notifications 0x0200 0x0400 0x0040 0x8000
Gui, Add, Combobox, hwndhNavBar vNavBar, http://www.autohotkey.com||http://www.autohotkey.com/board
Gui, Add, Button, Default hwndhGo gGo, Go
Gui, Add, ActiveX, x0 y40 w980 h640 vWB, Shell.Explorer
Gui, Show, w980 h640, AHK Browser
; WB.Silent := True
GoSub, DefineToolbar

; ========== Rebar ==========

TB.Get("", "", "", "", tbBtnHeight)

RB := New Rebar(hRebar)

RB.SetImageList(IL)

RB.InsertBand(hToolbar, 0, "", 10, "", 140, 0, "", tbBtnHeight, 45, 120)
RB.InsertBand(hNavBar, 0, "", 20, "", 800)
RB.InsertBand(hGo, 0, "", 30, "", 50)

GoSub, Go
return

RB_Notifications:
If (A_GuiEvent = "N")
    If (RB.OnNotify(A_EventInfo, MX, MY, BandID))
        ShowChevronMenu(BandID, MX, MY)
Return

ShowChevronMenu(Band, X, Y)
{
    Global TB
    HidBtns := TB.GetHiddenButtons()
    Loop, % HidBtns.MaxIndex()
        Menu, TestMenu, Add, % HidBtns[A_Index].Text, % HidBtns[A_Index].Label
    Menu, TestMenu, Show, %X%, %Y%
    Menu, TestMenu, DeleteAll
}

; ========== Toolbar ==========
; http://www.autohotkey.com/board/topic/94750-class-toolbar-create-and-modify

DefineToolbar:
ILA := IL_Create(2, 2, 1)
IL_Add(ILA, "wmploc.dll", 202)
IL_Add(ILA, "wmploc.dll", 201)
IL_Add(ILA, "wmploc.dll", 154)

TB := New Toolbar(hToolbar)
TB.SetImageList(ILA)
TB.Add("", "Back=Back:1", "Forward=Forward:2", "", "Refresh=Refresh:3")
TB.SetMaxTextRows(0)
TB.SetExStyle(0x10)
OnMessage(0x111, "TB_Messages")
return

TB_Messages(wParam, lParam)
{
    Global
    TB.OnMessage(wParam)
}

; =============================

Go:
Gui, Submit, NoHide
WB.Navigate(NavBar)
IELoad(WB)
Gui, Show,, % WB.LocationName
return

Back:
WB.GoBack
IELoad(WB)
Gui, Show,, % WB.LocationName
return

Forward:
WB.GoForward
IELoad(WB)
Gui, Show,, % WB.LocationName
return

Refresh:
WB.Refresh
IELoad(WB)
Gui, Show,, % WB.LocationName
return

GuiClose:
ExitApp
return

GuiSize:
RB.ShowBand(1)
GuiControl, Move, WB, w%A_GuiWidth% h%A_GuiHeight%
return

IELoad(Pwb)
{
    If !Pwb
        Return False
    While !(Pwb.busy)
        Sleep, 100
    While (Pwb.busy)
        Sleep, 100
    While !(Pwb.document.Readystate = "Complete")
        Sleep, 100
    Return True
}