Jump to content

Recommended Posts

Hi everybody,

I have troubles using the function "GUISetCursor" properly.

My script generates a small GUI and opens an image in IrfanView. If the user hits the button "$p_coord" on the GUI, the GUI shall be hidden, IrfanView shall become active and the mousepointer shall turn into a cross (as long hovering over IrfanView). Once clicked into IrfanView, the cursor shall turn into a nordinary mousepointer again.

Unfortunately, the cross doesn't appear until the user clicks into IrfanView manually. Then the mousepointer changes for the duration of the click into the cross. Can anybody tell why this is happening?

Here is the relevant code:

GUISetState(@SW_SHOW, $hGUI)                                        ;the autoit gui is hidden

; Loop until the user exits:
    While 1
        Switch GUIGetMsg()
         Case $GUI_EVENT_CLOSE
                ExitLoop
         Case $p_coord
                WinSetState("Bicon Coordinator","",@SW_HIDE)        ;the autoit gui is hidden
                $Handle = WinActivate ( "IrfanView")                ; IrfanView is activated
                GUISetCursor (15,1,$Handle)                         ;Cursor should be turned into a cross - this is what fails :-(
                While 1                                         
                    If _IsPressed ("01", $hDLL) Then                ;Once a mousclick by the user is performed... 
                        GUISetCursor (2) 
                    EndIf
        EndSwitch
    WEnd

 

dejhost

 

 

 

 

 

Link to comment
Share on other sites

@dejhost,

are you sure GetSetCursor() is supposed to work on external windows? as i understand, it works on your script GUI.

if it does work on external windows, check that the WinActivate returns a valid handle.

Signature - my forum contributions:

Spoiler

UDF:

LFN - support for long file names (over 260 characters)

InputImpose - impose valid characters in an input control

TimeConvert - convert UTC to/from local time and/or reformat the string representation

AMF - accept multiple files from Windows Explorer context menu

DateDuration -  literal description of the difference between given dates

Apps:

Touch - set the "modified" timestamp of a file to current time

Show For Files - tray menu to show/hide files extensions, hidden & system files, and selection checkboxes

SPDiff - Single-Pane Text Diff

 

Link to comment
Share on other sites

I believe that GUI* functions work only on the AutoIt GUIs created in the same script that they're used in.

If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Link to comment
Share on other sites

WinActivate returns a proper handle.  So obviously you're right:  GUISetCursor() only works on the autoit GUI. I see two options to solve this:

  1. Replace IrfanView with GUICtrlCreatePic()
  2. Change the windows registry entry: HKEY_CURRENT_USER\Control Panel\Cursors  and C:\Windows\Cursors respectively.

Thanks for your input. It is very much appreciated.

dejhost

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...