Что нового

Смена скина программы

Yoshiyuki

Новичок
Сообщения
40
Репутация
0
Здравствуйте, хочу сделать что бы при выборе в Combo менялись две картинки
Код:
#Include <ComboConstants.au3>
#Include <GDIPlus.au3>
#Include <GUIConstantsEx.au3>
#Include <WinAPIEx.au3>
#RequireAdmin

FileInstall("C:\Users\UnderTheCross\Desktop\1.png",@TempDir & '\1.png')
FileInstall("C:\Users\UnderTheCross\Desktop\1.bmp",@TempDir & '\1.bmp')

Global Const $SC_DRAGMOVE = 0xF012
_GDIPlus_Startup()
$hPng = _GDIPlus_ImageLoadFromFile(@TempDir & '\1.png')
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hPng)
$hParent = GUICreate('', 798, 424, -1, -1, $WS_POPUP, $WS_EX_LAYERED)
_WinAPI_UpdateLayeredWindowEx($hParent, -1, -1, $hBitmap, 255, 1)
_GDIPlus_ImageDispose($hPng)
_GDIPlus_Shutdown()

$hForm = GUICreate('', 700, 400, -1, -1, $WS_POPUP, -1, $hParent)
GUICtrlCreatePic(@TempDir & '\1.bmp', 0, 0, 779, 407)
GUICtrlSetState(-1, $GUI_DISABLE)
;Функций 1 стр
$Checkbox = GUICtrlCreateCheckbox("", 25, 230, 16, 17)
GUICheckBoxSetColor($Checkbox,0x000000,$GUI_BKCOLOR_TRANSPARENT )
$Checkbox_ = GUICtrlCreateLabel("ЧекБокс", 42, 231, 100, 17)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1, 0xFFFFFF)

;/Функций 1 стр
;Функций 2 стр
;/Функций 2 стр
;Кнопки
;/Кнопки
GUIRegisterMsg($WM_MOVE, 'WM_MOVE')
GUIRegisterMsg($WM_NCHITTEST, 'WM_NCHITTEST')
WM_MOVE($hParent, $WM_MOVE, 0, 0)
GUISetState(@SW_SHOW, $hParent)
GUISetState(@SW_SHOW, $hForm)

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
		Case $Checkbox_
			ControlClick($hForm,"",$Checkbox)
    EndSwitch
WEnd

Func WM_MOVE($hWnd, $iMsg, $wParam, $lParam)
    Switch $hWnd
        Case $hParent

            Local $Pos = WinGetPos($hParent)

            If IsArray($Pos) Then
                WinMove($hForm, '', $Pos[0] + 5, $Pos[1] + 5)
            EndIf
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_MOVE

Func WM_NCHITTEST($hWnd, $iMsg, $wParam, $lParam)
    Switch $hWnd
        Case $hForm
            _SendMessage($hParent, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0)
        Case $hParent
            Return $HTCAPTION
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NCHITTEST

Func GUICheckBoxSetColor(ByRef $CtrlID,$iColor,$iBkColor="0xF1EDED")
    $CtrlHWnd = $CtrlID
    If Not IsHWnd($CtrlHWnd) Then $CtrlHWnd = GUICtrlGetHandle($CtrlID)
    $aParent = DllCall("user32.dll", "hwnd", "GetParent", "hwnd", $CtrlHWnd)
    $aCPos = ControlGetPos($aParent[0],"",$CtrlID)
    $sOldT = GUICtrlRead($CtrlID,1)
    GUICtrlDelete($CtrlID)
    DllCall('uxtheme.dll', 'none', 'SetThemeAppProperties', 'int', 0)
    $CtrlID = GUICtrlCreateCheckbox($sOldT,$aCPos[0],$aCPos[1],$aCPos[2],$aCPos[3])
    GUICtrlSetColor(-1,$iColor)
    GUICtrlSetBkColor(-1,$iBkColor)
    DllCall('uxtheme.dll', 'none', 'SetThemeAppProperties', 'int', 7)
EndFunc

Нужно в этих строках изменить картинки на другие
Код:
$hPng = _GDIPlus_ImageLoadFromFile(@TempDir & '\1.png')

Код:
GUICtrlCreatePic(@TempDir & '\1.bmp', 0, 0, 779, 407)

