GuiListBox.au3 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928
  1. #include-once
  2. #include "DirConstants.au3"
  3. #include "ListBoxConstants.au3"
  4. #include "SendMessage.au3"
  5. #include "UDFGlobalID.au3"
  6. #include "WinAPIConv.au3"
  7. #include "WinAPIRes.au3"
  8. #include "WinAPISysInternals.au3"
  9. ; #INDEX# =======================================================================================================================
  10. ; Title .........: ListBox
  11. ; AutoIt Version : 3.3.14.5
  12. ; Language ......: English
  13. ; Description ...: Functions that assist with ListBox control management.
  14. ; Author(s) .....: Paul Campbell (PaulIA)
  15. ; ===============================================================================================================================
  16. ; #VARIABLES# ===================================================================================================================
  17. Global $__g_hLBLastWnd
  18. ; ===============================================================================================================================
  19. ; #CONSTANTS# ===================================================================================================================
  20. Global Const $__LISTBOXCONSTANT_ClassName = "ListBox"
  21. Global Const $__LISTBOXCONSTANT_ClassNames = $__LISTBOXCONSTANT_ClassName & "|TListbox"
  22. Global Const $__LISTBOXCONSTANT_DEFAULT_GUI_FONT = 17
  23. Global Const $__LISTBOXCONSTANT_WM_SETREDRAW = 0x000B
  24. Global Const $__LISTBOXCONSTANT_WM_GETFONT = 0x0031
  25. ; ===============================================================================================================================
  26. ; #CURRENT# =====================================================================================================================
  27. ; _GUICtrlListBox_AddFile
  28. ; _GUICtrlListBox_AddString
  29. ; _GUICtrlListBox_BeginUpdate
  30. ; _GUICtrlListBox_ClickItem
  31. ; _GUICtrlListBox_Create
  32. ; _GUICtrlListBox_DeleteString
  33. ; _GUICtrlListBox_Destroy
  34. ; _GUICtrlListBox_Dir
  35. ; _GUICtrlListBox_EndUpdate
  36. ; _GUICtrlListBox_FindString
  37. ; _GUICtrlListBox_FindInText
  38. ; _GUICtrlListBox_GetAnchorIndex
  39. ; _GUICtrlListBox_GetCaretIndex
  40. ; _GUICtrlListBox_GetCount
  41. ; _GUICtrlListBox_GetCurSel
  42. ; _GUICtrlListBox_GetHorizontalExtent
  43. ; _GUICtrlListBox_GetItemData
  44. ; _GUICtrlListBox_GetItemHeight
  45. ; _GUICtrlListBox_GetItemRect
  46. ; _GUICtrlListBox_GetItemRectEx
  47. ; _GUICtrlListBox_GetListBoxInfo
  48. ; _GUICtrlListBox_GetLocale
  49. ; _GUICtrlListBox_GetLocaleCountry
  50. ; _GUICtrlListBox_GetLocaleLang
  51. ; _GUICtrlListBox_GetLocalePrimLang
  52. ; _GUICtrlListBox_GetLocaleSubLang
  53. ; _GUICtrlListBox_GetSel
  54. ; _GUICtrlListBox_GetSelCount
  55. ; _GUICtrlListBox_GetSelItems
  56. ; _GUICtrlListBox_GetSelItemsText
  57. ; _GUICtrlListBox_GetText
  58. ; _GUICtrlListBox_GetTextLen
  59. ; _GUICtrlListBox_GetTopIndex
  60. ; _GUICtrlListBox_InitStorage
  61. ; _GUICtrlListBox_InsertString
  62. ; _GUICtrlListBox_ItemFromPoint
  63. ; _GUICtrlListBox_ReplaceString
  64. ; _GUICtrlListBox_ResetContent
  65. ; _GUICtrlListBox_SelectString
  66. ; _GUICtrlListBox_SelItemRange
  67. ; _GUICtrlListBox_SelItemRangeEx
  68. ; _GUICtrlListBox_SetAnchorIndex
  69. ; _GUICtrlListBox_SetCaretIndex
  70. ; _GUICtrlListBox_SetColumnWidth
  71. ; _GUICtrlListBox_SetCurSel
  72. ; _GUICtrlListBox_SetHorizontalExtent
  73. ; _GUICtrlListBox_SetItemData
  74. ; _GUICtrlListBox_SetItemHeight
  75. ; _GUICtrlListBox_SetLocale
  76. ; _GUICtrlListBox_SetSel
  77. ; _GUICtrlListBox_SetTabStops
  78. ; _GUICtrlListBox_SetTopIndex
  79. ; _GUICtrlListBox_Sort
  80. ; _GUICtrlListBox_SwapString
  81. ; _GUICtrlListBox_UpdateHScroll
  82. ; ===============================================================================================================================
  83. ; #FUNCTION# ====================================================================================================================
  84. ; Author ........: Paul Campbell (PaulIA)
  85. ; Modified.......: Gary Frost (gafrost)
  86. ; ===============================================================================================================================
  87. Func _GUICtrlListBox_AddFile($hWnd, $sFilePath)
  88. If Not IsString($sFilePath) Then $sFilePath = String($sFilePath)
  89. If IsHWnd($hWnd) Then
  90. Return _SendMessage($hWnd, $LB_ADDFILE, 0, $sFilePath, 0, "wparam", "wstr")
  91. Else
  92. Return GUICtrlSendMsg($hWnd, $LB_ADDFILE, 0, $sFilePath)
  93. EndIf
  94. EndFunc ;==>_GUICtrlListBox_AddFile
  95. ; #FUNCTION# ====================================================================================================================
  96. ; Author ........: Gary Frost
  97. ; Modified.......:
  98. ; ===============================================================================================================================
  99. Func _GUICtrlListBox_AddString($hWnd, $sText)
  100. If Not IsString($sText) Then $sText = String($sText)
  101. If IsHWnd($hWnd) Then
  102. Return _SendMessage($hWnd, $LB_ADDSTRING, 0, $sText, 0, "wparam", "wstr")
  103. Else
  104. Return GUICtrlSendMsg($hWnd, $LB_ADDSTRING, 0, $sText)
  105. EndIf
  106. EndFunc ;==>_GUICtrlListBox_AddString
  107. ; #FUNCTION# ====================================================================================================================
  108. ; Author ........: Paul Campbell (PaulIA)
  109. ; Modified.......: Gary Frost (gafrost)
  110. ; ===============================================================================================================================
  111. Func _GUICtrlListBox_BeginUpdate($hWnd)
  112. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  113. Return _SendMessage($hWnd, $__LISTBOXCONSTANT_WM_SETREDRAW, False) = 0
  114. EndFunc ;==>_GUICtrlListBox_BeginUpdate
  115. ; #FUNCTION# ====================================================================================================================
  116. ; Author ........: Paul Campbell (PaulIA)
  117. ; Modified.......: Gary Frost (gafrost)
  118. ; ===============================================================================================================================
  119. Func _GUICtrlListBox_ClickItem($hWnd, $iIndex, $sButton = "left", $bMove = False, $iClicks = 1, $iSpeed = 0)
  120. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  121. Local $tRECT = _GUICtrlListBox_GetItemRectEx($hWnd, $iIndex)
  122. Local $tPoint = _WinAPI_PointFromRect($tRECT)
  123. $tPoint = _WinAPI_ClientToScreen($hWnd, $tPoint)
  124. Local $iX, $iY
  125. _WinAPI_GetXYFromPoint($tPoint, $iX, $iY)
  126. Local $iMode = Opt("MouseCoordMode", 1)
  127. If Not $bMove Then
  128. Local $aPos = MouseGetPos()
  129. _WinAPI_ShowCursor(False)
  130. MouseClick($sButton, $iX, $iY, $iClicks, $iSpeed)
  131. MouseMove($aPos[0], $aPos[1], 0)
  132. _WinAPI_ShowCursor(True)
  133. Else
  134. MouseClick($sButton, $iX, $iY, $iClicks, $iSpeed)
  135. EndIf
  136. Opt("MouseCoordMode", $iMode)
  137. EndFunc ;==>_GUICtrlListBox_ClickItem
  138. ; #FUNCTION# ====================================================================================================================
  139. ; Author ........: Paul Campbell (PaulIA)
  140. ; Modified.......: Gary Frost
  141. ; ===============================================================================================================================
  142. Func _GUICtrlListBox_Create($hWnd, $sText, $iX, $iY, $iWidth = 100, $iHeight = 200, $iStyle = 0x00B00002, $iExStyle = 0x00000200)
  143. If Not IsHWnd($hWnd) Then
  144. ; Invalid Window handle for _GUICtrlListBox_Create 1st parameter
  145. Return SetError(1, 0, 0)
  146. EndIf
  147. If Not IsString($sText) Then
  148. ; 2nd parameter not a string for _GUICtrlListBox_Create
  149. Return SetError(2, 0, 0)
  150. EndIf
  151. If $iWidth = -1 Then $iWidth = 100
  152. If $iHeight = -1 Then $iHeight = 200
  153. Local Const $WS_VSCROLL = 0x00200000, $WS_HSCROLL = 0x00100000, $WS_BORDER = 0x00800000
  154. If $iStyle = -1 Then $iStyle = BitOR($WS_BORDER, $WS_VSCROLL, $WS_HSCROLL, $LBS_SORT)
  155. If $iExStyle = -1 Then $iExStyle = 0x00000200
  156. $iStyle = BitOR($iStyle, $__UDFGUICONSTANT_WS_VISIBLE, $__UDFGUICONSTANT_WS_TABSTOP, $__UDFGUICONSTANT_WS_CHILD, $LBS_NOTIFY)
  157. Local $nCtrlID = __UDF_GetNextGlobalID($hWnd)
  158. If @error Then Return SetError(@error, @extended, 0)
  159. Local $hList = _WinAPI_CreateWindowEx($iExStyle, $__LISTBOXCONSTANT_ClassName, "", $iStyle, $iX, $iY, $iWidth, $iHeight, $hWnd, $nCtrlID)
  160. _WinAPI_SetFont($hList, _WinAPI_GetStockObject($__LISTBOXCONSTANT_DEFAULT_GUI_FONT))
  161. If StringLen($sText) Then _GUICtrlListBox_AddString($hList, $sText)
  162. Return $hList
  163. EndFunc ;==>_GUICtrlListBox_Create
  164. ; #FUNCTION# ====================================================================================================================
  165. ; Author ........: Gary Frost
  166. ; Modified.......:
  167. ; ===============================================================================================================================
  168. Func _GUICtrlListBox_DeleteString($hWnd, $iIndex)
  169. If IsHWnd($hWnd) Then
  170. Return _SendMessage($hWnd, $LB_DELETESTRING, $iIndex)
  171. Else
  172. Return GUICtrlSendMsg($hWnd, $LB_DELETESTRING, $iIndex, 0)
  173. EndIf
  174. EndFunc ;==>_GUICtrlListBox_DeleteString
  175. ; #FUNCTION# ====================================================================================================================
  176. ; Author ........: Gary Frost (gafrost)
  177. ; Modified.......:
  178. ; ===============================================================================================================================
  179. Func _GUICtrlListBox_Destroy(ByRef $hWnd)
  180. ;If Not _WinAPI_IsClassName($hWnd, $__LISTBOXCONSTANT_ClassNames) Then Return SetError(2, 2, False)
  181. Local $iDestroyed = 0
  182. If IsHWnd($hWnd) Then
  183. If _WinAPI_InProcess($hWnd, $__g_hLBLastWnd) Then
  184. Local $nCtrlID = _WinAPI_GetDlgCtrlID($hWnd)
  185. Local $hParent = _WinAPI_GetParent($hWnd)
  186. $iDestroyed = _WinAPI_DestroyWindow($hWnd)
  187. Local $iRet = __UDF_FreeGlobalID($hParent, $nCtrlID)
  188. If Not $iRet Then
  189. ; can check for errors here if needed, for debug
  190. EndIf
  191. Else
  192. ; Not Allowed to Destroy Other Applications Control(s)
  193. Return SetError(1, 1, False)
  194. EndIf
  195. Else
  196. $iDestroyed = GUICtrlDelete($hWnd)
  197. EndIf
  198. If $iDestroyed Then $hWnd = 0
  199. Return $iDestroyed <> 0
  200. EndFunc ;==>_GUICtrlListBox_Destroy
  201. ; #FUNCTION# ====================================================================================================================
  202. ; Author ........: Gary Frost (gafrost), CyberSlug
  203. ; Modified.......:
  204. ; ===============================================================================================================================
  205. Func _GUICtrlListBox_Dir($hWnd, $sFilePath, $iAttributes = 0, $bBrackets = True)
  206. If Not IsString($sFilePath) Then $sFilePath = String($sFilePath)
  207. If BitAND($iAttributes, $DDL_DRIVES) = $DDL_DRIVES And Not $bBrackets Then
  208. Local $sText
  209. Local $hGui_no_brackets = GUICreate("no brackets")
  210. Local $idList_no_brackets = GUICtrlCreateList("", 240, 40, 120, 120)
  211. Local $iRet = GUICtrlSendMsg($idList_no_brackets, $LB_DIR, $iAttributes, $sFilePath)
  212. For $i = 0 To _GUICtrlListBox_GetCount($idList_no_brackets) - 1
  213. $sText = _GUICtrlListBox_GetText($idList_no_brackets, $i)
  214. $sText = StringReplace(StringReplace(StringReplace($sText, "[", ""), "]", ":"), "-", "")
  215. _GUICtrlListBox_InsertString($hWnd, $sText)
  216. Next
  217. GUIDelete($hGui_no_brackets)
  218. Return $iRet
  219. Else
  220. If IsHWnd($hWnd) Then
  221. Return _SendMessage($hWnd, $LB_DIR, $iAttributes, $sFilePath, 0, "wparam", "wstr")
  222. Else
  223. Return GUICtrlSendMsg($hWnd, $LB_DIR, $iAttributes, $sFilePath)
  224. EndIf
  225. EndIf
  226. EndFunc ;==>_GUICtrlListBox_Dir
  227. ; #FUNCTION# ====================================================================================================================
  228. ; Author ........: Paul Campbell (PaulIA)
  229. ; Modified.......: Gary Frost (gafrost)
  230. ; ===============================================================================================================================
  231. Func _GUICtrlListBox_EndUpdate($hWnd)
  232. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  233. Return _SendMessage($hWnd, $__LISTBOXCONSTANT_WM_SETREDRAW, True) = 0
  234. EndFunc ;==>_GUICtrlListBox_EndUpdate
  235. ; #FUNCTION# ====================================================================================================================
  236. ; Author ........: Gary Frost (gafrost)
  237. ; Modified.......:
  238. ; ===============================================================================================================================
  239. Func _GUICtrlListBox_FindString($hWnd, $sText, $bExact = False)
  240. If Not IsString($sText) Then $sText = String($sText)
  241. If IsHWnd($hWnd) Then
  242. If ($bExact) Then
  243. Return _SendMessage($hWnd, $LB_FINDSTRINGEXACT, -1, $sText, 0, "wparam", "wstr")
  244. Else
  245. Return _SendMessage($hWnd, $LB_FINDSTRING, -1, $sText, 0, "wparam", "wstr")
  246. EndIf
  247. Else
  248. If ($bExact) Then
  249. Return GUICtrlSendMsg($hWnd, $LB_FINDSTRINGEXACT, -1, $sText)
  250. Else
  251. Return GUICtrlSendMsg($hWnd, $LB_FINDSTRING, -1, $sText)
  252. EndIf
  253. EndIf
  254. EndFunc ;==>_GUICtrlListBox_FindString
  255. ; #FUNCTION# ====================================================================================================================
  256. ; Author ........: Paul Campbell (PaulIA)
  257. ; Modified.......:
  258. ; ===============================================================================================================================
  259. Func _GUICtrlListBox_FindInText($hWnd, $sText, $iStart = -1, $bWrapOK = True)
  260. Local $sList
  261. Local $iCount = _GUICtrlListBox_GetCount($hWnd)
  262. For $iI = $iStart + 1 To $iCount - 1
  263. $sList = _GUICtrlListBox_GetText($hWnd, $iI)
  264. If StringInStr($sList, $sText) Then Return $iI
  265. Next
  266. If ($iStart = -1) Or Not $bWrapOK Then Return -1
  267. For $iI = 0 To $iStart - 1
  268. $sList = _GUICtrlListBox_GetText($hWnd, $iI)
  269. If StringInStr($sList, $sText) Then Return $iI
  270. Next
  271. Return -1
  272. EndFunc ;==>_GUICtrlListBox_FindInText
  273. ; #FUNCTION# ====================================================================================================================
  274. ; Author ........: CyberSlug
  275. ; Modified.......: Gary Frost (gafrost)
  276. ; ===============================================================================================================================
  277. Func _GUICtrlListBox_GetAnchorIndex($hWnd)
  278. If IsHWnd($hWnd) Then
  279. Return _SendMessage($hWnd, $LB_GETANCHORINDEX)
  280. Else
  281. Return GUICtrlSendMsg($hWnd, $LB_GETANCHORINDEX, 0, 0)
  282. EndIf
  283. EndFunc ;==>_GUICtrlListBox_GetAnchorIndex
  284. ; #FUNCTION# ====================================================================================================================
  285. ; Author ........: CyberSlug
  286. ; Modified.......: Gary Frost (gafrost)
  287. ; ===============================================================================================================================
  288. Func _GUICtrlListBox_GetCaretIndex($hWnd)
  289. If IsHWnd($hWnd) Then
  290. Return _SendMessage($hWnd, $LB_GETCARETINDEX)
  291. Else
  292. Return GUICtrlSendMsg($hWnd, $LB_GETCARETINDEX, 0, 0)
  293. EndIf
  294. EndFunc ;==>_GUICtrlListBox_GetCaretIndex
  295. ; #FUNCTION# ====================================================================================================================
  296. ; Author ........: Gary Frost (gafrost)
  297. ; Modified.......:
  298. ; ===============================================================================================================================
  299. Func _GUICtrlListBox_GetCount($hWnd)
  300. If IsHWnd($hWnd) Then
  301. Return _SendMessage($hWnd, $LB_GETCOUNT)
  302. Else
  303. Return GUICtrlSendMsg($hWnd, $LB_GETCOUNT, 0, 0)
  304. EndIf
  305. EndFunc ;==>_GUICtrlListBox_GetCount
  306. ; #FUNCTION# ====================================================================================================================
  307. ; Author ........: Gary Frost (gafrost)
  308. ; Modified.......:
  309. ; ===============================================================================================================================
  310. Func _GUICtrlListBox_GetCurSel($hWnd)
  311. If IsHWnd($hWnd) Then
  312. Return _SendMessage($hWnd, $LB_GETCURSEL)
  313. Else
  314. Return GUICtrlSendMsg($hWnd, $LB_GETCURSEL, 0, 0)
  315. EndIf
  316. EndFunc ;==>_GUICtrlListBox_GetCurSel
  317. ; #FUNCTION# ====================================================================================================================
  318. ; Author ........: Gary Frost (gafrost)
  319. ; Modified.......:
  320. ; ===============================================================================================================================
  321. Func _GUICtrlListBox_GetHorizontalExtent($hWnd)
  322. If IsHWnd($hWnd) Then
  323. Return _SendMessage($hWnd, $LB_GETHORIZONTALEXTENT)
  324. Else
  325. Return GUICtrlSendMsg($hWnd, $LB_GETHORIZONTALEXTENT, 0, 0)
  326. EndIf
  327. EndFunc ;==>_GUICtrlListBox_GetHorizontalExtent
  328. ; #FUNCTION# ====================================================================================================================
  329. ; Author ........: Paul Campbell (PaulIA)
  330. ; Modified.......: Gary Frost (gafrost)
  331. ; ===============================================================================================================================
  332. Func _GUICtrlListBox_GetItemData($hWnd, $iIndex)
  333. If IsHWnd($hWnd) Then
  334. Return _SendMessage($hWnd, $LB_GETITEMDATA, $iIndex)
  335. Else
  336. Return GUICtrlSendMsg($hWnd, $LB_GETITEMDATA, $iIndex, 0)
  337. EndIf
  338. EndFunc ;==>_GUICtrlListBox_GetItemData
  339. ; #FUNCTION# ====================================================================================================================
  340. ; Author ........: Paul Campbell (PaulIA)
  341. ; Modified.......: Gary Frost (gafrost)
  342. ; ===============================================================================================================================
  343. Func _GUICtrlListBox_GetItemHeight($hWnd)
  344. If IsHWnd($hWnd) Then
  345. Return _SendMessage($hWnd, $LB_GETITEMHEIGHT)
  346. Else
  347. Return GUICtrlSendMsg($hWnd, $LB_GETITEMHEIGHT, 0, 0)
  348. EndIf
  349. EndFunc ;==>_GUICtrlListBox_GetItemHeight
  350. ; #FUNCTION# ====================================================================================================================
  351. ; Author ........: Paul Campbell (PaulIA)
  352. ; Modified.......:
  353. ; ===============================================================================================================================
  354. Func _GUICtrlListBox_GetItemRect($hWnd, $iIndex)
  355. Local $aRect[4]
  356. Local $tRECT = _GUICtrlListBox_GetItemRectEx($hWnd, $iIndex)
  357. $aRect[0] = DllStructGetData($tRECT, "Left")
  358. $aRect[1] = DllStructGetData($tRECT, "Top")
  359. $aRect[2] = DllStructGetData($tRECT, "Right")
  360. $aRect[3] = DllStructGetData($tRECT, "Bottom")
  361. Return $aRect
  362. EndFunc ;==>_GUICtrlListBox_GetItemRect
  363. ; #FUNCTION# ====================================================================================================================
  364. ; Author ........: Paul Campbell (PaulIA)
  365. ; Modified.......: Gary Frost (gafrost)
  366. ; ===============================================================================================================================
  367. Func _GUICtrlListBox_GetItemRectEx($hWnd, $iIndex)
  368. Local $tRECT = DllStructCreate($tagRECT)
  369. If IsHWnd($hWnd) Then
  370. _SendMessage($hWnd, $LB_GETITEMRECT, $iIndex, $tRECT, 0, "wparam", "struct*")
  371. Else
  372. GUICtrlSendMsg($hWnd, $LB_GETITEMRECT, $iIndex, DllStructGetPtr($tRECT))
  373. EndIf
  374. Return $tRECT
  375. EndFunc ;==>_GUICtrlListBox_GetItemRectEx
  376. ; #FUNCTION# ====================================================================================================================
  377. ; Author ........: Gary Frost (gafrost)
  378. ; Modified.......:
  379. ; ===============================================================================================================================
  380. Func _GUICtrlListBox_GetListBoxInfo($hWnd)
  381. If IsHWnd($hWnd) Then
  382. Return _SendMessage($hWnd, $LB_GETLISTBOXINFO)
  383. Else
  384. Return GUICtrlSendMsg($hWnd, $LB_GETLISTBOXINFO, 0, 0)
  385. EndIf
  386. EndFunc ;==>_GUICtrlListBox_GetListBoxInfo
  387. ; #FUNCTION# ====================================================================================================================
  388. ; Author ........: CyberSlug
  389. ; Modified.......: Gary Frost (gafrost)
  390. ; ===============================================================================================================================
  391. Func _GUICtrlListBox_GetLocale($hWnd)
  392. If IsHWnd($hWnd) Then
  393. Return _SendMessage($hWnd, $LB_GETLOCALE)
  394. Else
  395. Return GUICtrlSendMsg($hWnd, $LB_GETLOCALE, 0, 0)
  396. EndIf
  397. EndFunc ;==>_GUICtrlListBox_GetLocale
  398. ; #FUNCTION# ====================================================================================================================
  399. ; Author ........: Paul Campbell (PaulIA)
  400. ; Modified.......:
  401. ; ===============================================================================================================================
  402. Func _GUICtrlListBox_GetLocaleCountry($hWnd)
  403. Return _WinAPI_HiWord(_GUICtrlListBox_GetLocale($hWnd))
  404. EndFunc ;==>_GUICtrlListBox_GetLocaleCountry
  405. ; #FUNCTION# ====================================================================================================================
  406. ; Author ........: Paul Campbell (PaulIA)
  407. ; Modified.......:
  408. ; ===============================================================================================================================
  409. Func _GUICtrlListBox_GetLocaleLang($hWnd)
  410. Return _WinAPI_LoWord(_GUICtrlListBox_GetLocale($hWnd))
  411. EndFunc ;==>_GUICtrlListBox_GetLocaleLang
  412. ; #FUNCTION# ====================================================================================================================
  413. ; Author ........: Gary Frost (gafrost)
  414. ; Modified.......:
  415. ; ===============================================================================================================================
  416. Func _GUICtrlListBox_GetLocalePrimLang($hWnd)
  417. Return _WinAPI_PrimaryLangId(_GUICtrlListBox_GetLocaleLang($hWnd))
  418. EndFunc ;==>_GUICtrlListBox_GetLocalePrimLang
  419. ; #FUNCTION# ====================================================================================================================
  420. ; Author ........: Gary Frost (gafrost)
  421. ; Modified.......:
  422. ; ===============================================================================================================================
  423. Func _GUICtrlListBox_GetLocaleSubLang($hWnd)
  424. Return _WinAPI_SubLangId(_GUICtrlListBox_GetLocaleLang($hWnd))
  425. EndFunc ;==>_GUICtrlListBox_GetLocaleSubLang
  426. ; #FUNCTION# ====================================================================================================================
  427. ; Author ........: CyberSlug
  428. ; Modified.......: Gary Frost (gafrost)
  429. ; ===============================================================================================================================
  430. Func _GUICtrlListBox_GetSel($hWnd, $iIndex)
  431. If IsHWnd($hWnd) Then
  432. Return _SendMessage($hWnd, $LB_GETSEL, $iIndex) <> 0
  433. Else
  434. Return GUICtrlSendMsg($hWnd, $LB_GETSEL, $iIndex, 0) <> 0
  435. EndIf
  436. EndFunc ;==>_GUICtrlListBox_GetSel
  437. ; #FUNCTION# ====================================================================================================================
  438. ; Author ........: CyberSlug
  439. ; Modified.......: Gary Frost (gafrost)
  440. ; ===============================================================================================================================
  441. Func _GUICtrlListBox_GetSelCount($hWnd)
  442. If IsHWnd($hWnd) Then
  443. Return _SendMessage($hWnd, $LB_GETSELCOUNT)
  444. EndIf
  445. If IsHWnd(GUICtrlGetHandle($hWnd)) Then
  446. Return GUICtrlSendMsg($hWnd, $LB_GETSELCOUNT, 0, 0)
  447. EndIf
  448. ; Invalid controlID
  449. Return -1
  450. EndFunc ;==>_GUICtrlListBox_GetSelCount
  451. ; #FUNCTION# ====================================================================================================================
  452. ; Author ........: Paul Campbell (PaulIA)
  453. ; Modified.......: Gary Frost (gafrost)
  454. ; ===============================================================================================================================
  455. Func _GUICtrlListBox_GetSelItems($hWnd)
  456. Local $aArray[1] = [0]
  457. Local $iCount = _GUICtrlListBox_GetSelCount($hWnd)
  458. If $iCount > 0 Then
  459. ReDim $aArray[$iCount + 1]
  460. Local $tArray = DllStructCreate("int[" & $iCount & "]")
  461. If IsHWnd($hWnd) Then
  462. _SendMessage($hWnd, $LB_GETSELITEMS, $iCount, $tArray, 0, "wparam", "struct*")
  463. Else
  464. GUICtrlSendMsg($hWnd, $LB_GETSELITEMS, $iCount, DllStructGetPtr($tArray))
  465. EndIf
  466. $aArray[0] = $iCount
  467. For $iI = 1 To $iCount
  468. $aArray[$iI] = DllStructGetData($tArray, 1, $iI)
  469. Next
  470. EndIf
  471. Return $aArray
  472. EndFunc ;==>_GUICtrlListBox_GetSelItems
  473. ; #FUNCTION# ====================================================================================================================
  474. ; Author ........: Gary Frost (gafrost), CyberSlug
  475. ; Modified.......:
  476. ; ===============================================================================================================================
  477. Func _GUICtrlListBox_GetSelItemsText($hWnd)
  478. Local $aText[1] = [0], $iCount = _GUICtrlListBox_GetSelCount($hWnd)
  479. If $iCount > 0 Then
  480. Local $aIndices = _GUICtrlListBox_GetSelItems($hWnd)
  481. ReDim $aText[UBound($aIndices)]
  482. $aText[0] = $aIndices[0]
  483. For $i = 1 To $aIndices[0]
  484. $aText[$i] = _GUICtrlListBox_GetText($hWnd, $aIndices[$i])
  485. Next
  486. EndIf
  487. Return $aText
  488. EndFunc ;==>_GUICtrlListBox_GetSelItemsText
  489. ; #FUNCTION# ====================================================================================================================
  490. ; Author ........: CyberSlug
  491. ; Modified.......: Gary Frost (gafrost
  492. ; ===============================================================================================================================
  493. Func _GUICtrlListBox_GetText($hWnd, $iIndex)
  494. Local $tText = DllStructCreate("wchar Text[" & _GUICtrlListBox_GetTextLen($hWnd, $iIndex) + 1 & "]")
  495. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  496. _SendMessage($hWnd, $LB_GETTEXT, $iIndex, $tText, 0, "wparam", "struct*")
  497. Return DllStructGetData($tText, "Text")
  498. EndFunc ;==>_GUICtrlListBox_GetText
  499. ; #FUNCTION# ====================================================================================================================
  500. ; Author ........: CyberSlug
  501. ; Modified.......: Gary Frost (gafrost)
  502. ; ===============================================================================================================================
  503. Func _GUICtrlListBox_GetTextLen($hWnd, $iIndex)
  504. If IsHWnd($hWnd) Then
  505. Return _SendMessage($hWnd, $LB_GETTEXTLEN, $iIndex)
  506. Else
  507. Return GUICtrlSendMsg($hWnd, $LB_GETTEXTLEN, $iIndex, 0)
  508. EndIf
  509. EndFunc ;==>_GUICtrlListBox_GetTextLen
  510. ; #FUNCTION# ====================================================================================================================
  511. ; Author ........: Gary Frost (gafrost), CyberSlug
  512. ; Modified.......: Gary Frost (gafrost)
  513. ; ===============================================================================================================================
  514. Func _GUICtrlListBox_GetTopIndex($hWnd)
  515. If IsHWnd($hWnd) Then
  516. Return _SendMessage($hWnd, $LB_GETTOPINDEX)
  517. Else
  518. Return GUICtrlSendMsg($hWnd, $LB_GETTOPINDEX, 0, 0)
  519. EndIf
  520. EndFunc ;==>_GUICtrlListBox_GetTopIndex
  521. ; #FUNCTION# ====================================================================================================================
  522. ; Author ........: Paul Campbell (PaulIA)
  523. ; Modified.......: Gary Frost (gafrost)
  524. ; ===============================================================================================================================
  525. Func _GUICtrlListBox_InitStorage($hWnd, $iItems, $iBytes)
  526. If IsHWnd($hWnd) Then
  527. Return _SendMessage($hWnd, $LB_INITSTORAGE, $iItems, $iBytes)
  528. Else
  529. Return GUICtrlSendMsg($hWnd, $LB_INITSTORAGE, $iItems, $iBytes)
  530. EndIf
  531. EndFunc ;==>_GUICtrlListBox_InitStorage
  532. ; #FUNCTION# ====================================================================================================================
  533. ; Author ........: Gary Frost (gafrost)
  534. ; Modified.......:
  535. ; ===============================================================================================================================
  536. Func _GUICtrlListBox_InsertString($hWnd, $sText, $iIndex = -1)
  537. If Not IsString($sText) Then $sText = String($sText)
  538. If IsHWnd($hWnd) Then
  539. Return _SendMessage($hWnd, $LB_INSERTSTRING, $iIndex, $sText, 0, "wparam", "wstr")
  540. Else
  541. Return GUICtrlSendMsg($hWnd, $LB_INSERTSTRING, $iIndex, $sText)
  542. EndIf
  543. EndFunc ;==>_GUICtrlListBox_InsertString
  544. ; #FUNCTION# ====================================================================================================================
  545. ; Author ........: Paul Campbell (PaulIA)
  546. ; Modified.......: Gary Frost (gafrost)
  547. ; ===============================================================================================================================
  548. Func _GUICtrlListBox_ItemFromPoint($hWnd, $iX, $iY)
  549. Local $iRet
  550. If IsHWnd($hWnd) Then
  551. $iRet = _SendMessage($hWnd, $LB_ITEMFROMPOINT, 0, _WinAPI_MakeLong($iX, $iY))
  552. Else
  553. $iRet = GUICtrlSendMsg($hWnd, $LB_ITEMFROMPOINT, 0, _WinAPI_MakeLong($iX, $iY))
  554. EndIf
  555. If _WinAPI_HiWord($iRet) <> 0 Then $iRet = -1
  556. Return $iRet
  557. EndFunc ;==>_GUICtrlListBox_ItemFromPoint
  558. ; #FUNCTION# ====================================================================================================================
  559. ; Author ........: Gary Frost (gafrost), CyberSlug
  560. ; Modified.......:
  561. ; ===============================================================================================================================
  562. Func _GUICtrlListBox_ReplaceString($hWnd, $iIndex, $sText)
  563. If (_GUICtrlListBox_DeleteString($hWnd, $iIndex) == $LB_ERR) Then Return SetError($LB_ERR, $LB_ERR, False)
  564. If (_GUICtrlListBox_InsertString($hWnd, $sText, $iIndex) == $LB_ERR) Then Return SetError($LB_ERR, $LB_ERR, False)
  565. Return True
  566. EndFunc ;==>_GUICtrlListBox_ReplaceString
  567. ; #FUNCTION# ====================================================================================================================
  568. ; Author ........: Gary Frost (gafrost)
  569. ; Modified.......:
  570. ; ===============================================================================================================================
  571. Func _GUICtrlListBox_ResetContent($hWnd)
  572. If IsHWnd($hWnd) Then
  573. _SendMessage($hWnd, $LB_RESETCONTENT)
  574. Else
  575. GUICtrlSendMsg($hWnd, $LB_RESETCONTENT, 0, 0)
  576. EndIf
  577. EndFunc ;==>_GUICtrlListBox_ResetContent
  578. ; #FUNCTION# ====================================================================================================================
  579. ; Author ........: Gary Frost (gafrost)
  580. ; Modified.......:
  581. ; ===============================================================================================================================
  582. Func _GUICtrlListBox_SelectString($hWnd, $sText, $iIndex = -1)
  583. If Not IsString($sText) Then $sText = String($sText)
  584. If IsHWnd($hWnd) Then
  585. Return _SendMessage($hWnd, $LB_SELECTSTRING, $iIndex, $sText, 0, "wparam", "wstr")
  586. Else
  587. Return GUICtrlSendMsg($hWnd, $LB_SELECTSTRING, $iIndex, $sText)
  588. EndIf
  589. EndFunc ;==>_GUICtrlListBox_SelectString
  590. ; #FUNCTION# ====================================================================================================================
  591. ; Author ........: Gary Frost (gafrost), CyberSlug
  592. ; Modified.......: Gary Frost (gafrost, re-written
  593. ; ===============================================================================================================================
  594. Func _GUICtrlListBox_SelItemRange($hWnd, $iFirst, $iLast, $bSelect = True)
  595. If IsHWnd($hWnd) Then
  596. Return _SendMessage($hWnd, $LB_SELITEMRANGE, $bSelect, _WinAPI_MakeLong($iFirst, $iLast)) = 0
  597. Else
  598. Return GUICtrlSendMsg($hWnd, $LB_SELITEMRANGE, $bSelect, _WinAPI_MakeLong($iFirst, $iLast)) = 0
  599. EndIf
  600. EndFunc ;==>_GUICtrlListBox_SelItemRange
  601. ; #FUNCTION# ====================================================================================================================
  602. ; Author ........: CyberSlug
  603. ; Modified.......: Gary Frost (gafrost)
  604. ; ===============================================================================================================================
  605. Func _GUICtrlListBox_SelItemRangeEx($hWnd, $iFirst, $iLast)
  606. If IsHWnd($hWnd) Then
  607. Return _SendMessage($hWnd, $LB_SELITEMRANGEEX, $iFirst, $iLast) = 0
  608. Else
  609. Return GUICtrlSendMsg($hWnd, $LB_SELITEMRANGEEX, $iFirst, $iLast) = 0
  610. EndIf
  611. EndFunc ;==>_GUICtrlListBox_SelItemRangeEx
  612. ; #FUNCTION# ====================================================================================================================
  613. ; Author ........: Gary Frost (gafrost)
  614. ; Modified.......:
  615. ; ===============================================================================================================================
  616. Func _GUICtrlListBox_SetAnchorIndex($hWnd, $iIndex)
  617. If IsHWnd($hWnd) Then
  618. Return _SendMessage($hWnd, $LB_SETANCHORINDEX, $iIndex) = 0
  619. Else
  620. Return GUICtrlSendMsg($hWnd, $LB_SETANCHORINDEX, $iIndex, 0) = 0
  621. EndIf
  622. EndFunc ;==>_GUICtrlListBox_SetAnchorIndex
  623. ; #FUNCTION# ====================================================================================================================
  624. ; Author ........: Gary Frost (gafrost)
  625. ; Modified.......:
  626. ; ===============================================================================================================================
  627. Func _GUICtrlListBox_SetCaretIndex($hWnd, $iIndex, $bPartial = False)
  628. If IsHWnd($hWnd) Then
  629. Return _SendMessage($hWnd, $LB_SETCARETINDEX, $iIndex, $bPartial) = 0
  630. Else
  631. Return GUICtrlSendMsg($hWnd, $LB_SETCARETINDEX, $iIndex, $bPartial) = 0
  632. EndIf
  633. EndFunc ;==>_GUICtrlListBox_SetCaretIndex
  634. ; #FUNCTION# ====================================================================================================================
  635. ; Author ........: Paul Campbell (PaulIA)
  636. ; Modified.......: Gary Frost (gafrost)
  637. ; ===============================================================================================================================
  638. Func _GUICtrlListBox_SetColumnWidth($hWnd, $iWidth)
  639. If IsHWnd($hWnd) Then
  640. _SendMessage($hWnd, $LB_SETCOLUMNWIDTH, $iWidth)
  641. Else
  642. GUICtrlSendMsg($hWnd, $LB_SETCOLUMNWIDTH, $iWidth, 0)
  643. EndIf
  644. EndFunc ;==>_GUICtrlListBox_SetColumnWidth
  645. ; #FUNCTION# ====================================================================================================================
  646. ; Author ........: Sokko
  647. ; Modified.......: Gary Frost (gafrost)
  648. ; ===============================================================================================================================
  649. Func _GUICtrlListBox_SetCurSel($hWnd, $iIndex)
  650. If IsHWnd($hWnd) Then
  651. Return _SendMessage($hWnd, $LB_SETCURSEL, $iIndex)
  652. Else
  653. Return GUICtrlSendMsg($hWnd, $LB_SETCURSEL, $iIndex, 0)
  654. EndIf
  655. EndFunc ;==>_GUICtrlListBox_SetCurSel
  656. ; #FUNCTION# ====================================================================================================================
  657. ; Author ........: Gary Frost (gafrost)
  658. ; Modified.......:
  659. ; ===============================================================================================================================
  660. Func _GUICtrlListBox_SetHorizontalExtent($hWnd, $iWidth)
  661. If IsHWnd($hWnd) Then
  662. _SendMessage($hWnd, $LB_SETHORIZONTALEXTENT, $iWidth)
  663. Else
  664. GUICtrlSendMsg($hWnd, $LB_SETHORIZONTALEXTENT, $iWidth, 0)
  665. EndIf
  666. EndFunc ;==>_GUICtrlListBox_SetHorizontalExtent
  667. ; #FUNCTION# ====================================================================================================================
  668. ; Author ........: Paul Campbell (PaulIA)
  669. ; Modified.......: Gary Frost (gafrost)
  670. ; ===============================================================================================================================
  671. Func _GUICtrlListBox_SetItemData($hWnd, $iIndex, $iValue)
  672. If IsHWnd($hWnd) Then
  673. Return _SendMessage($hWnd, $LB_SETITEMDATA, $iIndex, $iValue) <> -1
  674. Else
  675. Return GUICtrlSendMsg($hWnd, $LB_SETITEMDATA, $iIndex, $iValue) <> -1
  676. EndIf
  677. EndFunc ;==>_GUICtrlListBox_SetItemData
  678. ; #FUNCTION# ====================================================================================================================
  679. ; Author ........: Paul Campbell (PaulIA)
  680. ; Modified.......: Gary Frost (gafrost)
  681. ; ===============================================================================================================================
  682. Func _GUICtrlListBox_SetItemHeight($hWnd, $iHeight, $iIndex = 0)
  683. Local $iRet
  684. If IsHWnd($hWnd) Then
  685. $iRet = _SendMessage($hWnd, $LB_SETITEMHEIGHT, $iIndex, $iHeight)
  686. _WinAPI_InvalidateRect($hWnd)
  687. Else
  688. $iRet = GUICtrlSendMsg($hWnd, $LB_SETITEMHEIGHT, $iIndex, $iHeight)
  689. _WinAPI_InvalidateRect(GUICtrlGetHandle($hWnd))
  690. EndIf
  691. Return $iRet <> -1
  692. EndFunc ;==>_GUICtrlListBox_SetItemHeight
  693. ; #FUNCTION# ====================================================================================================================
  694. ; Author ........: CyberSlug
  695. ; Modified.......: Gary Frost (gafrost)
  696. ; ===============================================================================================================================
  697. Func _GUICtrlListBox_SetLocale($hWnd, $iLocal)
  698. If IsHWnd($hWnd) Then
  699. Return _SendMessage($hWnd, $LB_SETLOCALE, $iLocal)
  700. Else
  701. Return GUICtrlSendMsg($hWnd, $LB_SETLOCALE, $iLocal, 0)
  702. EndIf
  703. EndFunc ;==>_GUICtrlListBox_SetLocale
  704. ; #FUNCTION# ====================================================================================================================
  705. ; Author ........: Gary Frost (gafrost), CyberSlug
  706. ; Modified.......:
  707. ; ===============================================================================================================================
  708. Func _GUICtrlListBox_SetSel($hWnd, $iIndex = -1, $iSelect = -1)
  709. Local $i_Ret = 1
  710. If IsHWnd($hWnd) Then
  711. If $iIndex == -1 Then ; toggle all
  712. For $iIndex = 0 To _GUICtrlListBox_GetCount($hWnd) - 1
  713. $i_Ret = _GUICtrlListBox_GetSel($hWnd, $iIndex)
  714. If ($i_Ret == $LB_ERR) Then Return SetError($LB_ERR, $LB_ERR, False)
  715. If ($i_Ret > 0) Then ;If Selected Then
  716. $i_Ret = _SendMessage($hWnd, $LB_SETSEL, False, $iIndex) <> -1
  717. Else
  718. $i_Ret = _SendMessage($hWnd, $LB_SETSEL, True, $iIndex) <> -1
  719. EndIf
  720. If ($i_Ret == False) Then Return SetError($LB_ERR, $LB_ERR, False)
  721. Next
  722. ElseIf $iSelect == -1 Then ; toggle state of index
  723. If _GUICtrlListBox_GetSel($hWnd, $iIndex) Then ;If Selected Then
  724. Return _SendMessage($hWnd, $LB_SETSEL, False, $iIndex) <> -1
  725. Else
  726. Return _SendMessage($hWnd, $LB_SETSEL, True, $iIndex) <> -1
  727. EndIf
  728. Else ; set state according to flag
  729. Return _SendMessage($hWnd, $LB_SETSEL, $iSelect, $iIndex) <> -1
  730. EndIf
  731. Else
  732. If $iIndex == -1 Then ; toggle all
  733. For $iIndex = 0 To _GUICtrlListBox_GetCount($hWnd) - 1
  734. $i_Ret = _GUICtrlListBox_GetSel($hWnd, $iIndex)
  735. If ($i_Ret == $LB_ERR) Then Return SetError($LB_ERR, $LB_ERR, False)
  736. If ($i_Ret > 0) Then ;If Selected Then
  737. $i_Ret = GUICtrlSendMsg($hWnd, $LB_SETSEL, False, $iIndex) <> -1
  738. Else
  739. $i_Ret = GUICtrlSendMsg($hWnd, $LB_SETSEL, True, $iIndex) <> -1
  740. EndIf
  741. If ($i_Ret == 0) Then Return SetError($LB_ERR, $LB_ERR, False)
  742. Next
  743. ElseIf $iSelect == -1 Then ; toggle state of index
  744. If _GUICtrlListBox_GetSel($hWnd, $iIndex) Then ;If Selected Then
  745. Return GUICtrlSendMsg($hWnd, $LB_SETSEL, False, $iIndex) <> -1
  746. Else
  747. Return GUICtrlSendMsg($hWnd, $LB_SETSEL, True, $iIndex) <> -1
  748. EndIf
  749. Else ; set state according to flag
  750. Return GUICtrlSendMsg($hWnd, $LB_SETSEL, $iSelect, $iIndex) <> -1
  751. EndIf
  752. EndIf
  753. Return $i_Ret <> 0
  754. EndFunc ;==>_GUICtrlListBox_SetSel
  755. ; #FUNCTION# ====================================================================================================================
  756. ; Author ........: Paul Campbell (PaulIA)
  757. ; Modified.......: Gary Frost (gafrost)
  758. ; ===============================================================================================================================
  759. Func _GUICtrlListBox_SetTabStops($hWnd, $aTabStops)
  760. Local $iCount = $aTabStops[0]
  761. Local $tTabStops = DllStructCreate("int[" & $iCount & "]")
  762. For $iI = 1 To $iCount
  763. DllStructSetData($tTabStops, 1, $aTabStops[$iI], $iI)
  764. Next
  765. If IsHWnd($hWnd) Then
  766. Return _SendMessage($hWnd, $LB_SETTABSTOPS, $iCount, $tTabStops, 0, "wparam", "struct*") = 0
  767. Else
  768. Return GUICtrlSendMsg($hWnd, $LB_SETTABSTOPS, $iCount, DllStructGetPtr($tTabStops)) = 0
  769. EndIf
  770. EndFunc ;==>_GUICtrlListBox_SetTabStops
  771. ; #FUNCTION# ====================================================================================================================
  772. ; Author ........: CyberSlug
  773. ; Modified.......: Gary Frost (gafrost)
  774. ; ===============================================================================================================================
  775. Func _GUICtrlListBox_SetTopIndex($hWnd, $iIndex)
  776. If IsHWnd($hWnd) Then
  777. Return _SendMessage($hWnd, $LB_SETTOPINDEX, $iIndex) <> -1
  778. Else
  779. Return GUICtrlSendMsg($hWnd, $LB_SETTOPINDEX, $iIndex, 0) <> -1
  780. EndIf
  781. EndFunc ;==>_GUICtrlListBox_SetTopIndex
  782. ; #FUNCTION# ====================================================================================================================
  783. ; Author ........: Gary Frost (gafrost), CyberSlug
  784. ; Modified.......:
  785. ; ===============================================================================================================================
  786. Func _GUICtrlListBox_Sort($hWnd)
  787. Local $sBak = _GUICtrlListBox_GetText($hWnd, 0)
  788. If ($sBak == -1) Then Return SetError($LB_ERR, $LB_ERR, False)
  789. If (_GUICtrlListBox_DeleteString($hWnd, 0) == -1) Then Return SetError($LB_ERR, $LB_ERR, False)
  790. Return _GUICtrlListBox_AddString($hWnd, $sBak) <> -1
  791. EndFunc ;==>_GUICtrlListBox_Sort
  792. ; #FUNCTION# ====================================================================================================================
  793. ; Author ........: Gary Frost (gafrost), Cyberslug
  794. ; Modified.......:
  795. ; ===============================================================================================================================
  796. Func _GUICtrlListBox_SwapString($hWnd, $iIndexA, $iIndexB)
  797. Local $sItemA = _GUICtrlListBox_GetText($hWnd, $iIndexA)
  798. Local $sItemB = _GUICtrlListBox_GetText($hWnd, $iIndexB)
  799. If (_GUICtrlListBox_DeleteString($hWnd, $iIndexA) == -1) Then Return SetError($LB_ERR, $LB_ERR, False)
  800. If (_GUICtrlListBox_InsertString($hWnd, $sItemB, $iIndexA) == -1) Then Return SetError($LB_ERR, $LB_ERR, False)
  801. If (_GUICtrlListBox_DeleteString($hWnd, $iIndexB) == -1) Then Return SetError($LB_ERR, $LB_ERR, False)
  802. If (_GUICtrlListBox_InsertString($hWnd, $sItemA, $iIndexB) == -1) Then Return SetError($LB_ERR, $LB_ERR, False)
  803. Return True
  804. EndFunc ;==>_GUICtrlListBox_SwapString
  805. ; #FUNCTION# ====================================================================================================================
  806. ; Author ........: Paul Campbell (PaulIA)
  807. ; Modified.......: Gary Frost (gafrost)
  808. ; ===============================================================================================================================
  809. Func _GUICtrlListBox_UpdateHScroll($hWnd)
  810. Local $hDC, $hFont, $tSize, $sText
  811. Local $iMax = 0
  812. If IsHWnd($hWnd) Then
  813. $hFont = _SendMessage($hWnd, $__LISTBOXCONSTANT_WM_GETFONT)
  814. $hDC = _WinAPI_GetDC($hWnd)
  815. _WinAPI_SelectObject($hDC, $hFont)
  816. For $iI = 0 To _GUICtrlListBox_GetCount($hWnd) - 1
  817. $sText = _GUICtrlListBox_GetText($hWnd, $iI)
  818. $tSize = _WinAPI_GetTextExtentPoint32($hDC, $sText & "W")
  819. If DllStructGetData($tSize, "X") > $iMax Then
  820. $iMax = DllStructGetData($tSize, "X")
  821. EndIf
  822. Next
  823. _GUICtrlListBox_SetHorizontalExtent($hWnd, $iMax)
  824. _WinAPI_SelectObject($hDC, $hFont)
  825. _WinAPI_ReleaseDC($hWnd, $hDC)
  826. Else
  827. $hFont = GUICtrlSendMsg($hWnd, $__LISTBOXCONSTANT_WM_GETFONT, 0, 0)
  828. Local $hWnd_t = GUICtrlGetHandle($hWnd)
  829. $hDC = _WinAPI_GetDC($hWnd_t)
  830. _WinAPI_SelectObject($hDC, $hFont)
  831. For $iI = 0 To _GUICtrlListBox_GetCount($hWnd) - 1
  832. $sText = _GUICtrlListBox_GetText($hWnd, $iI)
  833. $tSize = _WinAPI_GetTextExtentPoint32($hDC, $sText & "W")
  834. If DllStructGetData($tSize, "X") > $iMax Then
  835. $iMax = DllStructGetData($tSize, "X")
  836. EndIf
  837. Next
  838. _GUICtrlListBox_SetHorizontalExtent($hWnd, $iMax)
  839. _WinAPI_SelectObject($hDC, $hFont)
  840. _WinAPI_ReleaseDC($hWnd_t, $hDC)
  841. EndIf
  842. EndFunc ;==>_GUICtrlListBox_UpdateHScroll