Verssuss Posted April 3, 2017 Posted April 3, 2017 hello guys im new here. im looking for help with my 'box hui'. i want to make it work perfect but i cantget right way. i have few examples. plz help me to fix it or give me any method to 'paint' box all i want to make box empty inside u can move it and resize and popup. sorry formy english expandcollapse popup#include <GUIConstants.au3> HotKeySet("{q}", "_quit") HotKeySet("{a}", "_boxplus") HotKeySet("{z}", "_boxminus") $GUI = GUICreate("Clicker", 500, 400,0, 0, -1) MsgBox(1,"info", " Press Q to Quit" & @LF & " Press A to size up"& @LF & " Press Z to size down") $BoxTop = GUICreate('',2,2,0,0,$WS_POPUP,$WS_EX_TOPMOST);WHLT GUISetBkColor(0x00ff00);Green $BoxRight = GUICreate('',2,2,2,0,$WS_POPUP,$WS_EX_TOPMOST,$BoxTop) GUISetBkColor(0x00ff00) $BoxBottom = GUICreate('',2,2,2,2,$WS_POPUP,$WS_EX_TOPMOST,$BoxTop);WHLT GUISetBkColor(0x00ff00) $BoxLeft = GUICreate('',2,2,0,2,$WS_POPUP,$WS_EX_TOPMOST,$BoxTop);WHLT GUISetBkColor(0x00ff00) $box_range = 50 While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit EndSwitch $pos = MouseGetPos() GUISetState (@SW_SHOW,$BoxTop) GUISetState (@SW_SHOW,$BoxLeft) GUISetState (@SW_SHOW,$BoxBottom) GUISetState (@SW_SHOW,$BoxRight) WinMove($BoxTop,'', MouseGetPos(0)-$box_range,MouseGetPos(1)-$box_range,$box_range*2,3) WinMove($BoxBottom,'', MouseGetPos(0)-$box_range,MouseGetPos(1)+$box_range,$box_range*2,3) WinMove($BoxLeft,'', MouseGetPos(0)+$box_range,MouseGetPos(1)-$box_range,3,$box_range*2) WinMove($BoxRight,'', MouseGetPos(0)-$box_range,MouseGetPos(1)-$box_range,3,$box_range*2) WEnd Func _boxminus() $box_range = $box_range - 10 EndFunc Func _boxplus() $box_range = $box_range + 10 EndFunc Func _quit() Exit EndFunc #include <GUIConstantsEx.au3> #include <WinAPI.au3> #include <WindowsConstants.au3> HotKeySet("q", "_Quit") HotKeySet("w", "_CutGui") Global $GUI = GUICreate("Empty Window", 200, 200,500,100,$WS_SIZEBOX) $cut_gui = GUICtrlCreateButton("Cut Inside Gui", 50, 100, 100) GUISetState(@SW_SHOW) Local $iMsg While 1 $iMsg = GUIGetMsg() Select Case $iMsg = $GUI_EVENT_CLOSE ExitLoop Case $iMsg = $cut_gui _CutGui() EndSelect WEnd Func _CutGui() Local $aPos = WinGetPos($GUI) $gui_full = _WinAPI_CreateRectRgn(0, 0, $aPos[2], $aPos[3]) $gui_part = _WinAPI_CreateRectRgn(8, 30, $aPos[2]-8, $aPos[3]-8) $gui_RGN = _WinAPI_CreateRectRgn(0, 0, 0, 0) _WinAPI_CombineRgn($gui_RGN, $gui_full, $gui_part, $RGN_DIFF) _WinAPI_SetWindowRgn($GUI, $gui_RGN) EndFunc ;==>_GuiHole Func _Quit() Exit EndFunc expandcollapse popup#include <GuiConstantsEx.au3> #include <Windowsconstants.au3> #include <SendMessage.au3> #include <WinAPI.au3> #include <GDIPlus.au3> Global Const $SC_DRAGMOVE = 0xF012 HotKeySet("{ESC}", "_Quit") ; Set distance from edge of window where resizing is possible Global Const $iMargin = 10 $hGUI = GUICreate("Y", 100, 100, -1, -1, $WS_POPUP,$WS_SIZEBOX) GUISetBkColor(0x00FF00) GUISetState() ; Register message handlers GUIRegisterMsg($WM_MOUSEMOVE, "_SetCursor") ; For cursor type change GUIRegisterMsg($WM_LBUTTONDOWN, "_WM_LBUTTONDOWN") ; For resize/drag While 1 _GDIPlus_Startup() $aPos = WinGetPos($hGUI) $hPath = _GDIPlus_PathCreate() ;tworzenie ścieżki _GDIPlus_PathAddRectangle($hPath, 0, 0, $aPos[2], $aPos[3]) $hReg = _GDIPlus_RegionCreateFromPath($hPath) $hReg2 = _GDIPlus_RegionCreateFromRect(20, 20, $aPos[2]-40, $aPos[3]-40) _GDIPlus_RegionCombineRegion($hReg, $hReg2, 3) ;łączenie regionów typu XOR $hRGN = _GDIPlus_RegionGetHRgn($hReg) _WinAPI_SetWindowRgn($hGUI, $hRGN) ;zwolnienie zasobów _WinAPI_DeleteObject($hRGN) _GDIPlus_RegionDispose($hReg) _GDIPlus_RegionDispose($hReg2) _GDIPlus_PathDispose($hPath) _GDIPlus_Shutdown() Sleep(10) WEnd ; Set cursor to correct resizing form if mouse is over a border Func _SetCursor() Local $iCursorID Switch _Check_Border() Case 0 $iCursorID = 2 Case 1, 2 $iCursorID = 13 Case 3, 6 $iCursorID = 11 Case 5, 7 $iCursorID = 10 Case 4, 8 $iCursorID = 12 EndSwitch GUISetCursor($iCursorID, 1) EndFunc ;==>SetCursor ; Check cursor type and resize/drag window as required Func _WM_LBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam) Local $iCursorType = _Check_Border() If $iCursorType > 0 Then ; Cursor is set to resizing style so send appropriate resize message $iResizeType = 0xF000 + $iCursorType _SendMessage($hGUI, $WM_SYSCOMMAND, $iResizeType, 0) Else Local $aCurInfo = GUIGetCursorInfo($hGUI) If $aCurInfo[4] = 0 Then ; Mouse not over a control _SendMessage($hGUI, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0) EndIf EndIf EndFunc ;==>WM_LBUTTONDOWN ; Determines if mouse cursor over a border Func _Check_Border() Local $aCurInfo = GUIGetCursorInfo() If @error Then Return -1 Local $aWinPos = WinGetPos($hGUI) Local $iSide = 0 Local $iTopBot = 0 If $aCurInfo[0] < $iMargin Then $iSide = 1 If $aCurInfo[0] > $aWinPos[2] - $iMargin Then $iSide = 2 If $aCurInfo[1] < $iMargin Then $iTopBot = 3 If $aCurInfo[1] > $aWinPos[3] - $iMargin Then $iTopBot = 6 Return $iSide + $iTopBot EndFunc ;==>_Check_Border Func _Quit() Exit EndFunc
mikell Posted April 3, 2017 Posted April 3, 2017 (edited) Maybe this ? expandcollapse popup#include <GuiConstantsEx.au3> #include <Windowsconstants.au3> #include <SendMessage.au3> #include <WinAPI.au3> Global Const $SC_DRAGMOVE = 0xF012 HotKeySet("{ESC}", "On_Exit") ; Set distance from edge of window where resizing is possible Global Const $iMargin = 4 ; Create GUI $hGUI = GUICreate("Y", 120, 120, -1, -1, $WS_POPUP, BitOr($WS_EX_LAYERED, $WS_EX_COMPOSITED, $WS_EX_TOPMOST)) GUISetBkColor(0x00FF00) $btn = GuiCtrlCreateButton("close", 20, 20, 60, 25) GuiCtrlCreateLabel("", 10, 10, 100, 100) GUICtrlSetBkColor(-1, 0xABCDEF) GUICtrlSetResizing(-1, $GUI_DOCKBORDERS) GUISetState() _WinAPI_SetLayeredWindowAttributes($hGui, 0xABCDEF) ; Register message handlers GUIRegisterMsg($WM_MOUSEMOVE, "_SetCursor") ; For cursor type change GUIRegisterMsg($WM_LBUTTONDOWN, "_WM_LBUTTONDOWN") ; For resize/drag While 1 $msg = GUIGetMsg() Switch $msg Case $btn On_Exit() EndSwitch WEnd ; Set cursor to correct resizing form if mouse is over a border Func _SetCursor() Local $iCursorID Switch _Check_Border() Case 0 $iCursorID = 2 Case 1, 2 $iCursorID = 13 Case 3, 6 $iCursorID = 11 Case 5, 7 $iCursorID = 10 Case 4, 8 $iCursorID = 12 EndSwitch GUISetCursor($iCursorID, 1) EndFunc ;==>SetCursor ; Check cursor type and resize/drag window as required Func _WM_LBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam) Local $iCursorType = _Check_Border() If $iCursorType > 0 Then ; Cursor is set to resizing style so send appropriate resize message $iResizeType = 0xF000 + $iCursorType _SendMessage($hGUI, $WM_SYSCOMMAND, $iResizeType, 0) Else Local $aCurInfo = GUIGetCursorInfo($hGUI) If $aCurInfo[4] = 0 Then ; Mouse not over a control _SendMessage($hGUI, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0) EndIf EndIf EndFunc ;==>WM_LBUTTONDOWN ; Determines if mouse cursor over a border Func _Check_Border() Local $aCurInfo = GUIGetCursorInfo() If @error Then Return -1 Local $aWinPos = WinGetPos($hGUI) Local $iSide = 0 Local $iTopBot = 0 If $aCurInfo[0] < $iMargin Then $iSide = 1 If $aCurInfo[0] > $aWinPos[2] - $iMargin Then $iSide = 2 If $aCurInfo[1] < $iMargin Then $iTopBot = 3 If $aCurInfo[1] > $aWinPos[3] - $iMargin Then $iTopBot = 6 Return $iSide + $iTopBot EndFunc ;==>_Check_Border Func On_Exit() Exit EndFunc Edited April 3, 2017 by mikell Verssuss 1
Verssuss Posted April 4, 2017 Author Posted April 4, 2017 (edited) txh bro. works perfect EDIT: Almost perfect... u added in scrpit GUIRegisterMsg($WM_MOUSEMOVE, "_SetCursor") ; For cursor type change GUIRegisterMsg($WM_LBUTTONDOWN, "_WM_LBUTTONDOWN") ; For resize/drag so after i done that box function, GUIRegisterMsg($WM_MOUSEMOVE, "_SetCursor") and GUIRegisterMsg($WM_LBUTTONDOWN, "_WM_LBUTTONDOWN") still exist for whole script. how to set this function back after i finish box one ??? i mean how UNREGISTER this. or just set this function working only for box gui PLZ HELP EDIT DONE i have another small problem. code is working perfect (guess) but im sure can do it much easier needed: Crate box, resize it by hotkeys any suggestion how do it easier way ??? expandcollapse popup#include <GuiConstantsEx.au3> #include <WindowsConstants.au3> #Include <ScreenCapture.au3> #Include <Misc.au3> HotKeySet("{ESC}", "On_Exit") $GUI = GUICreate("Clicker", 100, 100,-1,-1) GUISetState() $button_get_image = GUICtrlCreateButton("get box", -1,-1) $size = 100 Local $hGui ; Local ?? Global ?? i dont get it what is right While 1 $pos = MouseGetPos() Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit Case $button_get_image _getimg() EndSwitch WEnd Func _getimg() HotKeySet("{[}", "_boxminus") HotKeySet("{]}", "_boxplus") GUISetState(@SW_MINIMIZE, $GUI) Global $hGUI = GUICreate(" Test", $size, $size, $pos[0] - ($size / 2), $pos[1] - ($size / 2), $WS_POPUP,-1,$GUI) GUISetBkColor(0xff0000, $hGUI) GUISetState() _GDIPlus_Startup() $aPos = WinGetPos($hGUI) $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddRectangle($hPath, 0, 0, $aPos[2], $aPos[3]) $hReg = _GDIPlus_RegionCreateFromPath($hPath) $hReg2 = _GDIPlus_RegionCreateFromRect(3, 3, $aPos[2] - 6, $aPos[3] - 6) _GDIPlus_RegionCombineRegion($hReg, $hReg2, 3) $hRGN = _GDIPlus_RegionGetHRgn($hReg) _WinAPI_SetWindowRgn($hGUI, $hRGN) _WinAPI_DeleteObject($hRGN) _GDIPlus_RegionDispose($hReg) _GDIPlus_RegionDispose($hReg2) _GDIPlus_PathDispose($hPath) _GDIPlus_Shutdown() $lupa_aktywna = True While $lupa_aktywna = True $pos = MouseGetPos() WinMove($hGUI, "", $pos[0] - ($size / 2), $pos[1] - ($size / 2), $size, $size) While _IsPressed('01') GUISetState(@SW_HIDE, $hGUI) $lupa_aktywna = False HotKeySet("[") HotKeySet("]") WEnd WEnd EndFunc ;==> crate box Func _boxminus() If $size >= 30 Then $size = $size - 10 If $size < 30 Then $size = $size - 1 WinMove($hGUI, "", $pos[0] - ($size / 2), $pos[1] - ($size / 2), $size, $size) _GDIPlus_Startup() $aPos = WinGetPos($hGUI) $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddRectangle($hPath, 0, 0, $aPos[2], $aPos[3]) $hReg = _GDIPlus_RegionCreateFromPath($hPath) $hReg2 = _GDIPlus_RegionCreateFromRect(3, 3, $aPos[2] - 6, $aPos[3] - 6) _GDIPlus_RegionCombineRegion($hReg, $hReg2, 3) $hRGN = _GDIPlus_RegionGetHRgn($hReg) _WinAPI_SetWindowRgn($hGUI, $hRGN) _WinAPI_DeleteObject($hRGN) _GDIPlus_RegionDispose($hReg) _GDIPlus_RegionDispose($hReg2) _GDIPlus_PathDispose($hPath) _GDIPlus_Shutdown() EndFunc Func _boxplus() $size = $size + 10 WinMove($hGUI, "", $pos[0] - ($size / 2), $pos[1] - ($size / 2), $size, $size) _GDIPlus_Startup() $aPos = WinGetPos($hGUI) $hPath = _GDIPlus_PathCreate() _GDIPlus_PathAddRectangle($hPath, 0, 0, $aPos[2], $aPos[3]) $hReg = _GDIPlus_RegionCreateFromPath($hPath) $hReg2 = _GDIPlus_RegionCreateFromRect(3, 3, $aPos[2] - 6, $aPos[3] - 6) $aPos = WinGetPos($hGUI) _GDIPlus_RegionCombineRegion($hReg, $hReg2, 3) $hRGN = _GDIPlus_RegionGetHRgn($hReg) _WinAPI_SetWindowRgn($hGUI, $hRGN) _WinAPI_DeleteObject($hRGN) _GDIPlus_RegionDispose($hReg) _GDIPlus_RegionDispose($hReg2) _GDIPlus_PathDispose($hPath) _GDIPlus_Shutdown() EndFunc Func On_Exit() Exit EndFunc Edited April 4, 2017 by Verssuss
mikell Posted April 4, 2017 Posted April 4, 2017 Your requirements are changing. To avoid a waste of time please define clearly once for all what you want to achieve
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now