Jump to content

Can I set a control with ‘GUICtrlSetState(-1, $GUI_DROPACCEPTED)’ to where you can only drop the item in said control?


Recommended Posts

Can I set a control with GUICtrlSetState ( -1, $GUI_DROPACCEPTED ) to where you can only drop the item in said control?

[Example Code: Begin]

$editInput = GUICtrlCreateEdit("", 16, 24, 289, 81, BitOR ( $ES_AUTOVSCROLL,$ES_WANTRETURN)) ;this will be the only control you can drop in, all other controls and the main GUI, will display the ‘access denied cursor.’

GUICtrlSetState(-1, $GUI_DROPACCEPTED)

[Example Code: End]

Link to comment
Share on other sites

Hi,

Welcome to the autoit forum :)

This is the only solution that came to my mind :

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <WinAPI.au3>

Local Const $iEXSTYLE = 0 ;default style to be set on your GUI

Local Const $hGUI = GUICreate("MyGUI")

Local Const $iMyInput = GUICtrlCreateInput("", 20, 20, 300, 20)
GUICtrlSetState($iMyInput, $GUI_DROPACCEPTED)

GUISetState()

Local $aCurInfo = 0, $blInputHovered = False

While GUIGetMsg() <> $GUI_EVENT_CLOSE
    Sleep(10)

    $aCurInfo = GUIGetCursorInfo()
    If IsArray($aCurInfo) And $aCurInfo[4] = $iMyInput Then
        If Not $blInputHovered Then _WinAPI_SetWindowLong($hGUI, $GWL_EXSTYLE, BitOR($iEXSTYLE, $WS_EX_ACCEPTFILES))
        $blInputHovered = True
    Else
        If $blInputHovered Then _WinAPI_SetWindowLong($hGUI, $GWL_EXSTYLE, BitXOR($iEXSTYLE, $WS_EX_ACCEPTFILES))
        $blInputHovered = False
    EndIf
WEnd

GUIDelete($hGUI)

The problem is that when you leave the input, the cursor is not updated; you can change the cursor with the _WinAPI_SetCursor but this would be too much tricky.

Edit: Take a look you will find what you need ;)

If you have any problem don't hesitate to ask :)

Br, FireFox.

Edited by FireFox
Link to comment
Share on other sites

  • Moderators

bryan31337,

Welcome to the AutoIt forum. :)

I think getting the cursor to change would require quite a bit of code as you need to set the whole GUI to the ACCEPTFILES style, but allowing just a single control within it to accept the drop is very easy: ;)

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$hGUI = GUICreate("Test", 500, 500, -1, -1, Default, $WS_EX_ACCEPTFILES)

$cEdit_1 = GUICtrlCreateEdit("", 10, 10, 480, 200)
GUICtrlSetState(-1, $GUI_DROPACCEPTED) ; This edit will accept a drop

$cEdit_2 = GUICtrlCreateEdit("", 10, 250, 480, 200)

GUISetState()

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd

Good enough - or do you really want the cursor to change as well? :huh:

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

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...