hBitmap problem - custom slider Topic is solved

Get help with using AutoHotkey (v1.1 and older) and its commands and hotkeys
ToJaRedi2
Posts: 27
Joined: 28 Jul 2021, 16:03

hBitmap problem - custom slider

30 Jul 2021, 15:54

So, I did two sliders with IniFile record and everything works fine, reads / writes, etc., however, hBitmap (vertical blue bar at the end of the slider - the easiest way) is not displayed in the second slider and I don't know why :( Does anyone know how to fix it?

Code: Select all

hBitmap := Create_sliderthumb_png()

IniRead, MinD, config.ini, Slider, MinDelay, 20
IniRead, MaxD, config.ini, Slider, MaxDelay, 20
Gui, Color, 0x282D41

Min := new CustomSlider("x10 y20 w400 h5 BackGround0x454C5F c0x66CCFF vMin altsubmit", MinD, hBitmap)

Max := new CustomSlider2("x10 y120 w400 h5 BackGround0x454C5F c0x66CCFF vMax altsubmit", MaxD, hBitmap)

Gui, Show, w450 h350, SliderGUI
Return


GuiClose:
ExitApp

; based on http://www.autohotkey.com/board/topic/81144-progress-bar-slider/?p=516891
class CustomSlider
{
	__New(Options := "", val := "", hBitmap_thumb := "", ShowTooltip := True) {
		if !RegExMatch(Options, "i)\bBackground\w+\b") {
			if RegExMatch(Options, "i)\bc\K\w+", bkColor)
				bkOpt := "Background" bkColor
		}
		Gui, Add, Progress, h1 %Options% %bkOpt% hwndHPROG Disabled -E0x20000, % val

		Gui, Add, Text, xp yp-10 h24 wp BackgroundTrans HWNDhpgTrigger, 
		; Gui, Add, Text, x+15 w30 HWNDhRightText, %val%

		if RegExMatch(Options, "i)\bRange\K([\d-]+)-([\d-]+)", rng)
			this.rng_radio := Abs(rng2 - rng1)/100
		else
			this.rng_radio := 1

		GuiControlGet, pg, Pos, %HPROG%
		x := pgW * (val/this.rng_radio/100) + pgX

		Gui, Add, Pic, yp+5 x%x% w15 h15 HWNDhBtn, % "HBITMAP:" hBitmap_thumb

		this.hProg := HPROG
		this.hBtn := hBtn
		this.pgVal := val
		this.ShowTooltip := ShowTooltip
		; this.hRightText := hRightText

		fn := this.OnClick.Bind(this)
		GuiControl, +g, %hBtn%, %fn%
		GuiControl, +g, %hpgTrigger%, %fn%
	}

	OnClick() {
		GuiControl, Focus, % this.hBtn

		hSlider := this.hProg

		pre_CoordModeMouse := A_CoordModeMouse
		CoordMode, Mouse, Relative

		MouseGetPos,,,, ClickedhWnd, 2

		GuiControlGet, SliderLine, %A_Gui%:Pos, % hSlider

		GuiControlGet, sliderVal, %A_Gui%:, %hSlider%
		V := sliderVal

		if this.ShowTooltip
			ToolTip, %sliderVal%

		ControlGet, Style, Style,,, ahk_id %hSlider%
		ControlGetPos, X, Y, W, H,, ahk_id %hSlider%

		VarSetCapacity(R, 8)
		SendMessage, 0x0407,, &R,, ahk_id %hSlider%
		R1 := NumGet(R, 0, "Int")
		R2 := NumGet(R, 4, "Int")
		
		LastV := (ClickedhWnd = this.hBtn) ? "" : sliderVal

		while (GetKeyState("LButton"))
		{
			Sleep, 10
			MouseGetPos, XM, YM
			V := (V:=(Style&0x4 ? 1-(YM-Y)/H : (XM-X)/W))>=1 ? R2 : V<=0 ? R1 : Round(V*(R2-R1)+R1)
			if (LastV="") {
				LastV := V
			} else if (V != LastV) {
				LastV := V
				if this.ShowTooltip
					ToolTip % V
				this.pos(SliderLineW, SliderLineX) := V
			}
		}

		if this.ShowTooltip
			ToolTip
		IniWrite, %V%, config.ini, Slider, MinDelay
		CoordMode, Mouse, %pre_CoordModeMouse%
	}

