CatLab Studio
article thumbnail

기존 오토핫키의 Picture GUI의 이미지를 마우스 호버와 클릭시 변경할 수 있도록 해주는 라이브러리입니다.

 

작동 예시

 

ImageButton Effects.ahk
0.00MB
ImageButton Effects Library Example.zip
0.01MB

 

;==================================================================================
; 파일명 : ImageButton Effects.ahk
; 설명 : 이미지버튼 마우스 효과 추가 라이브러리
; 버전: v1.0
; 라이센스: CC BY-SA 3.0 (https://creativecommons.org/licenses/by-sa/3.0/deed.ko)
; 설치방법: #Include ImageButton Effects.ahk
; 제작자: https://catlab.tistory.com/ (fty816@gmail.com)
;==================================================================================


class ImageButtonChange
{	
	;==================================================================================
	; 객체생성 :
	; Obj := new ImageButtonChange(Picutre 변수, 마우스 호버 후 이미지, [마우스 클릭 후 이미지])
	; 이미지교체 :
	; Obj.ReplaceImage(마우스 호버 전 이미지, 마우스 호버 후 이미지, [마우스 클릭 후 이미지])
	; 제거 :
	; Obj.Destroy()
	;==================================================================================
	
	static ButtonState := 0
	
	__New(ButtonVar, HoverImage, PressImage:="")
	{
		this.HoverImage := HoverImage
		this.PressImage := PressImage
		
		GuiControlGet, OriPic, , % ButtonVar
		GuiControlGet, Buttonhwnd, Hwnd, % ButtonVar
		this.Buttonhwnd := Buttonhwnd, this.OriPic := OriPic
		
		this.MouseMovFunc := ObjBindMethod(this,"_GET_MOUSEMOV")
		this.LButtonDownFunc := ObjBindMethod(this,"_GET_LBDOWN")
		
		OnMessage(0x200, this.MouseMovFunc)
		OnMessage(0x201, this.LButtonDownFunc)
	}
	
	_GET_MOUSEMOV(wParam, lParam, msg, hwnd)
	{
		MouseGetPos,,,,controlhwnd ,2
		
		if (controlhwnd = this.Buttonhwnd && this.ButtonState = 0)
		{
			GuiControl,,% this.Buttonhwnd,% this.HoverImage
			this.ButtonState := 1
		}
		else if (controlhwnd != this.Buttonhwnd && this.ButtonState = 1)
		{
			GuiControl,,% this.Buttonhwnd,% this.OriPic
			this.ButtonState := 0
		}
	}
	
	_GET_LBDOWN(wParam, lParam, msg, hwnd)
	{
		if this.ButtonState && this.PressImage != ""
		{
			GuiControl,,% this.Buttonhwnd,% this.PressImage
			KeyWait, LButton
			GuiControl,,% this.Buttonhwnd,% this.HoverImage
		}
	}
	
	ReplaceImage(ReplaceOriImage, ReplaceHoverImage, ReplacePressImage:="")
	{
		this.OriPic := ReplaceOriImage, this.HoverImage := ReplaceHoverImage, this.PressImage := ReplacePressImage
		GuiControl,,% this.Buttonhwnd,% this.OriPic
	}
	
	__Delete()
	{
		this.Destroy()
	}
	
	Destroy()
	{
		GuiControl,,% this.Buttonhwnd,% this.OriPic
		OnMessage(0x200, this.MouseMovFunc, 0)
		OnMessage(0x201, this.LButtonDownFunc, 0)
	}
}
profile

CatLab Studio

@CatLab

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!