Added button code.
This commit is contained in:
parent
df8f7a2190
commit
ef5739229e
|
@ -0,0 +1,106 @@
|
||||||
|
// 9 february 2014
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
// "syscall"
|
||||||
|
// "unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Button styles.
|
||||||
|
const (
|
||||||
|
// from winuser.h
|
||||||
|
BS_PUSHBUTTON = 0x00000000
|
||||||
|
BS_DEFPUSHBUTTON = 0x00000001
|
||||||
|
BS_CHECKBOX = 0x00000002
|
||||||
|
BS_AUTOCHECKBOX = 0x00000003
|
||||||
|
BS_RADIOBUTTON = 0x00000004
|
||||||
|
BS_3STATE = 0x00000005
|
||||||
|
BS_AUTO3STATE = 0x00000006
|
||||||
|
BS_GROUPBOX = 0x00000007
|
||||||
|
BS_USERBUTTON = 0x00000008
|
||||||
|
BS_AUTORADIOBUTTON = 0x00000009
|
||||||
|
BS_PUSHBOX = 0x0000000A
|
||||||
|
BS_OWNERDRAW = 0x0000000B
|
||||||
|
BS_TYPEMASK = 0x0000000F
|
||||||
|
BS_LEFTTEXT = 0x00000020
|
||||||
|
BS_TEXT = 0x00000000
|
||||||
|
BS_ICON = 0x00000040
|
||||||
|
BS_BITMAP = 0x00000080
|
||||||
|
BS_LEFT = 0x00000100
|
||||||
|
BS_RIGHT = 0x00000200
|
||||||
|
BS_CENTER = 0x00000300
|
||||||
|
BS_TOP = 0x00000400
|
||||||
|
BS_BOTTOM = 0x00000800
|
||||||
|
BS_VCENTER = 0x00000C00
|
||||||
|
BS_PUSHLIKE = 0x00001000
|
||||||
|
BS_MULTILINE = 0x00002000
|
||||||
|
BS_NOTIFY = 0x00004000
|
||||||
|
BS_FLAT = 0x00008000
|
||||||
|
BS_RIGHTBUTTON = BS_LEFTTEXT
|
||||||
|
// from commctrl.h
|
||||||
|
// BS_SPLITBUTTON = 0x0000000C // Windows Vista and newer and(/or?) comctl6 only
|
||||||
|
// BS_DEFSPLITBUTTON = 0x0000000D // Windows Vista and newer and(/or?) comctl6 only
|
||||||
|
// BS_COMMANDLINK = 0x0000000E // Windows Vista and newer and(/or?) comctl6 only
|
||||||
|
// BS_DEFCOMMANDLINK = 0x0000000F // Windows Vista and newer and(/or?) comctl6 only
|
||||||
|
)
|
||||||
|
|
||||||
|
// Button WM_COMMAND notifications.
|
||||||
|
const (
|
||||||
|
// from winuser.h
|
||||||
|
BN_CLICKED = 0
|
||||||
|
BN_PAINT = 1
|
||||||
|
BN_HILITE = 2
|
||||||
|
BN_UNHILITE = 3
|
||||||
|
BN_DISABLE = 4
|
||||||
|
BN_DOUBLECLICKED = 5
|
||||||
|
BN_PUSHED = BN_HILITE
|
||||||
|
BN_UNPUSHED = BN_UNHILITE
|
||||||
|
BN_DBLCLK = BN_DOUBLECLICKED
|
||||||
|
BN_SETFOCUS = 6
|
||||||
|
BN_KILLFOCUS = 7
|
||||||
|
)
|
||||||
|
|
||||||
|
// Button check states.
|
||||||
|
const (
|
||||||
|
// from winuser.h
|
||||||
|
BST_UNCHECKED = 0x0000
|
||||||
|
BST_CHECKED = 0x0001
|
||||||
|
BST_INDETERMINATE = 0x0002
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
checkDlgButton = user32.NewProc("CheckDlgButton")
|
||||||
|
checkRadioButton = user32.NewProc("CheckRadioButton")
|
||||||
|
isDlgButtonChecked = user32.NewProc("IsDlgButtonChecked")
|
||||||
|
)
|
||||||
|
|
||||||
|
func CheckDlgButton(hDlg HWND, nIDButton int, uCheck uint32) (err error) {
|
||||||
|
r1, _, err := checkDlgButton.Call(
|
||||||
|
uintptr(hDlg),
|
||||||
|
uintptr(nIDButton),
|
||||||
|
uintptr(uCheck))
|
||||||
|
if r1 == 0 { // failure
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func CheckRadioButton(hDlg HWND, nIDFirstButton int, nIDLastButton int, nIDCheckButton int) (err error) {
|
||||||
|
r1, _, err := checkRadioButton.Call(
|
||||||
|
uintptr(hDlg),
|
||||||
|
uintptr(nIDFirstButton),
|
||||||
|
uintptr(nIDLastButton),
|
||||||
|
uintptr(nIDCheckButton))
|
||||||
|
if r1 == 0 { // failure
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO handle errors
|
||||||
|
func IsDlgButtonChecked(hDlg HWND, nIDButton int) (state uint32, err error) {
|
||||||
|
r1, _, _ := isDlgButtonChecked.Call(
|
||||||
|
uintptr(hDlg),
|
||||||
|
uintptr(nIDButton))
|
||||||
|
return uint32(r1), nil
|
||||||
|
}
|
Loading…
Reference in New Issue