	pos[pgW := "", pgX := ""] {
		set {
			GuiControl,, % this.hProg, % value

			if !pgW
				GuiControlGet, pg, Pos, % this.hProg

			x := pgW * (value/this.rng_radio/100) + pgX
			; GuiControl, MoveDraw, % this.hBtn, x%x%
			GuiControl, Move, % this.hBtn, x%x%
			DllCall("InvalidateRect", "ptr", this.hBtn, "ptr", 0, "int", 0)

			this.pgVal := value
			; GuiControl,, % this.hRightText, % value
		}
		get {
			return this.pgVal
		}
	}
}

class CustomSlider2
{
	__New(Options := "", val := "", hBitmap_thumb := "", ShowTooltip := True) {
		if !RegExMatch(Options, "i)\bBackground\w+\b") {
			if RegExMatch(Options, "i)\bc\K\w+", bkColor)
				bkOpt := "Background" bkColor
		}
		Gui, Add, Progress, h1 %Options% %bkOpt% hwndHPROG Disabled -E0x20000, % val

		Gui, Add, Text, xp yp-10 h24 wp BackgroundTrans HWNDhpgTrigger, 
		; Gui, Add, Text, x+15 w30 HWNDhRightText, %val%

		if RegExMatch(Options, "i)\bRange\K([\d-]+)-([\d-]+)", rng)
			this.rng_radio := Abs(rng2 - rng1)/100
		else
			this.rng_radio := 1

		GuiControlGet, pg, Pos, %HPROG%
		x := pgW * (val/this.rng_radio/100) + pgX

		Gui, Add, Pic, yp+5 x%x% w15 h15 HWNDhBtn, % "HBITMAP:" hBitmap_thumb

		this.hProg := HPROG
		this.hBtn := hBtn
		this.pgVal := val
		this.ShowTooltip := ShowTooltip
		; this.hRightText := hRightText

		fn := this.OnClick.Bind(this)
		GuiControl, +g, %hBtn%, %fn%
		GuiControl, +g, %hpgTrigger%, %fn%
	}

	OnClick() {
		GuiControl, Focus, % this.hBtn

		hSlider := this.hProg

		pre_CoordModeMouse := A_CoordModeMouse
		CoordMode, Mouse, Relative

		MouseGetPos,,,, ClickedhWnd, 2

		GuiControlGet, SliderLine, %A_Gui%:Pos, % hSlider

		GuiControlGet, sliderVal, %A_Gui%:, %hSlider%
		V := sliderVal

		if this.ShowTooltip
			ToolTip, %sliderVal%

		ControlGet, Style, Style,,, ahk_id %hSlider%
		ControlGetPos, X, Y, W, H,, ahk_id %hSlider%

		VarSetCapacity(R, 8)
		SendMessage, 0x0407,, &R,, ahk_id %hSlider%
		R1 := NumGet(R, 0, "Int")
		R2 := NumGet(R, 4, "Int")
		
		LastV := (ClickedhWnd = this.hBtn) ? "" : sliderVal

		while (GetKeyState("LButton"))
		{
			Sleep, 10
			MouseGetPos, XM, YM
			V := (V:=(Style&0x4 ? 1-(YM-Y)/H : (XM-X)/W))>=1 ? R2 : V<=0 ? R1 : Round(V*(R2-R1)+R1)
			if (LastV="") {
				LastV := V
			} else if (V != LastV) {
				LastV := V
				if this.ShowTooltip
					ToolTip % V
				this.pos(SliderLineW, SliderLineX) := V
			}
		}

		if this.ShowTooltip
			ToolTip
		IniWrite, %V%, config.ini, Slider, MaxDelay
		CoordMode, Mouse, %pre_CoordModeMouse%
	}

	pos[pgW := "", pgX := ""] {
		set {
			GuiControl,, % this.hProg, % value

			if !pgW
				GuiControlGet, pg, Pos, % this.hProg

			x := pgW * (value/this.rng_radio/100) + pgX
			; GuiControl, MoveDraw, % this.hBtn, x%x%
			GuiControl, Move, % this.hBtn, x%x%
			DllCall("InvalidateRect", "ptr", this.hBtn, "ptr", 0, "int", 0)

			this.pgVal := value
			; GuiControl,, % this.hRightText, % value
		}
		get {
			return this.pgVal
		}
	}
}