Как это можно релиазовать? Пробывал сам но ничего пустного не получилось
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Выложите файлы картинок.
 
Автор
Y

Yoshiyuki

Новичок
Сообщения
40
Репутация
0
Картинки - http://rghost.ru/38448274
Картинок для второго скина нету, они пока не нужны, главное сделать смены, если все же получиться, то сделаю))
 
Автор
Y

Yoshiyuki

Новичок
Сообщения
40
Репутация
0
Код:
#Include <ComboConstants.au3>
#Include <GDIPlus.au3>
#Include <GUIConstantsEx.au3>
#Include <WinAPIEx.au3>
#RequireAdmin

FileInstall("C:\Users\UnderTheCross\Desktop\League\DarkSpiritTrainer\1.png",@TempDir & '\1.png')
FileInstall("C:\Users\UnderTheCross\Desktop\League\DarkSpiritTrainer\1.bmp",@TempDir & '\1.bmp')

Global Const $SC_DRAGMOVE = 0xF012
_GDIPlus_Startup()

$hPng = _GDIPlus_ImageLoadFromFile(@TempDir & '\1.png')
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hPng)
$hParent = GUICreate('', 798, 424, -1, -1, $WS_POPUP, $WS_EX_LAYERED)
_WinAPI_UpdateLayeredWindowEx($hParent, -1, -1, $hBitmap, 255, 1)
_GDIPlus_ImageDispose($hPng)
_GDIPlus_Shutdown()

$hForm = GUICreate('', 700, 400, -1, -1, $WS_POPUP, -1, $hParent)
GUICtrlCreatePic(@TempDir & '\1.bmp', 0, 0, 779, 407)
GUICtrlSetState(-1, $GUI_DISABLE)

$hComb = GUICtrlCreateCombo("", 250, 15, 110, 150)
GUICtrlSetData(-1, "1|2", "1")

;Функций 1 стр
$Checkbox = GUICtrlCreateCheckbox("", 25, 230, 16, 17)
GUICheckBoxSetColor($Checkbox,0x000000,$GUI_BKCOLOR_TRANSPARENT )
$Checkbox_ = GUICtrlCreateLabel("ЧекБокс", 42, 231, 100, 17)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1, 0xFFFFFF)

$hPng2 = _GDIPlus_ImageLoadFromFile(@TempDir & '\2.png')
$hBitmap2 = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hPng2)
$hParent2 = GUICreate('', 798, 424, -1, -1, $WS_POPUP, $WS_EX_LAYERED)
_WinAPI_UpdateLayeredWindowEx($hParent2, -1, -1, $hBitmap2, 255, 1)
_GDIPlus_ImageDispose($hPng)
_GDIPlus_Shutdown()

$hForm2 = GUICreate('', 700, 400, -1, -1, $WS_POPUP, -1, $hParent2)
GUICtrlCreatePic(@TempDir & '\2.bmp', 0, 0, 779, 407)
GUICtrlSetState(-1, $GUI_DISABLE)

$hComb2 = GUICtrlCreateCombo("", 250, 15, 110, 150)
GUICtrlSetData(-1, "2|1", "2")

$Checkbox = GUICtrlCreateCheckbox("", 25, 230, 16, 17)
GUICheckBoxSetColor($Checkbox,0x000000,$GUI_BKCOLOR_TRANSPARENT )
$Checkbox_ = GUICtrlCreateLabel("ЧекБокс", 42, 231, 100, 17)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1, 0xFFFFFF)


;/Функций 1 стр
;Функций 2 стр
;/Функций 2 стр
;Кнопки
;/Кнопки
GUISetState(@SW_HIDE, $hParent2)
GUISetState(@SW_HIDE, $hForm2)
GUISetState(@SW_SHOW, $hParent)
GUISetState(@SW_SHOW, $hForm)
GUIRegisterMsg($WM_MOVE, 'WM_MOVE')
GUIRegisterMsg($WM_NCHITTEST, 'WM_NCHITTEST')
WM_MOVE($hParent, $WM_MOVE, 0, 0)

