Jump to content

Recommended Posts

Posted

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.

  • Moderators
Posted

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:

  Reveal hidden contents

 

Posted

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

 

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
  • Recently Browsing   0 members

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