GuiComboBox.au3 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801
  1. #include-once
  2. #include "ComboConstants.au3"
  3. #include "DirConstants.au3"
  4. #include "SendMessage.au3"
  5. #include "StructureConstants.au3"
  6. #include "UDFGlobalID.au3"
  7. #include "WinAPIConv.au3"
  8. #include "WinAPIHObj.au3"
  9. #include "WinAPISysInternals.au3"
  10. ; #INDEX# =======================================================================================================================
  11. ; Title .........: ComboBox
  12. ; AutoIt Version : 3.3.14.5
  13. ; Language ......: English
  14. ; Description ...: Functions that assist with ComboBox control management.
  15. ; Author(s) .....: gafrost, PaulIA, Valik
  16. ; ===============================================================================================================================
  17. ; #VARIABLES# ===================================================================================================================
  18. Global $__g_hCBLastWnd
  19. ; ===============================================================================================================================
  20. ; #CONSTANTS# ===================================================================================================================
  21. Global Const $__COMBOBOXCONSTANT_ClassName = "ComboBox"
  22. Global Const $__COMBOBOXCONSTANT_EM_GETLINE = 0xC4
  23. Global Const $__COMBOBOXCONSTANT_EM_LINEINDEX = 0xBB
  24. Global Const $__COMBOBOXCONSTANT_EM_LINELENGTH = 0xC1
  25. Global Const $__COMBOBOXCONSTANT_EM_REPLACESEL = 0xC2
  26. Global Const $__COMBOBOXCONSTANT_WM_SETREDRAW = 0x000B
  27. Global Const $__COMBOBOXCONSTANT_DEFAULT_GUI_FONT = 17
  28. ; ===============================================================================================================================
  29. ; #NO_DOC_FUNCTION# =============================================================================================================
  30. ; Not working/documented/implemented at this time
  31. ;
  32. ; _GUICtrlComboBox_SetLocale
  33. ; ===============================================================================================================================
  34. ; #CURRENT# =====================================================================================================================
  35. ; _GUICtrlComboBox_AddDir
  36. ; _GUICtrlComboBox_AddString
  37. ; _GUICtrlComboBox_AutoComplete
  38. ; _GUICtrlComboBox_BeginUpdate
  39. ; _GUICtrlComboBox_Create
  40. ; _GUICtrlComboBox_DeleteString
  41. ; _GUICtrlComboBox_Destroy
  42. ; _GUICtrlComboBox_EndUpdate
  43. ; _GUICtrlComboBox_FindString
  44. ; _GUICtrlComboBox_FindStringExact
  45. ; _GUICtrlComboBox_GetComboBoxInfo
  46. ; _GUICtrlComboBox_GetCount
  47. ; _GUICtrlComboBox_GetCueBanner
  48. ; _GUICtrlComboBox_GetCurSel
  49. ; _GUICtrlComboBox_GetDroppedControlRect
  50. ; _GUICtrlComboBox_GetDroppedControlRectEx
  51. ; _GUICtrlComboBox_GetDroppedState
  52. ; _GUICtrlComboBox_GetDroppedWidth
  53. ; _GUICtrlComboBox_GetEditSel
  54. ; _GUICtrlComboBox_GetEditText
  55. ; _GUICtrlComboBox_GetExtendedUI
  56. ; _GUICtrlComboBox_GetHorizontalExtent
  57. ; _GUICtrlComboBox_GetItemHeight
  58. ; _GUICtrlComboBox_GetLBText
  59. ; _GUICtrlComboBox_GetLBTextLen
  60. ; _GUICtrlComboBox_GetList
  61. ; _GUICtrlComboBox_GetListArray
  62. ; _GUICtrlComboBox_GetLocale
  63. ; _GUICtrlComboBox_GetLocaleCountry
  64. ; _GUICtrlComboBox_GetLocaleLang
  65. ; _GUICtrlComboBox_GetLocalePrimLang
  66. ; _GUICtrlComboBox_GetLocaleSubLang
  67. ; _GUICtrlComboBox_GetMinVisible
  68. ; _GUICtrlComboBox_GetTopIndex
  69. ; _GUICtrlComboBox_InitStorage
  70. ; _GUICtrlComboBox_InsertString
  71. ; _GUICtrlComboBox_LimitText
  72. ; _GUICtrlComboBox_ReplaceEditSel
  73. ; _GUICtrlComboBox_ResetContent
  74. ; _GUICtrlComboBox_SelectString
  75. ; _GUICtrlComboBox_SetCueBanner
  76. ; _GUICtrlComboBox_SetCurSel
  77. ; _GUICtrlComboBox_SetDroppedWidth
  78. ; _GUICtrlComboBox_SetEditSel
  79. ; _GUICtrlComboBox_SetEditText
  80. ; _GUICtrlComboBox_SetExtendedUI
  81. ; _GUICtrlComboBox_SetHorizontalExtent
  82. ; _GUICtrlComboBox_SetItemHeight
  83. ; _GUICtrlComboBox_SetMinVisible
  84. ; _GUICtrlComboBox_SetTopIndex
  85. ; _GUICtrlComboBox_ShowDropDown
  86. ; ===============================================================================================================================
  87. ; #INTERNAL_USE_ONLY# ===========================================================================================================
  88. ; $tagCOMBOBOXINFO
  89. ; __GUICtrlComboBox_IsPressed
  90. ; ===============================================================================================================================
  91. ; #INTERNAL_USE_ONLY# ===========================================================================================================
  92. ; Name...........: $tagCOMBOBOXINFO
  93. ; Description ...: Contains combo box status information
  94. ; Fields ........: cbSize - The size, in bytes, of the structure. The calling application must set this to sizeof(COMBOBOXINFO).
  95. ; rcItem - A RECT structure that specifies the coordinates of the edit box.
  96. ; |EditLeft
  97. ; |EditTop
  98. ; |EditRight
  99. ; |EditBottom
  100. ; rcButton - A RECT structure that specifies the coordinates of the button that contains the drop-down arrow.
  101. ; |BtnLeft
  102. ; |BtnTop
  103. ; |BtnRight
  104. ; |BtnBottom
  105. ; stateButton - The combo box button state. This parameter can be one of the following values.
  106. ; |0 - The button exists and is not pressed.
  107. ; |$STATE_SYSTEM_INVISIBLE - There is no button.
  108. ; |$STATE_SYSTEM_PRESSED - The button is pressed.
  109. ; hCombo - A handle to the combo box.
  110. ; hEdit - A handle to the edit box.
  111. ; hList - A handle to the drop-down list.
  112. ; Author ........: Gary Frost (gafrost)
  113. ; Remarks .......:
  114. ; ===============================================================================================================================
  115. Global Const $tagCOMBOBOXINFO = "dword Size;struct;long EditLeft;long EditTop;long EditRight;long EditBottom;endstruct;" & _
  116. "struct;long BtnLeft;long BtnTop;long BtnRight;long BtnBottom;endstruct;dword BtnState;hwnd hCombo;hwnd hEdit;hwnd hList"
  117. ; #FUNCTION# ====================================================================================================================
  118. ; Author ........: Gary Frost (gafrost)
  119. ; Modified.......:
  120. ; ===============================================================================================================================
  121. Func _GUICtrlComboBox_AddDir($hWnd, $sFilePath, $iAttributes = 0, $bBrackets = True)
  122. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  123. If BitAND($iAttributes, $DDL_DRIVES) = $DDL_DRIVES And Not $bBrackets Then
  124. Local $sText
  125. Local $hGui_no_brackets = GUICreate("no brackets")
  126. Local $idCombo_no_brackets = GUICtrlCreateCombo("", 240, 40, 120, 120)
  127. Local $iRet = GUICtrlSendMsg($idCombo_no_brackets, $CB_DIR, $iAttributes, $sFilePath)
  128. For $i = 0 To _GUICtrlComboBox_GetCount($idCombo_no_brackets) - 1
  129. _GUICtrlComboBox_GetLBText($idCombo_no_brackets, $i, $sText)
  130. $sText = StringReplace(StringReplace(StringReplace($sText, "[", ""), "]", ":"), "-", "")
  131. _GUICtrlComboBox_InsertString($hWnd, $sText)
  132. Next
  133. GUIDelete($hGui_no_brackets)
  134. Return $iRet
  135. Else
  136. Return _SendMessage($hWnd, $CB_DIR, $iAttributes, $sFilePath, 0, "wparam", "wstr")
  137. EndIf
  138. EndFunc ;==>_GUICtrlComboBox_AddDir
  139. ; #FUNCTION# ====================================================================================================================
  140. ; Author ........: Gary Frost (gafrost)
  141. ; Modified.......:
  142. ; ===============================================================================================================================
  143. Func _GUICtrlComboBox_AddString($hWnd, $sText)
  144. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  145. Return _SendMessage($hWnd, $CB_ADDSTRING, 0, $sText, 0, "wparam", "wstr")
  146. EndFunc ;==>_GUICtrlComboBox_AddString
  147. ; #FUNCTION# ====================================================================================================================
  148. ; Author ........: Gary Frost (gafrost)
  149. ; Modified.......:
  150. ; ===============================================================================================================================
  151. Func _GUICtrlComboBox_AutoComplete($hWnd)
  152. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  153. If Not __GUICtrlComboBox_IsPressed('08') And Not __GUICtrlComboBox_IsPressed("2E") Then ;backspace pressed or Del
  154. Local $sEditText = _GUICtrlComboBox_GetEditText($hWnd)
  155. If StringLen($sEditText) Then
  156. Local $sInputText
  157. Local $iRet = _GUICtrlComboBox_FindString($hWnd, $sEditText)
  158. If ($iRet <> $CB_ERR) Then
  159. _GUICtrlComboBox_GetLBText($hWnd, $iRet, $sInputText)
  160. _GUICtrlComboBox_SetEditText($hWnd, $sInputText)
  161. _GUICtrlComboBox_SetEditSel($hWnd, StringLen($sEditText), StringLen($sInputText))
  162. EndIf
  163. EndIf
  164. EndIf
  165. EndFunc ;==>_GUICtrlComboBox_AutoComplete
  166. ; #FUNCTION# ====================================================================================================================
  167. ; Author ........: Paul Campbell (PaulIA)
  168. ; Modified.......: Gary Frost (gafrost)
  169. ; ===============================================================================================================================
  170. Func _GUICtrlComboBox_BeginUpdate($hWnd)
  171. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  172. Return _SendMessage($hWnd, $__COMBOBOXCONSTANT_WM_SETREDRAW, False) = 0
  173. EndFunc ;==>_GUICtrlComboBox_BeginUpdate
  174. ; #FUNCTION# ====================================================================================================================
  175. ; Author ........: Gary Frost
  176. ; Modified.......:
  177. ; ===============================================================================================================================
  178. Func _GUICtrlComboBox_Create($hWnd, $sText, $iX, $iY, $iWidth = 100, $iHeight = 120, $iStyle = 0x00200042, $iExStyle = 0x00000000)
  179. If Not IsHWnd($hWnd) Then Return SetError(1, 0, 0) ; Invalid Window handle for _GUICtrlComboBox_Create 1st parameter
  180. If Not IsString($sText) Then Return SetError(2, 0, 0) ; 2nd parameter not a string for _GUICtrlComboBox_Create
  181. Local $aText, $sDelimiter = Opt("GUIDataSeparatorChar")
  182. If $iWidth = -1 Then $iWidth = 100
  183. If $iHeight = -1 Then $iHeight = 120
  184. Local Const $WS_VSCROLL = 0x00200000
  185. If $iStyle = -1 Then $iStyle = BitOR($WS_VSCROLL, $CBS_AUTOHSCROLL, $CBS_DROPDOWN)
  186. If $iExStyle = -1 Then $iExStyle = 0x00000000
  187. $iStyle = BitOR($iStyle, $__UDFGUICONSTANT_WS_CHILD, $__UDFGUICONSTANT_WS_TABSTOP, $__UDFGUICONSTANT_WS_VISIBLE)
  188. Local $nCtrlID = __UDF_GetNextGlobalID($hWnd)
  189. If @error Then Return SetError(@error, @extended, 0)
  190. Local $hCombo = _WinAPI_CreateWindowEx($iExStyle, $__COMBOBOXCONSTANT_ClassName, "", $iStyle, $iX, $iY, $iWidth, $iHeight, $hWnd, $nCtrlID)
  191. _WinAPI_SetFont($hCombo, _WinAPI_GetStockObject($__COMBOBOXCONSTANT_DEFAULT_GUI_FONT))
  192. If StringLen($sText) Then
  193. $aText = StringSplit($sText, $sDelimiter)
  194. For $x = 1 To $aText[0]
  195. _GUICtrlComboBox_AddString($hCombo, $aText[$x])
  196. Next
  197. EndIf
  198. Return $hCombo
  199. EndFunc ;==>_GUICtrlComboBox_Create
  200. ; #FUNCTION# ====================================================================================================================
  201. ; Author ........: Gary Frost (gafrost)
  202. ; Modified.......:
  203. ; ===============================================================================================================================
  204. Func _GUICtrlComboBox_DeleteString($hWnd, $iIndex)
  205. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  206. Return _SendMessage($hWnd, $CB_DELETESTRING, $iIndex)
  207. EndFunc ;==>_GUICtrlComboBox_DeleteString
  208. ; #FUNCTION# ====================================================================================================================
  209. ; Author ........: Gary Frost (gafrost)
  210. ; Modified.......:
  211. ; ===============================================================================================================================
  212. Func _GUICtrlComboBox_Destroy(ByRef $hWnd)
  213. If Not _WinAPI_IsClassName($hWnd, $__COMBOBOXCONSTANT_ClassName) Then Return SetError(2, 2, False)
  214. Local $iDestroyed = 0
  215. If IsHWnd($hWnd) Then
  216. If _WinAPI_InProcess($hWnd, $__g_hCBLastWnd) Then
  217. Local $nCtrlID = _WinAPI_GetDlgCtrlID($hWnd)
  218. Local $hParent = _WinAPI_GetParent($hWnd)
  219. $iDestroyed = _WinAPI_DestroyWindow($hWnd)
  220. Local $iRet = __UDF_FreeGlobalID($hParent, $nCtrlID)
  221. If Not $iRet Then
  222. ; can check for errors here if needed, for debug
  223. EndIf
  224. Else
  225. ; Not Allowed to Destroy Other Applications Control(s)
  226. Return SetError(1, 1, False)
  227. EndIf
  228. Else
  229. $iDestroyed = GUICtrlDelete($hWnd)
  230. EndIf
  231. If $iDestroyed Then $hWnd = 0
  232. Return $iDestroyed <> 0
  233. EndFunc ;==>_GUICtrlComboBox_Destroy
  234. ; #FUNCTION# ====================================================================================================================
  235. ; Author ........: Paul Campbell (PaulIA)
  236. ; Modified.......: Gary Frost (gafrost)
  237. ; ===============================================================================================================================
  238. Func _GUICtrlComboBox_EndUpdate($hWnd)
  239. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  240. Return _SendMessage($hWnd, $__COMBOBOXCONSTANT_WM_SETREDRAW, True) = 0
  241. EndFunc ;==>_GUICtrlComboBox_EndUpdate
  242. ; #FUNCTION# ====================================================================================================================
  243. ; Author ........: Gary Frost (gafrost)
  244. ; Modified.......:
  245. ; ===============================================================================================================================
  246. Func _GUICtrlComboBox_FindString($hWnd, $sText, $iIndex = -1)
  247. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  248. Return _SendMessage($hWnd, $CB_FINDSTRING, $iIndex, $sText, 0, "int", "wstr")
  249. EndFunc ;==>_GUICtrlComboBox_FindString
  250. ; #FUNCTION# ====================================================================================================================
  251. ; Author ........: Gary Frost (gafrost)
  252. ; Modified.......:
  253. ; ===============================================================================================================================
  254. Func _GUICtrlComboBox_FindStringExact($hWnd, $sText, $iIndex = -1)
  255. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  256. Return _SendMessage($hWnd, $CB_FINDSTRINGEXACT, $iIndex, $sText, 0, "wparam", "wstr")
  257. EndFunc ;==>_GUICtrlComboBox_FindStringExact
  258. ; #FUNCTION# ====================================================================================================================
  259. ; Author ........: Gary Frost (gafrost)
  260. ; Modified.......:
  261. ; ===============================================================================================================================
  262. Func _GUICtrlComboBox_GetComboBoxInfo($hWnd, ByRef $tInfo)
  263. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  264. $tInfo = DllStructCreate($tagCOMBOBOXINFO)
  265. Local $iInfo = DllStructGetSize($tInfo)
  266. DllStructSetData($tInfo, "Size", $iInfo)
  267. Return _SendMessage($hWnd, $CB_GETCOMBOBOXINFO, 0, $tInfo, 0, "wparam", "struct*") <> 0
  268. EndFunc ;==>_GUICtrlComboBox_GetComboBoxInfo
  269. ; #FUNCTION# ====================================================================================================================
  270. ; Author ........: Gary Frost (gafrost)
  271. ; Modified.......:
  272. ; ===============================================================================================================================
  273. Func _GUICtrlComboBox_GetCount($hWnd)
  274. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  275. Return _SendMessage($hWnd, $CB_GETCOUNT)
  276. EndFunc ;==>_GUICtrlComboBox_GetCount
  277. ; #FUNCTION# ====================================================================================================================
  278. ; Author ........: Gary Frost (gafrost)
  279. ; Modified.......:
  280. ; ===============================================================================================================================
  281. Func _GUICtrlComboBox_GetCueBanner($hWnd)
  282. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  283. Local $tText = DllStructCreate("wchar[4096]")
  284. If _SendMessage($hWnd, $CB_GETCUEBANNER, $tText, 4096, 0, "struct*") <> 1 Then Return SetError(-1, 0, "")
  285. Return _WinAPI_WideCharToMultiByte($tText)
  286. EndFunc ;==>_GUICtrlComboBox_GetCueBanner
  287. ; #FUNCTION# ====================================================================================================================
  288. ; Author ........: Gary Frost (gafrost)
  289. ; Modified.......:
  290. ; ===============================================================================================================================
  291. Func _GUICtrlComboBox_GetCurSel($hWnd)
  292. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  293. Return _SendMessage($hWnd, $CB_GETCURSEL)
  294. EndFunc ;==>_GUICtrlComboBox_GetCurSel
  295. ; #FUNCTION# ====================================================================================================================
  296. ; Author ........: Gary Frost (gafrost)
  297. ; Modified.......:
  298. ; ===============================================================================================================================
  299. Func _GUICtrlComboBox_GetDroppedControlRect($hWnd)
  300. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  301. Local $aRect[4]
  302. Local $tRECT = _GUICtrlComboBox_GetDroppedControlRectEx($hWnd)
  303. $aRect[0] = DllStructGetData($tRECT, "Left")
  304. $aRect[1] = DllStructGetData($tRECT, "Top")
  305. $aRect[2] = DllStructGetData($tRECT, "Right")
  306. $aRect[3] = DllStructGetData($tRECT, "Bottom")
  307. Return $aRect
  308. EndFunc ;==>_GUICtrlComboBox_GetDroppedControlRect
  309. ; #FUNCTION# ====================================================================================================================
  310. ; Author ........: Gary Frost (gafrost)
  311. ; Modified.......:
  312. ; ===============================================================================================================================
  313. Func _GUICtrlComboBox_GetDroppedControlRectEx($hWnd)
  314. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  315. Local $tRECT = DllStructCreate($tagRECT)
  316. _SendMessage($hWnd, $CB_GETDROPPEDCONTROLRECT, 0, $tRECT, 0, "wparam", "struct*")
  317. Return $tRECT
  318. EndFunc ;==>_GUICtrlComboBox_GetDroppedControlRectEx
  319. ; #FUNCTION# ====================================================================================================================
  320. ; Author ........: Gary Frost (gafrost)
  321. ; Modified.......:
  322. ; ===============================================================================================================================
  323. Func _GUICtrlComboBox_GetDroppedState($hWnd)
  324. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  325. Return _SendMessage($hWnd, $CB_GETDROPPEDSTATE) <> 0
  326. EndFunc ;==>_GUICtrlComboBox_GetDroppedState
  327. ; #FUNCTION# ====================================================================================================================
  328. ; Author ........: Gary Frost (gafrost)
  329. ; Modified.......:
  330. ; ===============================================================================================================================
  331. Func _GUICtrlComboBox_GetDroppedWidth($hWnd)
  332. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  333. Return _SendMessage($hWnd, $CB_GETDROPPEDWIDTH)
  334. EndFunc ;==>_GUICtrlComboBox_GetDroppedWidth
  335. ; #FUNCTION# ====================================================================================================================
  336. ; Author ........: Gary Frost (gafrost)
  337. ; Modified.......:
  338. ; ===============================================================================================================================
  339. Func _GUICtrlComboBox_GetEditSel($hWnd)
  340. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  341. Local $tStart = DllStructCreate("dword Start")
  342. Local $tEnd = DllStructCreate("dword End")
  343. Local $iRet = _SendMessage($hWnd, $CB_GETEDITSEL, $tStart, $tEnd, 0, "struct*", "struct*")
  344. If $iRet = 0 Then Return SetError($CB_ERR, $CB_ERR, $CB_ERR)
  345. Local $aSel[2]
  346. $aSel[0] = DllStructGetData($tStart, "Start")
  347. $aSel[1] = DllStructGetData($tEnd, "End")
  348. Return $aSel
  349. EndFunc ;==>_GUICtrlComboBox_GetEditSel
  350. ; #FUNCTION# ====================================================================================================================
  351. ; Author ........: Gary Frost (gafrost)
  352. ; Modified.......: Melba23
  353. ; ===============================================================================================================================
  354. Func _GUICtrlComboBox_GetEditText($hWnd)
  355. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  356. Local $tInfo
  357. If _GUICtrlComboBox_GetComboBoxInfo($hWnd, $tInfo) Then
  358. Local $hEdit = DllStructGetData($tInfo, "hEdit")
  359. Local $iLine = 0
  360. Local $iIndex = _SendMessage($hEdit, $__COMBOBOXCONSTANT_EM_LINEINDEX, $iLine)
  361. Local $iLength = _SendMessage($hEdit, $__COMBOBOXCONSTANT_EM_LINELENGTH, $iIndex)
  362. If $iLength = 0 Then Return ""
  363. Local $tBuffer = DllStructCreate("short Len;wchar Text[" & $iLength & "]")
  364. DllStructSetData($tBuffer, "Len", $iLength)
  365. Local $iRet = _SendMessage($hEdit, $__COMBOBOXCONSTANT_EM_GETLINE, $iLine, $tBuffer, 0, "wparam", "struct*")
  366. If $iRet = 0 Then Return SetError(-1, -1, "")
  367. Local $tText = DllStructCreate("wchar Text[" & $iLength & "]", DllStructGetPtr($tBuffer))
  368. Return DllStructGetData($tText, "Text")
  369. Else
  370. Return SetError(-1, -1, "")
  371. EndIf
  372. EndFunc ;==>_GUICtrlComboBox_GetEditText
  373. ; #FUNCTION# ====================================================================================================================
  374. ; Author ........: Gary Frost (gafrost)
  375. ; Modified.......:
  376. ; ===============================================================================================================================
  377. Func _GUICtrlComboBox_GetExtendedUI($hWnd)
  378. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  379. Return _SendMessage($hWnd, $CB_GETEXTENDEDUI) <> 0
  380. EndFunc ;==>_GUICtrlComboBox_GetExtendedUI
  381. ; #FUNCTION# ====================================================================================================================
  382. ; Author ........: Gary Frost (gafrost)
  383. ; Modified.......:
  384. ; ===============================================================================================================================
  385. Func _GUICtrlComboBox_GetHorizontalExtent($hWnd)
  386. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  387. Return _SendMessage($hWnd, $CB_GETHORIZONTALEXTENT)
  388. EndFunc ;==>_GUICtrlComboBox_GetHorizontalExtent
  389. ; #FUNCTION# ====================================================================================================================
  390. ; Author ........: Gary Frost (gafrost)
  391. ; Modified.......:
  392. ; ===============================================================================================================================
  393. Func _GUICtrlComboBox_GetItemHeight($hWnd, $iIndex = -1)
  394. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  395. Return _SendMessage($hWnd, $CB_GETITEMHEIGHT, $iIndex)
  396. EndFunc ;==>_GUICtrlComboBox_GetItemHeight
  397. ; #FUNCTION# ====================================================================================================================
  398. ; Author ........: Gary Frost (gafrost)
  399. ; Modified.......:
  400. ; ===============================================================================================================================
  401. Func _GUICtrlComboBox_GetLBText($hWnd, $iIndex, ByRef $sText)
  402. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  403. Local $iLen = _GUICtrlComboBox_GetLBTextLen($hWnd, $iIndex)
  404. Local $tBuffer = DllStructCreate("wchar Text[" & $iLen + 1 & "]")
  405. Local $iRet = _SendMessage($hWnd, $CB_GETLBTEXT, $iIndex, $tBuffer, 0, "wparam", "struct*")
  406. If ($iRet == $CB_ERR) Then Return SetError($CB_ERR, $CB_ERR, $CB_ERR)
  407. $sText = DllStructGetData($tBuffer, "Text")
  408. Return $iRet
  409. EndFunc ;==>_GUICtrlComboBox_GetLBText
  410. ; #FUNCTION# ====================================================================================================================
  411. ; Author ........: Gary Frost (gafrost)
  412. ; Modified.......:
  413. ; ===============================================================================================================================
  414. Func _GUICtrlComboBox_GetLBTextLen($hWnd, $iIndex)
  415. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  416. Return _SendMessage($hWnd, $CB_GETLBTEXTLEN, $iIndex)
  417. EndFunc ;==>_GUICtrlComboBox_GetLBTextLen
  418. ; #FUNCTION# ====================================================================================================================
  419. ; Author ........: Jason Boggs
  420. ; Modified.......: Gary Frost (gafrost)
  421. ; ===============================================================================================================================
  422. Func _GUICtrlComboBox_GetList($hWnd)
  423. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  424. Local $sDelimiter = Opt("GUIDataSeparatorChar")
  425. Local $sResult = "", $sItem
  426. For $i = 0 To _GUICtrlComboBox_GetCount($hWnd) - 1
  427. _GUICtrlComboBox_GetLBText($hWnd, $i, $sItem)
  428. $sResult &= $sItem & $sDelimiter
  429. Next
  430. Return StringTrimRight($sResult, StringLen($sDelimiter))
  431. EndFunc ;==>_GUICtrlComboBox_GetList
  432. ; #FUNCTION# ====================================================================================================================
  433. ; Author ........: Gary Frost (gafrost)
  434. ; Modified.......:
  435. ; ===============================================================================================================================
  436. Func _GUICtrlComboBox_GetListArray($hWnd)
  437. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  438. Local $sDelimiter = Opt("GUIDataSeparatorChar")
  439. Return StringSplit(_GUICtrlComboBox_GetList($hWnd), $sDelimiter)
  440. EndFunc ;==>_GUICtrlComboBox_GetListArray
  441. ; #FUNCTION# ====================================================================================================================
  442. ; Author ........: Gary Frost (gafrost)
  443. ; Modified.......:
  444. ; ===============================================================================================================================
  445. Func _GUICtrlComboBox_GetLocale($hWnd)
  446. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  447. Return _SendMessage($hWnd, $CB_GETLOCALE)
  448. EndFunc ;==>_GUICtrlComboBox_GetLocale
  449. ; #FUNCTION# ====================================================================================================================
  450. ; Author ........: Gary Frost (gafrost)
  451. ; Modified.......:
  452. ; ===============================================================================================================================
  453. Func _GUICtrlComboBox_GetLocaleCountry($hWnd)
  454. Return _WinAPI_HiWord(_GUICtrlComboBox_GetLocale($hWnd))
  455. EndFunc ;==>_GUICtrlComboBox_GetLocaleCountry
  456. ; #FUNCTION# ====================================================================================================================
  457. ; Author ........: Gary Frost (gafrost)
  458. ; Modified.......:
  459. ; ===============================================================================================================================
  460. Func _GUICtrlComboBox_GetLocaleLang($hWnd)
  461. Return _WinAPI_LoWord(_GUICtrlComboBox_GetLocale($hWnd))
  462. EndFunc ;==>_GUICtrlComboBox_GetLocaleLang
  463. ; #FUNCTION# ====================================================================================================================
  464. ; Author ........: Gary Frost (gafrost)
  465. ; Modified.......:
  466. ; ===============================================================================================================================
  467. Func _GUICtrlComboBox_GetLocalePrimLang($hWnd)
  468. Return _WinAPI_PrimaryLangId(_GUICtrlComboBox_GetLocaleLang($hWnd))
  469. EndFunc ;==>_GUICtrlComboBox_GetLocalePrimLang
  470. ; #FUNCTION# ====================================================================================================================
  471. ; Author ........: Gary Frost (gafrost)
  472. ; Modified.......:
  473. ; ===============================================================================================================================
  474. Func _GUICtrlComboBox_GetLocaleSubLang($hWnd)
  475. Return _WinAPI_SubLangId(_GUICtrlComboBox_GetLocaleLang($hWnd))
  476. EndFunc ;==>_GUICtrlComboBox_GetLocaleSubLang
  477. ; #FUNCTION# ====================================================================================================================
  478. ; Author ........: Gary Frost (gafrost)
  479. ; Modified.......:
  480. ; ===============================================================================================================================
  481. Func _GUICtrlComboBox_GetMinVisible($hWnd)
  482. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  483. Return _SendMessage($hWnd, $CB_GETMINVISIBLE)
  484. EndFunc ;==>_GUICtrlComboBox_GetMinVisible
  485. ; #FUNCTION# ====================================================================================================================
  486. ; Author ........: Gary Frost (gafrost)
  487. ; Modified.......:
  488. ; ===============================================================================================================================
  489. Func _GUICtrlComboBox_GetTopIndex($hWnd)
  490. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  491. Return _SendMessage($hWnd, $CB_GETTOPINDEX)
  492. EndFunc ;==>_GUICtrlComboBox_GetTopIndex
  493. ; #FUNCTION# ====================================================================================================================
  494. ; Author ........: Gary Frost (gafrost)
  495. ; Modified.......:
  496. ; ===============================================================================================================================
  497. Func _GUICtrlComboBox_InitStorage($hWnd, $iNum, $iBytes)
  498. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  499. Return _SendMessage($hWnd, $CB_INITSTORAGE, $iNum, $iBytes)
  500. EndFunc ;==>_GUICtrlComboBox_InitStorage
  501. ; #FUNCTION# ====================================================================================================================
  502. ; Author ........: Gary Frost (gafrost)
  503. ; Modified.......:
  504. ; ===============================================================================================================================
  505. Func _GUICtrlComboBox_InsertString($hWnd, $sText, $iIndex = -1)
  506. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  507. Return _SendMessage($hWnd, $CB_INSERTSTRING, $iIndex, $sText, 0, "wparam", "wstr")
  508. EndFunc ;==>_GUICtrlComboBox_InsertString
  509. ; #FUNCTION# ====================================================================================================================
  510. ; Author ........: Gary Frost (gafrost)
  511. ; Modified.......:
  512. ; ===============================================================================================================================
  513. Func _GUICtrlComboBox_LimitText($hWnd, $iLimit = 0)
  514. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  515. _SendMessage($hWnd, $CB_LIMITTEXT, $iLimit)
  516. EndFunc ;==>_GUICtrlComboBox_LimitText
  517. ; #FUNCTION# ====================================================================================================================
  518. ; Author ........: Gary Frost (gafrost)
  519. ; Modified.......:
  520. ; ===============================================================================================================================
  521. Func _GUICtrlComboBox_ReplaceEditSel($hWnd, $sText)
  522. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  523. Local $tInfo
  524. If _GUICtrlComboBox_GetComboBoxInfo($hWnd, $tInfo) Then
  525. Local $hEdit = DllStructGetData($tInfo, "hEdit")
  526. _SendMessage($hEdit, $__COMBOBOXCONSTANT_EM_REPLACESEL, True, $sText, 0, "wparam", "wstr")
  527. EndIf
  528. EndFunc ;==>_GUICtrlComboBox_ReplaceEditSel
  529. ; #FUNCTION# ====================================================================================================================
  530. ; Author ........: Gary Frost (gafrost)
  531. ; Modified.......:
  532. ; ===============================================================================================================================
  533. Func _GUICtrlComboBox_ResetContent($hWnd)
  534. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  535. _SendMessage($hWnd, $CB_RESETCONTENT)
  536. EndFunc ;==>_GUICtrlComboBox_ResetContent
  537. ; #FUNCTION# ====================================================================================================================
  538. ; Author ........: Gary Frost (gafrost)
  539. ; Modified.......:
  540. ; ===============================================================================================================================
  541. Func _GUICtrlComboBox_SelectString($hWnd, $sText, $iIndex = -1)
  542. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  543. Return _SendMessage($hWnd, $CB_SELECTSTRING, $iIndex, $sText, 0, "wparam", "wstr")
  544. EndFunc ;==>_GUICtrlComboBox_SelectString
  545. ; #FUNCTION# ====================================================================================================================
  546. ; Author ........: Gary Frost (gafrost)
  547. ; Modified.......:
  548. ; ===============================================================================================================================
  549. Func _GUICtrlComboBox_SetCueBanner($hWnd, $sText)
  550. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  551. Local $tText = _WinAPI_MultiByteToWideChar($sText)
  552. Return _SendMessage($hWnd, $CB_SETCUEBANNER, 0, $tText, 0, "wparam", "struct*") = 1
  553. EndFunc ;==>_GUICtrlComboBox_SetCueBanner
  554. ; #FUNCTION# ====================================================================================================================
  555. ; Author ........: Gary Frost (gafrost)
  556. ; Modified.......:
  557. ; ===============================================================================================================================
  558. Func _GUICtrlComboBox_SetCurSel($hWnd, $iIndex = -1)
  559. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  560. Return _SendMessage($hWnd, $CB_SETCURSEL, $iIndex)
  561. EndFunc ;==>_GUICtrlComboBox_SetCurSel
  562. ; #FUNCTION# ====================================================================================================================
  563. ; Author ........: Gary Frost (gafrost)
  564. ; Modified.......:
  565. ; ===============================================================================================================================
  566. Func _GUICtrlComboBox_SetDroppedWidth($hWnd, $iWidth)
  567. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  568. Return _SendMessage($hWnd, $CB_SETDROPPEDWIDTH, $iWidth)
  569. EndFunc ;==>_GUICtrlComboBox_SetDroppedWidth
  570. ; #FUNCTION# ====================================================================================================================
  571. ; Author ........: Gary Frost (gafrost)
  572. ; Modified.......:
  573. ; ===============================================================================================================================
  574. Func _GUICtrlComboBox_SetEditSel($hWnd, $iStart, $iStop)
  575. If Not HWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  576. Return _SendMessage($hWnd, $CB_SETEDITSEL, 0, _WinAPI_MakeLong($iStart, $iStop)) <> -1
  577. EndFunc ;==>_GUICtrlComboBox_SetEditSel
  578. ; #FUNCTION# ====================================================================================================================
  579. ; Author ........: Gary Frost (gafrost)
  580. ; Modified.......:
  581. ; ===============================================================================================================================
  582. Func _GUICtrlComboBox_SetEditText($hWnd, $sText)
  583. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  584. _GUICtrlComboBox_SetEditSel($hWnd, 0, -1)
  585. _GUICtrlComboBox_ReplaceEditSel($hWnd, $sText)
  586. EndFunc ;==>_GUICtrlComboBox_SetEditText
  587. ; #FUNCTION# ====================================================================================================================
  588. ; Author ........: Gary Frost (gafrost)
  589. ; Modified.......:
  590. ; ===============================================================================================================================
  591. Func _GUICtrlComboBox_SetExtendedUI($hWnd, $bExtended = False)
  592. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  593. Return _SendMessage($hWnd, $CB_SETEXTENDEDUI, $bExtended) = 0
  594. EndFunc ;==>_GUICtrlComboBox_SetExtendedUI
  595. ; #FUNCTION# ====================================================================================================================
  596. ; Author ........: Gary Frost (gafrost)
  597. ; Modified.......:
  598. ; ===============================================================================================================================
  599. Func _GUICtrlComboBox_SetHorizontalExtent($hWnd, $iWidth)
  600. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  601. _SendMessage($hWnd, $CB_SETHORIZONTALEXTENT, $iWidth)
  602. EndFunc ;==>_GUICtrlComboBox_SetHorizontalExtent
  603. ; #FUNCTION# ====================================================================================================================
  604. ; Author ........: Gary Frost (gafrost)
  605. ; Modified.......:
  606. ; ===============================================================================================================================
  607. Func _GUICtrlComboBox_SetItemHeight($hWnd, $iHeight, $iComponent = -1)
  608. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  609. Return _SendMessage($hWnd, $CB_SETITEMHEIGHT, $iComponent, $iHeight)
  610. EndFunc ;==>_GUICtrlComboBox_SetItemHeight
  611. ; #NO_DOC_FUNCTION# =============================================================================================================
  612. ; Name...........: _GUICtrlComboBox_SetLocale
  613. ; Description ...: Set the current locale of the ComboBox
  614. ; Syntax.........: _GUICtrlComboBox_SetLocale ( $hWnd, $iLocale )
  615. ; Parameters ....: $hWnd - Handle to control
  616. ; $iLocale - Specifies the locale identifier for the ComboBox to use for sorting when adding text
  617. ; Return values .: Success - The previous locale identifier
  618. ; Failure - -1
  619. ; Author ........: Gary Frost (gafrost)
  620. ; Modified.......:
  621. ; Remarks .......: _WinAPI_MAKELANGID, _WinAPI_MAKELCID, _WinAPI_PrimaryLangId, _WinAPI_SubLangId
  622. ; Related .......: _GUICtrlComboBox_GetLocale
  623. ; Link ..........:
  624. ; Example .......: Yes
  625. ; ===============================================================================================================================
  626. Func _GUICtrlComboBox_SetLocale($hWnd, $iLocal)
  627. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  628. Return _SendMessage($hWnd, $CB_SETLOCALE, $iLocal)
  629. EndFunc ;==>_GUICtrlComboBox_SetLocale
  630. ; #FUNCTION# ====================================================================================================================
  631. ; Author ........: Gary Frost (gafrost)
  632. ; Modified.......:
  633. ; ===============================================================================================================================
  634. Func _GUICtrlComboBox_SetMinVisible($hWnd, $iMinimum)
  635. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  636. Return _SendMessage($hWnd, $CB_SETMINVISIBLE, $iMinimum) <> 0
  637. EndFunc ;==>_GUICtrlComboBox_SetMinVisible
  638. ; #FUNCTION# ====================================================================================================================
  639. ; Author ........: Gary Frost (gafrost)
  640. ; Modified.......:
  641. ; ===============================================================================================================================
  642. Func _GUICtrlComboBox_SetTopIndex($hWnd, $iIndex)
  643. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  644. Return _SendMessage($hWnd, $CB_SETTOPINDEX, $iIndex) = 0
  645. EndFunc ;==>_GUICtrlComboBox_SetTopIndex
  646. ; #FUNCTION# ====================================================================================================================
  647. ; Author ........: Gary Frost (gafrost)
  648. ; Modified.......:
  649. ; ===============================================================================================================================
  650. Func _GUICtrlComboBox_ShowDropDown($hWnd, $bShow = False)
  651. If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
  652. _SendMessage($hWnd, $CB_SHOWDROPDOWN, $bShow)
  653. EndFunc ;==>_GUICtrlComboBox_ShowDropDown
  654. ; #INTERNAL_USE_ONLY# ===========================================================================================================
  655. ; Name...........: __GUICtrlComboBox_IsPressed
  656. ; Description ...: Check if key has been pressed
  657. ; Syntax.........: __GUICtrlComboBox_IsPressed ( $sHexKey [, $vDLL = 'user32.dll'] )
  658. ; Parameters ....: $sHexKey - Key to check for
  659. ; $vDLL - Handle to dll or default to user32.dll
  660. ; Return values .: True - 1
  661. ; False - 0
  662. ; Author ........: ezzetabi and Jon
  663. ; Modified.......:
  664. ; Remarks .......: If calling this function repeatidly, should open 'user32.dll' and pass in handle.
  665. ; Make sure to close at end of script
  666. ; Related .......:
  667. ; Link ..........:
  668. ; Example .......: Yes
  669. ; ===============================================================================================================================
  670. Func __GUICtrlComboBox_IsPressed($sHexKey, $vDLL = 'user32.dll')
  671. ; $hexKey must be the value of one of the keys.
  672. ; _Is_Key_Pressed will return 0 if the key is not pressed, 1 if it is.
  673. Local $a_R = DllCall($vDLL, "short", "GetAsyncKeyState", "int", '0x' & $sHexKey)
  674. If @error Then Return SetError(@error, @extended, False)
  675. Return BitAND($a_R[0], 0x8000) <> 0
  676. EndFunc ;==>__GUICtrlComboBox_IsPressed