While 1
    $msg = GUIGetMsg()
    Switch $msg
	Case $GUI_EVENT_CLOSE
		Exit
	Case $hComb
            $selected = GUICtrlRead($hComb)            
            Switch $selected
                Case "1"

				Case "2"
				    GUISetState(@SW_HIDE, $hParent)
					GUISetState(@SW_HIDE, $hForm)
					GUISetState(@SW_SHOW, $hParent2)
					GUISetState(@SW_SHOW, $hForm2)
				EndSwitch   
	Case $hComb2
            $selected = GUICtrlRead($hComb2)            
            Switch $selected
                Case "2"

				Case "1"
					GUISetState(@SW_SHOW, $hParent)
					GUISetState(@SW_SHOW, $hForm)
					GUISetState(@SW_HIDE, $hParent2)
					GUISetState(@SW_HIDE, $hForm2)
            EndSwitch   
    EndSwitch
WEnd


Func WM_MOVE($hWnd, $iMsg, $wParam, $lParam)
    Switch $hWnd
        Case $hParent

            Local $Pos = WinGetPos($hParent)

            If IsArray($Pos) Then
                WinMove($hForm, '', $Pos[0] + 5, $Pos[1] + 5)
            EndIf
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_MOVE

Func WM_NCHITTEST($hWnd, $iMsg, $wParam, $lParam)
    Switch $hWnd
        Case $hForm
            _SendMessage($hParent, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0)
        Case $hParent
            Return $HTCAPTION
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NCHITTEST

Func GUICheckBoxSetColor(ByRef $CtrlID,$iColor,$iBkColor="0xF1EDED")
    $CtrlHWnd = $CtrlID
    If Not IsHWnd($CtrlHWnd) Then $CtrlHWnd = GUICtrlGetHandle($CtrlID)
    $aParent = DllCall("user32.dll", "hwnd", "GetParent", "hwnd", $CtrlHWnd)
    $aCPos = ControlGetPos($aParent[0],"",$CtrlID)
    $sOldT = GUICtrlRead($CtrlID,1)
    GUICtrlDelete($CtrlID)
    DllCall('uxtheme.dll', 'none', 'SetThemeAppProperties', 'int', 0)
    $CtrlID = GUICtrlCreateCheckbox($sOldT,$aCPos[0],$aCPos[1],$aCPos[2],$aCPos[3])
    GUICtrlSetColor(-1,$iColor)
    GUICtrlSetBkColor(-1,$iBkColor)
    DllCall('uxtheme.dll', 'none', 'SetThemeAppProperties', 'int', 7)
EndFunc

Но этот способ не очень хороший
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Вот так не работает:

Код:
#include <GUIConstantsEx.au3>
#include <ComboConstants.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#include <WinAPIEx.au3>

#RequireAdmin

FileInstall("1.png", @TempDir & '\1.png')
FileInstall("1.bmp", @TempDir & '\1.bmp')

Global Const $SC_DRAGMOVE = 0xF012

$hParent = GUICreate('', 798, 424, -1, -1, $WS_POPUP, $WS_EX_LAYERED)
_GUISetBG($hParent, @TempDir & '\1.png')

$hForm = GUICreate('', 700, 400, -1, -1, $WS_POPUP, -1, $hParent)
GUICtrlCreatePic(@TempDir & '\1.bmp', 0, 0, 779, 407)
GUICtrlSetState(-1, $GUI_DISABLE)

$hComb = GUICtrlCreateCombo("", 250, 15, 110, 150, BitOR($GUI_SS_DEFAULT_COMBO, $CBS_DROPDOWNLIST))
GUICtrlSetData(-1, "1|2", "1")

$Checkbox = GUICtrlCreateCheckbox("", 25, 230, 16, 17)
GUICheckBoxSetColor($Checkbox, 0x000000, $GUI_BKCOLOR_TRANSPARENT)
$Checkbox_ = GUICtrlCreateLabel("ЧекБокс", 42, 231, 100, 17)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1, 0xFFFFFF)

GUISetState(@SW_SHOW, $hParent)
GUISetState(@SW_SHOW, $hForm)
GUIRegisterMsg($WM_MOVE, 'WM_MOVE')
GUIRegisterMsg($WM_NCHITTEST, 'WM_NCHITTEST')
WM_MOVE($hParent, $WM_MOVE, 0, 0)

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
		Case $hComb
			Switch GUICtrlRead($hComb)
				Case "1"
					_GUISetBG($hParent, @TempDir & '\1.png')
				Case "2"
					_GUISetBG($hParent, @TempDir & '\2.png')
			EndSwitch
	EndSwitch
