Button

The Button structure contains the styles, notifications and state values concerned with button controls.  Buttons are windows like any other and can be constructed using CreateWindow although more usually they form part of a dialogue box.  The values from the Notification substructure are sent as the code parameter in a WM_NOTIFY message.  Specialised button messages begin with BM_. The values in the State substructure may be sent or returned in messages such as BM_GETCHECK and BM_SETSTATE.

structure Button:
sig
    structure Style:
    sig
	include BIT_FLAGS where type flags = Window.Style.flags
	val WS_OVERLAPPED: flags and WS_POPUP: flags and WS_CHILD: flags and WS_MINIMIZE: flags
	and WS_VISIBLE: flags and WS_DISABLED:flags and WS_CLIPSIBLINGS:flags
	and WS_CLIPCHILDREN:flags and WS_MAXIMIZE:flags and WS_CAPTION:flags
	and WS_BORDER:flags and WS_DLGFRAME:flags and WS_VSCROLL:flags and WS_HSCROLL:flags
	and WS_SYSMENU:flags and WS_THICKFRAME:flags and WS_GROUP:flags and WS_TABSTOP:flags
	and WS_MINIMIZEBOX:flags and WS_MAXIMIZEBOX:flags and WS_TILED:flags and WS_ICONIC:flags
	and WS_SIZEBOX:flags and WS_OVERLAPPEDWINDOW:flags and WS_TILEDWINDOW:flags
	and WS_POPUPWINDOW:flags and WS_CHILDWINDOW:flags
        and BS_3STATE: flags and BS_AUTO3STATE: flags and BS_AUTOCHECKBOX: flags
	and BS_AUTORADIOBUTTON: flags and BS_BITMAP: flags and BS_BOTTOM: flags
        and BS_CENTER: flags and BS_CHECKBOX: flags and BS_DEFPUSHBUTTON: flags
        and BS_FLAT: flags and BS_GROUPBOX: flags and BS_ICON: flags and BS_LEFT: flags
        and BS_LEFTTEXT: flags and BS_MULTILINE: flags and BS_NOTIFY: flags
        and BS_OWNERDRAW: flags and BS_PUSHBUTTON: flags and BS_PUSHLIKE: flags
        and BS_RADIOBUTTON: flags and BS_RIGHT: flags and BS_RIGHTBUTTON: flags
        and BS_TEXT: flags and BS_TOP: flags and BS_USERBUTTON: flags and BS_VCENTER: flags
    end

    structure Notifications:
    sig
	val BN_CLICKED: int
	val BN_PAINT: int
	val BN_HILITE: int
	val BN_UNHILITE: int
	val BN_DISABLE: int
	val BN_DOUBLECLICKED: int
	val BN_PUSHED: int
	val BN_UNPUSHED: int
	val BN_DBLCLK: int
	val BN_SETFOCUS: int
	val BN_KILLFOCUS: int
    end

    structure State:
    sig
	val BST_UNCHECKED: int
	val BST_CHECKED: int
	val BST_INDETERMINATE: int
	val BST_PUSHED: int
	val BST_FOCUS: int
    end
end