fenhanxue 发表于 2017-7-19 12:15:39

_GUICtrlComboBox_ShowDropDown 如何不让鼠标消失【已解决】

本帖最后由 fenhanxue 于 2017-7-25 14:18 编辑

简化后的模型代码如下:#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiComboBox.au3>
#include <GuiComboBoxEx.au3>

$Form1 = GUICreate("Form1", 623, 449)
$Combo1 = GUICtrlCreateCombo("Combo1", 88, 72, 329, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))

GUISetState(@SW_SHOW)

GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")


While 1
        $nMsg = GUIGetMsg()

        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
        EndSwitch
WEnd

Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam);文本变化

        Local $hWndFrom, $iIDFrom, $iCode, $hWndCombo
        $hWndFrom = $ilParam
        $iIDFrom = BitAND($iwParam, 0xFFFF)
        $iCode = BitShift($iwParam, 16)
       
        ;判断是否是 $Combo1 消息
        If $hWndFrom <> GUICtrlGetHandle($Combo1) Then   Return $GUI_RUNDEFMSG
        If $iCode <> $CBN_EDITCHANGE Then Return $GUI_RUNDEFMSG;$CBN_EDITCHANGE        代表 $Combo1 文字发生改变
       


        ;=================================问题行:
                _GUICtrlComboBox_ShowDropDown($Combo1, True);下拉后,鼠标消失了,如何不让鼠标消失?
        ;=================================问题行:
       
       
       
        Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_COMMAND
想实现的效果是:
在combo里输入任意文本,combo会自动打开下拉框,但是实测过程中,发现出现下拉框的时候,鼠标隐藏了,想知道如何不隐藏掉鼠标?


即如何不让这个鼠标隐藏:

chzj589 发表于 2017-7-19 13:01:03

本帖最后由 chzj589 于 2017-7-19 15:09 编辑

回复 1# fenhanxue

不好意思,打扰了。可能我不理解你的提问。

fenhanxue 发表于 2017-7-19 13:15:57

本帖最后由 fenhanxue 于 2017-7-19 13:17 编辑

回复 2# chzj589


    我说的是:
出现下拉框之后,鼠标的图标会自动隐藏掉,我不想要自动隐藏鼠标。
跟你回复我的函数解析似乎没任何关联

yamakawa 发表于 2017-7-19 13:37:33

回复 1# fenhanxue


    好像没办法。。。。但是好像不是
                _GUICtrlComboBox_ShowDropDown($Combo1, True);
的锅。。

而是CBN_EDITCHANGE 的问题。。。我在windows的运行界面试过,输入字符的瞬间,光标也会消失,但是差别是,过一会就会出现,,而用au3写的一直消失,不出现。。。

坐等高手

yamakawa 发表于 2017-7-19 13:40:10

自带帮助文件。_GUICtrlComboBox_AutoComplete.au3。在输入的时候也会消失,但是也是过一会就会出现,,尝试加入                _GUICtrlComboBox_ShowDropDown($Combo1, True);
。鼠标再也不见了。。。。。

chzj589 发表于 2017-7-19 13:50:18

本帖最后由 chzj589 于 2017-7-19 15:08 编辑

回复 3# fenhanxue
不好意思,打扰了。可能我不理解你的提问。

fenhanxue 发表于 2017-7-19 13:59:18

回复 6# chzj589


    。。。
我要的不是展开或折叠下拉列表!
我要的是展开下拉列表,并且不隐藏鼠标(光标)!!!

不隐藏鼠标(光标)!!!
不隐藏鼠标(光标)!!!
不隐藏鼠标(光标)!!!
不隐藏鼠标(光标)!!!
不隐藏鼠标(光标)!!!

fenhanxue 发表于 2017-7-19 14:05:20

回复 5# yamakawa


    尝试过不注册消息的模式,鼠标是不会消失的。而采用注册消息模式,则鼠标会消失掉。
目前采用的办法为:;模拟移动一下鼠标
Local $temp_mouse = MouseGetPos()
MouseMove($temp_mouse,$temp_mouse-10,0)
MouseMove($temp_mouse,$temp_mouse,0)

Sleep(1);然后还必须sleep一下,才会出现鼠标,不sleep一下,鼠标还是不会出现,实在难以捉摸原因
                                                       
                                                       
_GUICtrlComboBox_ShowDropDown($temp_hwnd, True)目前采用的这办法,原理我自己都没搞懂,尤其是为什么要sleep 一下,不sleep 就不会显示光标,写了sleep就会显示

fenhanxue 发表于 2017-7-19 14:12:08

回复 5# yamakawa


    模拟鼠标移动,是因为实测过程中发现,光标定位到combo后,若不移动鼠标,鼠标也隐藏,同时combo上会出现定位光标。此时若移动一下鼠标,则鼠标的图标也会重新出现

yamakawa 发表于 2017-7-19 14:15:35

回复 8# fenhanxue


    这也看出不是showdropdown的锅了。。CBN_EDITCHANGE 就是移动一下鼠标就出现。或者过一会就自动出现。。。但是不理解的是,为什么加上showdropdown。。。就变成一直不出现了

chzj589 发表于 2017-7-19 14:31:28

本帖最后由 chzj589 于 2017-7-19 15:08 编辑

回复chzj589


    。。。
我要的不是展开或折叠下拉列表!
我要的是展开下拉列表,并且不隐藏鼠标 ...
fenhanxue 发表于 2017-7-19 13:59 http://www.autoitx.com/images/common/back.gif
差不多是这样子,多了个MsgBox,
不好意思,打扰了。可能我不理解你的提问。

yamakawa 发表于 2017-7-19 14:36:04

我先
        _GUICtrlComboBox_SetExtendedUI ( $g_idCombo, True )
然后
删掉showdropdown。
用Send('{UP}')
也能弹出列表。。但是。。纠结了。。。鼠标还是不见。。

fenhanxue 发表于 2017-7-19 14:49:02

回复 11# chzj589


    大神还请移驾吧,你答复的跟我提问的完全是两码事情,大神的世界,弱菜表示跟不上节奏

chzj589 发表于 2017-7-19 14:59:31

回复chzj589


    大神还请移驾吧,你答复的跟我提问的完全是两码事情,大神的世界,弱菜表示跟不上 ...
fenhanxue 发表于 2017-7-19 14:49 http://www.autoitx.com/images/common/back.gif
不好意思,打扰了。可能我不理解你的提问。

tubaba 发表于 2017-7-19 15:14:55

楼主的意思是combo输入内容时,鼠标光标会隐藏不见. 期待的结果是光标一直显示
页: [1] 2 3
查看完整版本: _GUICtrlComboBox_ShowDropDown 如何不让鼠标消失【已解决】