WEnd

Func _GUISetBG($hWnd, $sBGFile)
	_GDIPlus_Startup()
	
	$hImage = _GDIPlus_ImageLoadFromFile($sBGFile)
	$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
	
	_WinAPI_UpdateLayeredWindowEx($hWnd, -1, -1, $hBitmap, 255, 1)
	
	_GDIPlus_ImageDispose($hImage)
	_GDIPlus_Shutdown()
EndFunc

Func WM_MOVE($hWnd, $iMsg, $wParam, $lParam)
	Switch $hWnd
		Case $hParent
			Local $Pos = WinGetPos($hParent)
			
			If IsArray($Pos) Then
				WinMove($hForm, '', $Pos[0] + 5, $Pos[1] + 5)
			EndIf
	EndSwitch
	
	Return $GUI_RUNDEFMSG
EndFunc

Func WM_NCHITTEST($hWnd, $iMsg, $wParam, $lParam)
	Switch $hWnd
		Case $hForm
			_SendMessage($hParent, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0)
		Case $hParent
			Return $HTCAPTION
	EndSwitch
	
	Return $GUI_RUNDEFMSG
EndFunc

Func GUICheckBoxSetColor(ByRef $CtrlID, $iColor, $iBkColor = "0xF1EDED")
	$CtrlHWnd = $CtrlID
	If Not IsHWnd($CtrlHWnd) Then $CtrlHWnd = GUICtrlGetHandle($CtrlID)
	$aParent = DllCall("user32.dll", "hwnd", "GetParent", "hwnd", $CtrlHWnd)
	$aCPos = ControlGetPos($aParent[0], "", $CtrlID)
	$sOldT = GUICtrlRead($CtrlID, 1)
	GUICtrlDelete($CtrlID)
	DllCall('uxtheme.dll', 'none', 'SetThemeAppProperties', 'int', 0)
	$CtrlID = GUICtrlCreateCheckbox($sOldT, $aCPos[0], $aCPos[1], $aCPos[2], $aCPos[3])
	GUICtrlSetColor(-1, $iColor)
	GUICtrlSetBkColor(-1, $iBkColor)
	DllCall('uxtheme.dll', 'none', 'SetThemeAppProperties', 'int', 7)
EndFunc


?
:scratch:
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Yoshiyuki [?]
Я так понял нужно сменить фон GUI?
Тогда мне нужны две картинки для переключения, с которыми можно работать.
 
Автор
Y

Yoshiyuki

Новичок
Сообщения
40
Репутация
0
Да, за фон гуи твечают
Код:
$hPng = _GDIPlus_ImageLoadFromFile(@TempDir & '\1.png')

Код:
GUICtrlCreatePic(@TempDir & '\1.bmp', 0, 0, 779, 407)

Вот картинки для смены http://rghost.ru/38483840 изменил просто шрифт
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Код:
#include <GUIConstantsEx.au3>
#include <ComboConstants.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#include <WinAPIEx.au3>

#RequireAdmin

FileInstall("1.png", @TempDir & '\1.png', 1)
FileInstall("2.png", @TempDir & '\2.png', 1)
FileInstall("1.bmp", @TempDir & '\1.bmp', 1)
FileInstall("2.bmp", @TempDir & '\2.bmp', 1)

Global Const $SC_DRAGMOVE = 0xF012

$hParent = GUICreate('', 798, 424, -1, -1, $WS_POPUP, $WS_EX_LAYERED)
_GUISetPng($hParent, @TempDir & '\1.png')

$hForm = GUICreate('', 788, 414, -1, -1, $WS_POPUP, -1, $hParent)
$Pic = GUICtrlCreatePic(@TempDir & '\1.bmp', 0, 0, 788, 414)
GUICtrlSetState(-1, $GUI_DISABLE)

$hComb = GUICtrlCreateCombo("", 250, 15, 110, 150, BitOR($GUI_SS_DEFAULT_COMBO, $CBS_DROPDOWNLIST))
GUICtrlSetData(-1, "1|2", "1")

