#704 closed Bug (No Bug)
_GUICtrlTab_ClickTab() function does not always click on tab button
Reported by: | Bowmore | Owned by: | Gary |
---|---|---|---|
Milestone: | Component: | Standard UDFs | |
Version: | 3.2.12.1 | Severity: | None |
Keywords: | GuiTab.au3 | Cc: |
Description
Enviroment:
WinXP Home SP3
AutoIt 3.2.12.1
AutoIt Beta 3.2.13.11
The coords of the centre of button are calculated in screen coords, but the click is preformed using whatever MouseCoordMode the user has set. The MouseCoordMode option needs setting to 1 and then resetting back to the original value before exiting the function.
Code to demonstrate existing behaviour of existing function and that of the suggested fix below. GuiControlsItemClickTest.exe is a compiled version of the Sample GUI from the examples folder to give some tabs to click.
GuiControlsItemClickTest.exe is the SampleControls.au3 from the AutoIt\Examples folder compliled and saved as GuiControlsItemClickTest.exe
Opt("MustDeclareVars", 1) Opt("WinWaitDelay", 100) Opt("WinTitleMatchMode", 4) Opt("WinDetectHiddenText", 1) Opt("MouseCoordMode", 2) Opt("PixelCoordMode", 2) #include <GuiTab.au3> Local $hWnd = 0 Local $iCommandID = 0 Run(@ScriptDir & "\GuiControlsItemClickTest.exe") For $ifunc = 0 To 1 ;Display behaviour when mouse is not moved and then when mouse is moved For $iMove = 0 To 1 ;Use each of the MouseCoordMode in turn For $iCoordMode = 0 To 2 Opt("MouseCoordMode", $iCoordMode) WinActivate("Sample GUI") $hwnd = ControlGetHandle("Sample GUI","","SysTabControl321") If $ifunc = 0 Then ;click on tab 3 without moving mouse ToolTip("Standard UDF Function '_GUICtrlTab_ClickTab()' MouseCoordMode = " & $iCoordMode & @CRLF & "Attempting To click on tab 'Three' mouse moving is " & ($iMove <> 0), 20, 20) WinActivate("Sample GUI") _GUICtrlTab_ClickTab($hWnd, 2, "left", ($iMove <> 0), 1, 50) Sleep(3000) ;click on tab 2 moving mouse ToolTip("Standard UDF Function '_GUICtrlTab_ClickTab()' MouseCoordMode = " & $iCoordMode & @CRLF & "Attempting To click on tab 'Two' mouse moving is " & ($iMove <> 0), 20, 20) WinActivate("Sample GUI") _GUICtrlTab_ClickTab($hWnd, 1, "left", ($iMove <> 0), 1, 50) Sleep(3000) Else ;click on tab 3 without moving mouse ToolTip("Modified UDF Function '_GUICtrlTab_ClickTab()' MouseCoordMode = " & $iCoordMode & @CRLF & "Attempting To click on tab 'Three' mouse moving is " & ($iMove <> 0), 20, 20) WinActivate("Sample GUI") MOD_GUICtrlTab_ClickTab($hWnd, 2, "left", ($iMove <> 0), 1, 50) Sleep(3000) ;click on tab 1 moving mouse ToolTip("Modified UDF Function '_GUICtrlTab_ClickTab()' MouseCoordMode = " & $iCoordMode & @CRLF & "Attempting To click on tab 'One' mouse moving is " & ($iMove <> 0), 20, 20) WinActivate("Sample GUI") MOD_GUICtrlTab_ClickTab($hWnd, 0, "left", ($iMove <> 0), 1, 50) Sleep(5000) EndIf Next Next Next Exit Func MOD_GUICtrlTab_ClickTab($hWnd, $iIndex, $sButton = "left", $fMove = False, $iClicks = 1, $iSpeed = 1) Local $iX, $iY, $tPoint, $tRect, $iMode, $aPos If $Debug_TAB Then _GUICtrlTab_ValidateClassName($hWnd) If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd) $tRect = _GUICtrlTab_GetItemRectEx($hWnd, $iIndex) $tPoint = _WinAPI_PointFromRect($tRect, True) $tPoint = _WinAPI_ClientToScreen($hWnd, $tPoint) _WinAPI_GetXYFromPoint($tPoint, $iX, $iY) ;Switch to screen MouseCoordMode $iMode = Opt("MouseCoordMode", 1) If Not $fMove Then $aPos = MouseGetPos() _WinAPI_ShowCursor(False) ;_WinAPI_ShowCursor does not seem to work on XP so set mouse speed it instant MouseClick($sButton, $iX, $iY, $iClicks, 0) MouseMove($aPos[0], $aPos[1], 0) Sleep(3000) _WinAPI_ShowCursor(True) Else MouseClick($sButton, $iX, $iY, $iClicks, $iSpeed) EndIf ;Switch back to user MouseCoordMode Opt("MouseCoordMode", $iMode) EndFunc ;==>_GUICtrlTab_ClickTab
Attachments (0)
Change History (2)
comment:1 follow-up: ↓ 2 Changed 16 years ago by Gary
- Resolution set to No Bug
- Status changed from new to closed
comment:2 in reply to: ↑ 1 Changed 16 years ago by anonymous
Replying to Gary:
_WinAPI_ShowCursor works fine on my XP box.
_GUICtrlTab_ClickTab was fixed in 3.2.13.11 and does not match your version of it.
Hi Gary not sure what happend there I had downloaded 3.2.13.11 but for some reason it kept my modified version of this function. I've just re-down loaded and see that you did fix the no cursor move part as well as the part I previously reported.
_WinAPI_ShowCursor must be due to graphics card or something as I couldn't see anything wrong with the function. I did think that possibly the cursor was beining reenabled by internal AutoIt MouseClick function. Not an issue for me.
Guidelines for posting comments:
- You cannot re-open a ticket but you may still leave a comment if you have additional information to add.
- In-depth discussions should take place on the forum.
For more information see the full version of the ticket guidelines here.
_WinAPI_ShowCursor works fine on my XP box.
_GUICtrlTab_ClickTab was fixed in 3.2.13.11 and does not match your version of it.