Что нового

Пример создания скина для вашей программы

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
AutoIt: 3.
Версия: 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
Файл: GUIAutoit Skin.rar.html

Снимок:

Источник:Русское сообщество AutoIt

Автор(ы): Sergey2210

Благодарю за помошь при создании этого скрипта Yashied'а
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Одно замечание. Я не являюсь автором. Если хочешь, то можешь написать в "Благодарности", но
не в "Автор(ы)".

;)
 

LightDemon

Новичок
Сообщения
24
Репутация
1
выдает ошибку...
Код:
D:\Documents and Settings\Admin\??????? ????\gui2.au3 (4) : ==> Error opening the file.: 
#include "GUICtrlOnHover.au3"
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
LightDemon

Не хватает в папке Include
GUICtrlOnHover.au3 ?
 

LightDemon

Новичок
Сообщения
24
Репутация
1
А где его достать можно? На форуме не нашел...
 
Верх