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

[网络通信] 为何 _GUICtrlComboBox_GetEditText 读取到的数据 都是前一次的选定数据??[已解決]

[复制链接]
发表于 2020-8-19 19:07:03 | 显示全部楼层 |阅读模式
本帖最后由 kk_lee69 于 2020-8-19 22:23 编辑

为何_GUICtrlComboBox_GetEditText 读取到的数据 都是前一次的选定数据??


如何 才能读取到 目前所选的资料呢??

#include <GUIComboBox.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <GuiEdit.au3>
$Debug_CB = False ; 檢查傳遞到 ComboBox / ComboBoxEx 函數的控制項類名, 設置為 True, 並使用一個控制碼到另一個控制項, 查看它的工作 Global $hCombo _Main() Func _Main()     Local $hGUI     ; 創建 GUI     $hGUI = GUICreate("創建 ComboBox 控制項", 400, 296)     $hCombo = _GUICtrlComboBox_Create($hGUI, "", 2, 2, 396, 296)     GUISetState()     ; 添加文件     _GUICtrlComboBox_BeginUpdate($hCombo)     _GUICtrlComboBox_AddDir($hCombo, "", $DDL_DRIVES, False)     _GUICtrlComboBox_EndUpdate($hCombo)     GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")     ; 迴圈到用戶退出     Do     Until GUIGetMsg() = $GUI_EVENT_CLOSE     GUIDelete() EndFunc   ;==>_Main Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)     #forceref $hWnd, $iMsg     Local $hWndFrom, $iIDFrom, $iCode     $hWndFrom = $ilParam     $iIDFrom = BitAND($iwParam, 0xFFFF) ; 低位字     $iCode = BitShift($iwParam, 16) ; 高位字     Switch $hWndFrom         Case $hCombo             Switch $iCode                 Case $CBN_SELCHANGE ; 發送使用者修改下拉式列示方塊的清單方塊的當前選擇消息                     _DebugPrint("$CBN_SELCHANGE" & @LF & "--> 控制項控制碼:" & @TAB & $hWndFrom & @LF & _                             "--> 控制項 ID:" & @TAB & $iIDFrom & @LF & _                             "--> 操作代碼:" & @TAB & $iCode)                     ; 沒有返回值            ConsoleWrite("A......................."&_GUICtrlComboBox_GetEditText($hCombo)&@CRLF)             EndSwitch     EndSwitch     Return $GUI_RUNDEFMSG EndFunc   ;==>WM_COMMAND Func _DebugPrint($s_text, $line = @ScriptLineNumber)     ConsoleWrite( _             "!===========================================================" & @LF & _             "+======================================================" & @LF & _             "--> 行(" & StringFormat("%04d", $line) & "):" & @TAB & $s_text & @LF & _             "+======================================================" & @LF) EndFunc   ;==>_DebugPrint


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2020-8-19 19:31:06 | 显示全部楼层
试试这样


#include <GUIComboBox.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <GuiEdit.au3>;
$Debug_CB = False ; 檢查傳遞到 ComboBox / ComboBoxEx 函數的控制項類名, 設置為 True, 並使用一個控制碼到另一個控制項, 查看它的工作
Global $hCombo
_Main()
Func _Main()
        Local $hGUI
        ; 創建 GUI
        $hGUI = GUICreate("創建 ComboBox 控制項", 400, 296)
        $hCombo = _GUICtrlComboBox_Create($hGUI, "", 2, 2, 396, 296)
        GUISetState()
        ; 添加文件
        _GUICtrlComboBox_BeginUpdate($hCombo)
        _GUICtrlComboBox_AddDir($hCombo, "", $DDL_DRIVES, False)
        _GUICtrlComboBox_EndUpdate($hCombo)
        GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
        ; 迴圈到用戶退出
        Do
        Until GUIGetMsg() = $GUI_EVENT_CLOSE
        GUIDelete()
EndFunc   ;==>_Main
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
        #forceref $hWnd, $iMsg
        Local $hWndFrom, $iIDFrom, $iCode ,$sText
        $hWndFrom = $ilParam
        $iIDFrom = BitAND($iwParam, 0xFFFF) ; 低位字
        $iCode = BitShift($iwParam, 16) ; 高位字
        Switch $hWndFrom
                Case $hCombo
                        Switch $iCode
                                Case $CBN_SELCHANGE ; 發送使用者修改下拉式列示方塊的清單方塊的當前選擇消息
                                        _DebugPrint("$CBN_SELCHANGE" & @LF & "--> 控制項控制碼:" & @TAB & $hWndFrom & @LF & _
                                                        "--> 控制項 ID:" & @TAB & $iIDFrom & @LF & _
                                                        "--> 操作代碼:" & @TAB & $iCode)
                                        ; 沒有返回值
                                        _GUICtrlComboBox_GetLBText($hCombo, _GUICtrlComboBox_GetCurSel($hCombo), $sText)
