Sergey2210
Осваивающий
- Сообщения
- 263
- Репутация
- 31
Версия Autoit:3
Помогите разобраться,почему скрипт вылетает,в скрипте два окна,при перемещении одного,перемещается и дочернее по темже координатам,иногда происходит что скрипт разлетается во все все стороны...
Для того чтоб было более понятно,вот ссылка на архив с примером:http://narod.ru/disk/8178930001/GUISkin.rar.html
Помогите разобраться,почему скрипт вылетает,в скрипте два окна,при перемещении одного,перемещается и дочернее по темже координатам,иногда происходит что скрипт разлетается во все все стороны...
Код:
#Include <GDIPlus.au3>
#Include <GUIConstantsEx.au3>
#Include <UDF\WinAPIEx.au3>
#Include <WindowsConstants.au3>
#include "UDF\GUICtrlOnHover.au3"
Global $CloseClicked = False
Global $sImages_Path = @ScriptDir & "\Skin"
_GDIPlus_Startup()
$hPng = _GDIPlus_BitmapCreateFromFile(@ScriptDir & '\skin\main.png')
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hPng)
_GDIPlus_BitmapDispose($hPng)
_GDIPlus_ShutDown()
$hTrans = GUICreate('', 607, 376, -1, -1, $WS_POPUP, $WS_EX_LAYERED)
$hForm = GUICreate('', 600, 370, -1, -1, $WS_POPUP, $WS_EX_LAYERED, $hTrans)
$Trans = GUICtrlCreateLabel("", 0, 0, 600, 370)
GUICtrlSetBkColor(-1, 0xFF00DC)
_WinAPI_SetLayeredWindowAttributes($hForm, 0xFF00DC)
GUICtrlSetState($Trans, $GUI_DISABLE)
$hNew = GUICtrlCreatePic(@ScriptDir & "\skin\new.gif",560,0,39,38)
GUICtrlSetState($hNew, $GUI_DISABLE)
$hMenu = GUICtrlCreatePic(@ScriptDir & "\skin\menu.gif",55,300,490,50)
GUICtrlSetState($hMenu, $GUI_DISABLE)
$examle = GUICtrlCreatePic($sImages_Path & "\but0.gif",434,314,98,23)
GUICtrlSetCursor ($examle, 0)
_GUICtrl_OnHoverRegister(-1, "_Hover_Proc", "_Leave_Hover_Proc", "PrimaryDown_Proc", "PrimaryUp_Proc")
GUIRegisterMsg($WM_NCHITTEST, 'WM_NCHITTEST')
GUIRegisterMsg($WM_MOVE, 'WM_MOVE')
_WinAPI_UpdateLayeredWindowEx($hTrans, -1, -1, $hBitmap, 200)
_WinAPI_SetLayeredWindowAttributes($hForm, 0xFF00DC, 255)
GUISetState(@SW_SHOW, $hTrans)
GUISetState(@SW_SHOW, $hForm)
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
If $CloseClicked Then
$CloseClicked = False
MsgBox(64, ":)", "Пока...!")
Exit
EndIf
Wend
Func _Hover_Proc($iCtrlID)
Switch $iCtrlID
Case $examle
GUICtrlSetImage($iCtrlID, $sImages_Path & "\but1.gif")
EndSwitch
EndFunc
Func _Leave_Hover_Proc($iCtrlID)
Switch $iCtrlID
Case $examle
GUICtrlSetImage($iCtrlID, $sImages_Path & "\but0.gif")
EndSwitch
EndFunc
Func PrimaryDown_Proc($iCtrlID)
Switch $iCtrlID
Case $examle
GUICtrlSetImage($iCtrlID, $sImages_Path & "\but2.gif")
;$PlayIsClicked = True
EndSwitch
EndFunc
Func PrimaryUp_Proc($iCtrlID)
Switch $iCtrlID
Case $examle
GUICtrlSetImage($iCtrlID, $sImages_Path & "\but1.gif")
$CloseClicked = True
EndSwitch
EndFunc
Func WM_MOVE($hWnd, $iMsg, $wParam, $lParam)
Switch $hWnd
Case $hTrans
Local $Pos = WinGetPos($hTrans)
If IsArray($Pos) Then
WinMove($hForm, '', $Pos[0]+5, $Pos[1]+4)
EndIf
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_MOVE
Func WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam)
Switch $hWnd
Case $hTrans
Switch $iMsg
Case $WM_NCHITTEST
Return $HTCAPTION
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NCHITTEST
Для того чтоб было более понятно,вот ссылка на архив с примером:http://narod.ru/disk/8178930001/GUISkin.rar.html