$Checkbox = GUICtrlCreateCheckbox("", 25, 230, 16, 17)
GUICheckBoxSetColor($Checkbox, 0x000000, $GUI_BKCOLOR_TRANSPARENT)
$Checkbox_ = GUICtrlCreateLabel("ЧекБокс", 42, 231, 100, 17)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1, 0xFFFFFF)

WM_MOVE($hParent, $WM_MOVE, 0, 0)
GUIRegisterMsg($WM_MOVE, 'WM_MOVE')
GUIRegisterMsg($WM_NCHITTEST, 'WM_NCHITTEST')

GUISetState(@SW_SHOW, $hParent)
GUISetState(@SW_SHOW, $hForm)

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $hComb
            Switch GUICtrlRead($hComb)
                Case "1"
                    _GUISetPng($hParent, @TempDir & '\1.png')
					GUICtrlSetImage($Pic, @TempDir & '\1.bmp')
                Case "2"
                    _GUISetPng($hParent, @TempDir & '\2.png')
					GUICtrlSetImage($Pic, @TempDir & '\2.bmp')
            EndSwitch
    EndSwitch
WEnd

Func _GUISetPng($hWnd, $sBGFile)
    _GDIPlus_Startup()
    
    $hImage = _GDIPlus_ImageLoadFromFile($sBGFile)
    $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
    
    _WinAPI_UpdateLayeredWindowEx($hWnd, -1, -1, $hBitmap, 255, 1)
    
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_Shutdown()
EndFunc

Func WM_MOVE($hWnd, $iMsg, $wParam, $lParam)
    Switch $hWnd
        Case $hParent
            Local $Pos = WinGetPos($hParent)
            
            If IsArray($Pos) Then
                WinMove($hForm, '', $Pos[0] + 5, $Pos[1] + 5)
            EndIf
    EndSwitch
    
    Return $GUI_RUNDEFMSG
EndFunc

Func WM_NCHITTEST($hWnd, $iMsg, $wParam, $lParam)
    Switch $hWnd
        Case $hForm
            _SendMessage($hParent, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0)
        Case $hParent
            Return $HTCAPTION
    EndSwitch
    
    Return $GUI_RUNDEFMSG
EndFunc

Func GUICheckBoxSetColor(ByRef $CtrlID, $iColor, $iBkColor = "0xF1EDED")
    $CtrlHWnd = $CtrlID
    If Not IsHWnd($CtrlHWnd) Then $CtrlHWnd = GUICtrlGetHandle($CtrlID)
    $aParent = DllCall("user32.dll", "hwnd", "GetParent", "hwnd", $CtrlHWnd)
    $aCPos = ControlGetPos($aParent[0], "", $CtrlID)
    $sOldT = GUICtrlRead($CtrlID, 1)
    GUICtrlDelete($CtrlID)
    DllCall('uxtheme.dll', 'none', 'SetThemeAppProperties', 'int', 0)
    $CtrlID = GUICtrlCreateCheckbox($sOldT, $aCPos[0], $aCPos[1], $aCPos[2], $aCPos[3])
    GUICtrlSetColor(-1, $iColor)
    GUICtrlSetBkColor(-1, $iBkColor)
    DllCall('uxtheme.dll', 'none', 'SetThemeAppProperties', 'int', 7)
EndFunc
 
G

GenoTIP

Гость
а можно пример наложения картинки на Combo, одна картинка в нетронутом виде и одна внутри при выпадающем списке?
 
Автор
Y

Yoshiyuki

Новичок
Сообщения
40
Репутация
0
Спасибо работает как нужно
И только сейчас заметил что фон не убрал)
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
GenoTIP [?]
можно пример наложения картинки на Combo
Не по теме.
В любом случая задача не из простых (не уверен даже что реализуема).
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Yoshiyuki [?]
работает как нужно

[info border=#0000ff float=left]На форуме принято помечать тему решенной после получения ответа на свой вопрос!
Вверху или внизу темы нажмите на ссылку такого вида:
package_old.gif
Тема не решена
[/info]
 
Автор
Y

Yoshiyuki

Новичок
Сообщения
40
Репутация
0
Извеняюсь, забыл, хотел написать и нажать, но отвлекся и забыл)
 
Верх