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  }