; ##################################################################################
; # This #Include file was generated by Image2Include.ahk, you must not change it! #
; ##################################################################################
Create_sliderthumb_png(NewHandle := False) {
Static hBitmap := 0
If (NewHandle)
   hBitmap := 0
If (hBitmap)
   Return hBitmap
VarSetCapacity(B64, 3864 << !!A_IsUnicode)
B64 := "iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAFJGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDYwLCAyMDIwLzA1LzEyLTE2OjA0OjE3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDIxLTA3LTMwVDE4OjM3OjAzKzAyOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMS0wNy0zMFQxOTowNDowNyswMjowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMS0wNy0zMFQxOTowNDowNyswMjowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0ODYxZjUzZS0yMWNkLWFlNDAtOTE3Mi1lZTAwZDBhY2Y5N2MiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo0MDMyMDIwYy03MGM3LTYwNDItODYzOC0wMjc5NmIxOGE2N2YiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0ODYxZjUzZS0yMWNkLWFlNDAtOTE3Mi1lZTAwZDBhY2Y5N2MiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjQ4NjFmNTNlLTIxY2QtYWU0MC05MTcyLWVlMDBkMGFjZjk3YyIgc3RFdnQ6d2hlbj0iMjAyMS0wNy0zMFQxODozNzowMyswMjowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIxLjIgKFdpbmRvd3MpIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmK2tpMAAAEYSURBVDiNrdQ9LwRRFMbx34z34CtIJKuwlWT7jUSiQ6LXUq5INAiFjUblM4jEZ1Ao2Ea8NCqhUIhEYdUKRrEzyZjsYmY9yS3uefnnnHNzbrB8FemgEsoYj+8vuMd1u+DeNrYKtjCDkYzvHRfYxlnaEWYCazjFAkYRZM4gqjjBbqeKathHX7vSUwowgI0YvJ6uqIL6HyDZblYxnwbtYDgHJFEP9hJQSWuwQQFQgElUQkxhqAAkDZsNMdEFJFE5+/yFFeL5HziPIW7w0SXoMsQt7tBx6X7RKxrJjOoFQVGc20xAxzjMCYu0FveA70u7hiN85oAsJoY0qIklrOApDo4yyRHesInpOAcEP3xsVcxhDP14wDkaaUCiL0A1N1R4MrTFAAAAAElFTkSuQmCC"
If !DllCall("Crypt32.dll\CryptStringToBinary", "Ptr", &B64, "UInt", 0, "UInt", 0x01, "Ptr", 0, "UIntP", DecLen, "Ptr", 0, "Ptr", 0)
   Return False
VarSetCapacity(Dec, DecLen, 0)
If !DllCall("Crypt32.dll\CryptStringToBinary", "Ptr", &B64, "UInt", 0, "UInt", 0x01, "Ptr", &Dec, "UIntP", DecLen, "Ptr", 0, "Ptr", 0)
   Return False
; Bitmap creation adopted from "How to convert Image data (JPEG/PNG/GIF) to hBITMAP?" by SKAN
; -> http://www.autohotkey.com/board/topic/21213-how-to-convert-image-data-jpegpnggif-to-hbitmap/?p=139257
hData := DllCall("Kernel32.dll\GlobalAlloc", "UInt", 2, "UPtr", DecLen, "UPtr")
pData := DllCall("Kernel32.dll\GlobalLock", "Ptr", hData, "UPtr")
DllCall("Kernel32.dll\RtlMoveMemory", "Ptr", pData, "Ptr", &Dec, "UPtr", DecLen)
DllCall("Kernel32.dll\GlobalUnlock", "Ptr", hData)
DllCall("Ole32.dll\CreateStreamOnHGlobal", "Ptr", hData, "Int", True, "PtrP", pStream)
hGdip := DllCall("Kernel32.dll\LoadLibrary", "Str", "Gdiplus.dll", "UPtr")
VarSetCapacity(SI, 16, 0), NumPut(1, SI, 0, "UChar")
DllCall("Gdiplus.dll\GdiplusStartup", "PtrP", pToken, "Ptr", &SI, "Ptr", 0)
DllCall("Gdiplus.dll\GdipCreateBitmapFromStream",  "Ptr", pStream, "PtrP", pBitmap)
DllCall("Gdiplus.dll\GdipCreateHBITMAPFromBitmap", "Ptr", pBitmap, "PtrP", hBitmap, "UInt", 0)
DllCall("Gdiplus.dll\GdipDisposeImage", "Ptr", pBitmap)
DllCall("Gdiplus.dll\GdiplusShutdown", "Ptr", pToken)
DllCall("Kernel32.dll\FreeLibrary", "Ptr", hGdip)
DllCall(NumGet(NumGet(pStream + 0, 0, "UPtr") + (A_PtrSize * 2), 0, "UPtr"), "Ptr", pStream)
Return hBitmap
}
sooyke_
Posts: 25
Joined: 18 Nov 2020, 10:27