;~                                         ConsoleWrite("A......................." & _GUICtrlComboBox_GetEditText($hCombo) & @CRLF)
                                        ConsoleWrite("A......................." & $sText & @CRLF)
                        EndSwitch
        EndSwitch
        Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_COMMAND
Func _DebugPrint($s_text, $line = @ScriptLineNumber)
        ConsoleWrite( _
                        "!===========================================================" & @LF & _
                        "+======================================================" & @LF & _
                        "--> 行(" & StringFormat("%04d", $line) & "):" & @TAB & $s_text & @LF & _
                        "+======================================================" & @LF)
EndFunc   ;==>_DebugPrint


评分

参与人数 1金钱 +100 收起 理由
kk_lee69 + 100 感謝回覆~~ 謝啦 不常用combo

查看全部评分

发表于 2020-8-19 19:53:16 | 显示全部楼层
解法2:参考 P 大的 帖子:

https://www.autoitx.com/thread-15925-1-1.html

评分

参与人数 1金钱 +100 收起 理由
kk_lee69 + 100 感謝回覆~~ 謝啦 不常用combo

查看全部评分

发表于 2020-8-19 19:55:33 | 显示全部楼层
借着 P大的帖子,水多10个金币……………………
#include <GUIComboBox.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <GuiEdit.au3>;
$Debug_CB = False ; 檢查傳遞到 ComboBox / ComboBoxEx 函數的控制項類名, 設置為 True, 並使用一個控制碼到另一個控制項, 查看它的工作 Global $hCombo _Main() Func _Main()     Local $hGUI     ; 創建 GUI     $hGUI = GUICreate("創建 ComboBox 控制項", 400, 296)     $hCombo = _GUICtrlComboBox_Create($hGUI, "", 2, 2, 396, 296)     GUISetState()     ; 添加文件     _GUICtrlComboBox_BeginUpdate($hCombo)     _GUICtrlComboBox_AddDir($hCombo, "", $DDL_DRIVES, False)     _GUICtrlComboBox_EndUpdate($hCombo)     GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")     ; 迴圈到用戶退出     Do     Until GUIGetMsg() = $GUI_EVENT_CLOSE     GUIDelete() EndFunc   ;==>_Main Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)     #forceref $hWnd, $iMsg     Local $hWndFrom, $iIDFrom, $iCode     $hWndFrom = $ilParam     $iIDFrom = BitAND($iwParam, 0xFFFF) ; 低位字     $iCode = BitShift($iwParam, 16) ; 高位字     Switch $hWndFrom         Case $hCombo             Switch $iCode                 Case $CBN_SELENDOK;$CBN_SELCHANGE ; 發送使用者修改下拉式列示方塊的清單方塊的當前選擇消息                     _DebugPrint("$CBN_SELCHANGE" & @LF & "--> 控制項控制碼:" & @TAB & $hWndFrom & @LF & _                             "--> 控制項 ID:" & @TAB & $iIDFrom & @LF & _                             "--> 操作代碼:" & @TAB & $iCode)                     ; 沒有返回值                                                                                 Local $sText,$iCurSel                                         $iCurSel = _GUICtrlComboBox_GetCurSel($hCombo)                                                            _GUICtrlComboBox_GetLBText($hCombo, $iCurSel, $sText)                                         ConsoleWrite("A......................."& $sText&@CRLF)                                                     EndSwitch     EndSwitch     Return $GUI_RUNDEFMSG EndFunc   ;==>WM_COMMAND Func _DebugPrint($s_text, $line = @ScriptLineNumber)     ConsoleWrite( _             "!===========================================================" & @LF & _             "+======================================================" & @LF & _             "--> 行(" & StringFormat("%04d", $line) & "):" & @TAB & $s_text & @LF & _             "+======================================================" & @LF) EndFunc   ;==>_DebugPrint
发表于 2020-8-19 20:02:06 | 显示全部楼层
本帖最后由 floor6ggg 于 2020-8-19 20:06 编辑

没细看,和2楼 zghwelcome 大     的 撞车了,尴尬……
仔细比对了一下,还是有点区别:

Case $CBN_SELCHANGE   与   Case $CBN_SELENDOK  的区别,当然,效果是一样的
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-16 10:33 , Processed in 0.119806 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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