github.com/secoba/wails/v2@v2.6.4/internal/frontend/desktop/windows/winc/progressbar.go (about) 1 //go:build windows 2 3 /* 4 * Copyright (C) 2019 The Winc Authors. All Rights Reserved. 5 */ 6 7 package winc 8 9 import ( 10 "github.com/secoba/wails/v2/internal/frontend/desktop/windows/winc/w32" 11 ) 12 13 type ProgressBar struct { 14 ControlBase 15 } 16 17 func NewProgressBar(parent Controller) *ProgressBar { 18 pb := new(ProgressBar) 19 20 pb.InitControl(w32.PROGRESS_CLASS, parent, 0, w32.WS_CHILD|w32.WS_VISIBLE) 21 RegMsgHandler(pb) 22 23 pb.SetSize(200, 22) 24 return pb 25 } 26 27 func (pr *ProgressBar) Value() int { 28 ret := w32.SendMessage(pr.hwnd, w32.PBM_GETPOS, 0, 0) 29 return int(ret) 30 } 31 32 func (pr *ProgressBar) SetValue(v int) { 33 w32.SendMessage(pr.hwnd, w32.PBM_SETPOS, uintptr(v), 0) 34 } 35 36 func (pr *ProgressBar) Range() (min, max uint) { 37 min = uint(w32.SendMessage(pr.hwnd, w32.PBM_GETRANGE, uintptr(w32.BoolToBOOL(true)), 0)) 38 max = uint(w32.SendMessage(pr.hwnd, w32.PBM_GETRANGE, uintptr(w32.BoolToBOOL(false)), 0)) 39 return 40 } 41 42 func (pr *ProgressBar) SetRange(min, max int) { 43 w32.SendMessage(pr.hwnd, w32.PBM_SETRANGE32, uintptr(min), uintptr(max)) 44 } 45 46 func (pr *ProgressBar) WndProc(msg uint32, wparam, lparam uintptr) uintptr { 47 return w32.DefWindowProc(pr.hwnd, msg, wparam, lparam) 48 }