Ich habe eine GUI. Dort verstecke ich einen Button.
Wie kann man verhindern, dass man per Drag & Drop eine Datei auf den versteckten Button ziehen kann?
Klar könnte man abfragen, ob der button versteckt ist.
Dies würde allerdings nicht klappen, wenn ich 2 Button übereinander liegen habe und immer einen von beiden verstecke.
AutoIt
#Region ;************ Includes ************
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <WinAPISysWin.au3>
#EndRegion ;************ Includes ************
Opt("GUIOnEventMode", 1)
Global $hGui = GUICreate("test", 150, 200, -1, -1, -1, $WS_EX_ACCEPTFILES)
Global $idButton_1 = GUICtrlCreateButton("Button 1", 10, 10, 60, 30)
Global $idButton_2 = GUICtrlCreateButton("Button 2", 10, 60, 60, 30)
Global $idButton_beenden = GUICtrlCreateButton("Beenden", 10, 110, 60, 30)
Global $idLabel = GUICtrlCreateLabel("", 80, 35, 50, 35)
GUISetState(@SW_SHOW)
Sleep(2000)
GUICtrlSetState($idButton_1, $GUI_HIDE + $GUI_NODROPACCEPTED)
GUIRegisterMsg($WM_DROPFILES, "On_WM_DROPFILES")
GUISetOnEvent($GUI_EVENT_CLOSE, "_beenden")
GUICtrlSetOnEvent($idButton_beenden, "_beenden")
While 1
Sleep(10)
WEnd
Func On_WM_DROPFILES($hWnd, $msg, $wParam, $lParam)
Local $aFileList, $nSize, $pFileName, $tPoint, $hCtrl
$tPoint = _WinAPI_DragQueryPoint($wParam)
If Not DllStructGetSize($tPoint) Then Return ;window border
$hCtrl = _WinAPI_ChildWindowFromPointEx($hWnd, $tPoint)
If $hCtrl = ControlGetHandle($hGui, "", $idButton_1) Then
GUICtrlSetData($idLabel, "Button 1")
ElseIf $hCtrl = ControlGetHandle($hGui, "", $idButton_2) Then
GUICtrlSetData($idLabel, "Button 2")
EndIf
_WinAPI_DragFinish($wParam)
_WinAPI_MessageBeep(0) ;Ton erzeugen
Return
EndFunc ;==>On_WM_DROPFILES
Func _beenden()
Exit
EndFunc ;==>_beenden
Alles anzeigen