Jump to content

Detecting mouse click other than clicking defined button


 Share

Recommended Posts

I can't wrap my mind around the logic for the following example. I'm trying to only run a user function when an existing button isn't pressed:

 

#Include <Misc.au3> ; For _IsPressed
Global $hGUI = GUICreate("Mouse Click", @DesktopWidth, @DesktopHeight-50)
Global $btnEXIT = GUICtrlCreateButton("EXIT",0,0,70,40)
GUISetState()
Local $UserDLL = DllOpen("user32.dll") ;Enable mouse click checking
While 1
   Switch GUIGetMsg()
      Case $btnEXIT, -3
            _Exit()
      Case Else
           If _IsPressed("01", $UserDLL) Then
               SplashTextOn ("Notice", "Left Button Clicked", 650, 350,-1,150,1,-1,20,600)
               Sleep(1000)
               SplashOff()
           EndIf
   EndSwitch
WEnd

So in that example when I click the exit button, it shouldn't display a message when it exits the application.

Link to comment
Share on other sites

  • Moderators

NassauSky,

The Exit button firing event is sent when the mouse button is released, so you always get the "Button pressed" case firing first.

I suggest testing for the location of the cursor like this:

#include <GUIConstantsEx.au3>
#include <Misc.au3> ; For _IsPressed

Global $hGUI = GUICreate("Mouse Click")

Global $btnEXIT = GUICtrlCreateButton("EXIT", 0, 0, 70, 40)
GUISetState()

Local $UserDLL = DllOpen("user32.dll") ;Enable mouse click checking

While 1
    Switch GUIGetMsg()
        Case $btnEXIT, $GUI_EVENT_CLOSE
            DllClose($UserDLL)
            Exit
        Case Else
            Local $cInfo = GUIGetCursorInfo()
            If _IsPressed("01", $UserDLL) And $cInfo[4] <> $btnEXIT Then ; Check if over button <<<<<<<<<<<<<<<<<<<<<<
                SplashTextOn("Notice", "Left Button Clicked", 650, 350, -1, 150, 1, -1, 20, 600)
                Sleep(1000)
                SplashOff()
            EndIf
    EndSwitch
WEnd

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

Another way :

#include <GUIConstants.au3>

Global $hGUI = GUICreate("Mouse Click", 500, 500)
Global $btnEXIT = GUICtrlCreateButton("EXIT", 0, 0, 70, 40)
GUISetState()
While 1
  Switch GUIGetMsg()
    Case $btnEXIT, $GUI_EVENT_CLOSE
      ExitLoop
    Case $GUI_EVENT_PRIMARYUP
      SplashTextOn("Notice", "Left Button Clicked", 150, 150, -1, 150, 1, -1, 20, 600)
      Sleep(1000)
      SplashOff()
  EndSwitch
WEnd

 

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

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...