Re: hBitmap problem - custom slider  Topic is solved

31 Jul 2021, 02:38

It seems you cannot use the pointer to the image object twice .

I also change the " Image2Include " creation of hbitmap code ( removed the if hbitmap condition )

Code: Select all


Gui, Color, 0x282D41

HBITMAP:=Create_sliderthumb_png()
HBITMAP2:=Create_sliderthumb_png()

Gui, Add, Pic, yp+20 x10 w15 h15 HWNDhBtn, % "HBITMAP:"   HBITMAP
Gui, Add, Pic, yp+20 x10 w15 h15 HWNDhBtn, % "HBITMAP:"   HBITMAP

Gui, Add, Pic, yp+60 x10 w15 h15 HWNDhBtn, % "HBITMAP:"   HBITMAP2
Gui,show,w200 h200
Return


GuiClose:
ExitApp






; ##################################################################################
; # This #Include file was generated by Image2Include.ahk, you must not change it! #
; ##################################################################################
Create_sliderthumb_png(NewHandle := False) {

VarSetCapacity(B64, 3864 << !!A_IsUnicode)
B64 := "iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAFJGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDYwLCAyMDIwLzA1LzEyLTE2OjA0OjE3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDIxLTA3LTMwVDE4OjM3OjAzKzAyOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMS0wNy0zMFQxOTowNDowNyswMjowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMS0wNy0zMFQxOTowNDowNyswMjowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0ODYxZjUzZS0yMWNkLWFlNDAtOTE3Mi1lZTAwZDBhY2Y5N2MiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo0MDMyMDIwYy03MGM3LTYwNDItODYzOC0wMjc5NmIxOGE2N2YiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0ODYxZjUzZS0yMWNkLWFlNDAtOTE3Mi1lZTAwZDBhY2Y5N2MiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjQ4NjFmNTNlLTIxY2QtYWU0MC05MTcyLWVlMDBkMGFjZjk3YyIgc3RFdnQ6d2hlbj0iMjAyMS0wNy0zMFQxODozNzowMyswMjowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIxLjIgKFdpbmRvd3MpIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmK2tpMAAAEYSURBVDiNrdQ9LwRRFMbx34z34CtIJKuwlWT7jUSiQ6LXUq5INAiFjUblM4jEZ1Ao2Ea8NCqhUIhEYdUKRrEzyZjsYmY9yS3uefnnnHNzbrB8FemgEsoYj+8vuMd1u+DeNrYKtjCDkYzvHRfYxlnaEWYCazjFAkYRZM4gqjjBbqeKathHX7vSUwowgI0YvJ6uqIL6HyDZblYxnwbtYDgHJFEP9hJQSWuwQQFQgElUQkxhqAAkDZsNMdEFJFE5+/yFFeL5HziPIW7w0SXoMsQt7tBx6X7RKxrJjOoFQVGc20xAxzjMCYu0FveA70u7hiN85oAsJoY0qIklrOApDo4yyRHesInpOAcEP3xsVcxhDP14wDkaaUCiL0A1N1R4MrTFAAAAAElFTkSuQmCC"
If !DllCall("Crypt32.dll\CryptStringToBinary", "Ptr", &B64, "UInt", 0, "UInt", 0x01, "Ptr", 0, "UIntP", DecLen, "Ptr", 0, "Ptr", 0)
   Return False
VarSetCapacity(Dec, DecLen, 0)
If !DllCall("Crypt32.dll\CryptStringToBinary", "Ptr", &B64, "UInt", 0, "UInt", 0x01, "Ptr", &Dec, "UIntP", DecLen, "Ptr", 0, "Ptr", 0)
   Return False
; Bitmap creation adopted from "How to convert Image data (JPEG/PNG/GIF) to hBITMAP?" by SKAN
; -> http://www.autohotkey.com/board/topic/21213-how-to-convert-image-data-jpegpnggif-to-hbitmap/?p=139257
hData := DllCall("Kernel32.dll\GlobalAlloc", "UInt", 2, "UPtr", DecLen, "UPtr")
pData := DllCall("Kernel32.dll\GlobalLock", "Ptr", hData, "UPtr")
DllCall("Kernel32.dll\RtlMoveMemory", "Ptr", pData, "Ptr", &Dec, "UPtr", DecLen)
DllCall("Kernel32.dll\GlobalUnlock", "Ptr", hData)
DllCall("Ole32.dll\CreateStreamOnHGlobal", "Ptr", hData, "Int", True, "PtrP", pStream)
hGdip := DllCall("Kernel32.dll\LoadLibrary", "Str", "Gdiplus.dll", "UPtr")
VarSetCapacity(SI, 16, 0), NumPut(1, SI, 0, "UChar")
DllCall("Gdiplus.dll\GdiplusStartup", "PtrP", pToken, "Ptr", &SI, "Ptr", 0)
DllCall("Gdiplus.dll\GdipCreateBitmapFromStream",  "Ptr", pStream, "PtrP", pBitmap)
DllCall("Gdiplus.dll\GdipCreateHBITMAPFromBitmap", "Ptr", pBitmap, "PtrP", hBitmap, "UInt", 0)
DllCall("Gdiplus.dll\GdipDisposeImage", "Ptr", pBitmap)
DllCall("Gdiplus.dll\GdiplusShutdown", "Ptr", pToken)
DllCall("Kernel32.dll\FreeLibrary", "Ptr", hGdip)
DllCall(NumGet(NumGet(pStream + 0, 0, "UPtr") + (A_PtrSize * 2), 0, "UPtr"), "Ptr", pStream)
Return hBitmap
}
teadrinker
Posts: 4309
Joined: 29 Mar 2015, 09:41
Contact:

Re: hBitmap problem - custom slider

31 Jul 2021, 03:45

sooyke_ wrote: It seems you cannot use the pointer to the image object twice
Just use an asterisk:

Code: Select all

HBITMAP:=Create_sliderthumb_png()

Gui, Add, Pic, yp+20 x10 w15 h15 HWNDhBtn, % "HBITMAP:*"   HBITMAP
Gui, Add, Pic, yp+20 x10 w15 h15 HWNDhBtn, % "HBITMAP:*"   HBITMAP

Gui, Add, Pic, yp+60 x10 w15 h15 HWNDhBtn, % "HBITMAP:*"   HBITMAP
@ToJaRedi2
What the difference between CustomSlider and CustomSlider2, why do you use both?
ToJaRedi2
Posts: 27
Joined: 28 Jul 2021, 16:03

Re: hBitmap problem - custom slider

01 Aug 2021, 09:27

Hello, I have one more question ... how do I set the scope on this slide? for example the range 1-10?
sooyke_
Posts: 25
Joined: 18 Nov 2020, 10:27

Re: hBitmap problem - custom slider

01 Aug 2021, 10:07

Code: Select all

Min := new CustomSlider("x10 y20 w400 h5 BackGround0x454C5F Range0-10 c0x66CCFF vMin altsubmit", MinD, hBitmap)

Do you not have the link to the original post ? I guess the options avaiable should be mentioned there ?

You can see the Range option extracted here in the code : if RegExMatch(Options, "i)\bRange\K([\d-]+)-([\d-]+)", rng)
ToJaRedi2
Posts: 27
Joined: 28 Jul 2021, 16:03

Re: hBitmap problem - custom slider

01 Aug 2021, 19:14

sooyke_ wrote:
01 Aug 2021, 10:07

Code: Select all

Min := new CustomSlider("x10 y20 w400 h5 BackGround0x454C5F Range0-10 c0x66CCFF vMin altsubmit", MinD, hBitmap)

Do you not have the link to the original post ? I guess the options avaiable should be mentioned there ?

You can see the Range option extracted here in the code : if RegExMatch(Options, "i)\bRange\K([\d-]+)-([\d-]+)", rng)

Thank you very much for help :D
ToJaRedi2
Posts: 27
Joined: 28 Jul 2021, 16:03

Re: hBitmap problem - custom slider

01 Aug 2021, 20:02

I just forgot to add ... Link to the original post with the slider
--> https://www.autohotkey.com/boards/viewtopic.php?t=80476


sooyke_ wrote:
01 Aug 2021, 10:07

Code: Select all

Min := new CustomSlider("x10 y20 w400 h5 BackGround0x454C5F Range0-10 c0x66CCFF vMin altsubmit", MinD, hBitmap)

Do you not have the link to the original post ? I guess the options avaiable should be mentioned there ?

You can see the Range option extracted here in the code : if RegExMatch(Options, "i)\bRange\K([\d-]+)-([\d-]+)", rng)

Return to “Ask for Help (v1)”

Who is online

Users browsing this forum: dunnerca, Google [Bot], wilkster and 120 guests