Sergey2210
Осваивающий
- Сообщения
- 263
- Репутация
- 31
AutoIt: 3.
Версия: 3.
Категория: Окна и диалоги
Описание: Пример создания скина для вашей программы,с прозрачностью рамки.
Код/Пример:
Файл: GUIAutoit Skin.rar.html
Снимок:
Источник:Русское сообщество AutoIt
Автор(ы): Sergey2210
Благодарю за помошь при создании этого скрипта Yashied'а
Версия: 3.
Категория: Окна и диалоги
Описание: Пример создания скина для вашей программы,с прозрачностью рамки.
Код/Пример:
Код:
#include <GUIConstantsEx.au3>
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#include "GUICtrlOnHover.au3"
Global $skin = @ScriptDir & "\skin\skin.ini"
Global $window = @ScriptDir & "\GUISetting.ini"
If Not FileExists($skin) Then
MsgBox(64,"Ошибка","Не удаётся найти файл: skin.ini")
exit
EndIf
If Not FileExists($window) Then
MsgBox(64,"Ошибка","Не удаётся найти файл: GUISetting.ini")
exit
EndIf
Global $title = IniRead($window,"window","title",'')
Global $width = IniRead($window,"window","width",'')
Global $height = IniRead($window,"window","height",'')
Global $trans = IniRead($window,"window","trans",'')
Global $titlebar = IniRead($skin,"skin_window","titlebar",'')
Global $background = IniRead($skin,"skin_window","background",'')
Global $window_1 = IniRead($skin,"skin_window","general",'')
Global $close_button = IniRead($skin,"close_button","close",'')
Global $close_button_hover = IniRead($skin,"close_button","hover",'')
Global $close_button_click = IniRead($skin,"close_button","click",'')
Global $min_button = IniRead($skin,"min_button","min",'')
Global $min_button_hover = IniRead($skin,"min_button","hover",'')
Global $min_button_click = IniRead($skin,"min_button","click",'')
Global $hGUI = 0
Global $CloseClicked = False
Global $MinClicked = False
$hTrans = GUICreate($title, $Width, $Height, -1, -1,$WS_POPUP)
_corners(0, 0, 20, 20)
GUICtrlCreatePic(@ScriptDir & $titlebar, 0, 0, $Width, 49, -1, $GUI_WS_EX_PARENTDRAG)
GUICtrlSetState(-1,$GUI_DISABLE)
GUICtrlCreatePic(@ScriptDir & $background , 0, 49, $Width, $Height-49, -1, $GUI_WS_EX_PARENTDRAG)
GUICtrlSetState(-1,$GUI_DISABLE)
$move = GUICtrlCreateLabel("", 0, 0, $Width - 50, 49, $WS_CLIPSIBLINGS, $GUI_WS_EX_PARENTDRAG)
GUICtrlSetCursor ($move, 3)
$min = GUICtrlCreatePic(@ScriptDir & $min_button, $Width - 45, 15, 14, 14)
GUICtrlSetTip ($min,"Свернуть")
_GUICtrl_OnHoverRegister(-1, "_Hover_Proc", "_Leave_Hover_Proc", "PrimaryDown_Proc", "PrimaryUp_Proc")
$close = GUICtrlCreatePic(@ScriptDir & $close_button, $Width - 25, 15, 14, 14)
GUICtrlSetTip ($close, "Закрыть")
_GUICtrl_OnHoverRegister(-1, "_Hover_Proc", "_Leave_Hover_Proc", "PrimaryDown_Proc", "PrimaryUp_Proc")
GUIRegisterMsg($WM_ACTIVATE, 'WM_ACTIVATE')
GUIRegisterMsg($WM_MOVE, 'WM_MOVE')
GUISetState(@SW_SHOW)
WinSetTrans($hTrans,"",$trans)
$PoshTrans = WinGetPos($hTrans)
$hGUI = GUICreate("", $Width - 16, $Height - 59, -1, $PoshTrans[1] + 49 , $WS_POPUP, -1, $hTrans)
$main = GUICtrlCreatePic(@ScriptDir & $window_1, 0, 0, $Width - 16, $Height - 59)
GUICtrlSetState($main,$GUI_DISABLE)
GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
If $CloseClicked Then
$CloseClicked = False
Exit
EndIf
If $MinClicked Then
$MinClicked = False
GUISetState(@SW_MINIMIZE, $hTrans)
EndIf
WEnd
Func _Hover_Proc($iCtrlID)
Switch $iCtrlID
Case $close
GUICtrlSetImage($iCtrlID, @ScriptDir & $close_button_hover)
Case $min
GUICtrlSetImage($iCtrlID, @ScriptDir & $min_button_hover)
EndSwitch
EndFunc
Func _Leave_Hover_Proc($iCtrlID)
Switch $iCtrlID
Case $close
GUICtrlSetImage($iCtrlID, @ScriptDir & $close_button)
Case $Min
GUICtrlSetImage($iCtrlID, @ScriptDir & $min_button)
EndSwitch
EndFunc
Func PrimaryDown_Proc($iCtrlID)
Switch $iCtrlID
Case $close
GUICtrlSetImage($iCtrlID, @ScriptDir & $close_button_click)
Case $min
GUICtrlSetImage($iCtrlID, @ScriptDir & $min_button_click)
;$PlayIsClicked = True
EndSwitch
EndFunc
Func PrimaryUp_Proc($iCtrlID)
Switch $iCtrlID
Case $close
GUICtrlSetImage($iCtrlID, @ScriptDir & $close_button_hover)
$CloseClicked = True
Case $Min
GUICtrlSetImage($iCtrlID, @ScriptDir & $min_button_hover)
$MinClicked = True
EndSwitch
EndFunc
Func _corners($x1,$y1,$x2,$y2)
$pos = WinGetPos($hTrans)
$ret = DllCall("gdi32.dll", "long", "CreateRoundRectRgn", "long", $x1, "long", $y1, "long", $pos[2], "long", $pos[2], "long",$x2, "long", $y2)
If $ret[0] Then
$ret2 = DllCall("user32.dll", "long", "SetWindowRgn", "hwnd", $hTrans, "long", $ret[0], "int", 1)
If $ret2[0] Then
Return 1
Else
Return 0
EndIf
EndIf
EndFunc
Func WM_ACTIVATE($hWnd, $iMsg, $wParam, $lParam)
Switch BitAND($wParam, 0xFFFF)
Case 1, 2
Switch $hWnd
Case $hTrans
If BitAND(WinGetState($hGUI), 2) = 2 Then
WinSetOnTop($hGUI, '', 1)
WinSetOnTop($hGUI, '', 0)
EndIf
Case $hGUI
WinSetOnTop($hTrans, '', 1)
WinSetOnTop($hTrans, '', 0)
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc
Func WM_MOVE($hWndGUI)
Local $aParentPos = WinGetPos($hTrans), $aChildPos = WinGetPos($hGUI)
If $hWndGUI = $hTrans Then
WinMove($hGUI, "", $aParentPos[0] + 8, $aParentPos[1] + 49)
EndIf
EndFunc
Снимок:
Источник:Русское сообщество AutoIt
Автор(ы): Sergey2210
Благодарю за помошь при создании этого скрипта Yashied'а