REM. Program to demonstrate a Dialogue Box
INSTALL @lib$+"WINLIB2"
BS_DEFPUSHBUTTON = &1
CB_ADDSTRING = &143
CB_SETCURSEL = &14E
CBS_DROPDOWNLIST = &3
ES_AUTOHSCROLL = &80
ES_NUMBER = &2000
LB_ADDSTRING = &180
LB_GETCURSEL = &188
UDM_SETRANGE = &465
UDS_ALIGNRIGHT = &4
UDS_AUTOBUDDY = &10
UDS_SETBUDDYINT = &2
WS_CHILD = &40000000
WS_GROUP = &20000
WS_VISIBLE = &10000000
WM_COMMAND = 273
editboxTextBox% = 900
editboxNumber% = 901
dlgctrlNumberBox% = 902
comboboxDropDown% = 903
listboxList% = 904
radiobuttonButton1% = 905
radiobuttonButton2% = 906
checkboxCheckbox1% = 907
checkboxCheckbox2% = 908
pushbuttonOK% = 1
pushbuttonCancel% = 2
dlg%=FN_newdialog("Dialogue box", 20, 20, 160, 128, 8, 1024)
PROC_groupbox(dlg%, "Group box", 0, 4, 4, 152, 96, WS_GROUP)
PROC_editbox(dlg%, "Text box", editboxTextBox%, 12, 20, 64, 12, ES_AUTOHSCROLL)
PROC_editbox(dlg%, "123456", editboxNumber%, 82, 20, 64, 12, ES_NUMBER)
PROC_dlgctrl(dlg%, "", dlgctrlNumberBox%, 0, 0, 12, 12, WS_VISIBLE OR WS_CHILD OR \
\ UDS_AUTOBUDDY OR UDS_ALIGNRIGHT OR UDS_SETBUDDYINT, "msctls_updown32")
PROC_combobox(dlg%, "", comboboxDropDown%, 12, 40, 64, 60, CBS_DROPDOWNLIST)
PROC_listbox(dlg%, "", listboxList%, 82, 40, 64, 48, 0)
PROC_radiobutton(dlg%, "Radiobutton 1", radiobuttonButton1%, 12, 64, 64, 10, 0)
PROC_radiobutton(dlg%, "Radiobutton 2", radiobuttonButton2%, 12, 82, 64, 10, 0)
PROC_checkbox(dlg%, "Checkbox1", checkboxCheckbox1%, 82, 82, 64, 10, 0)
PROC_checkbox(dlg%, "Checkbox2", checkboxCheckbox2%, 82, 10, 64, 10, 0)
PROC_pushbutton(dlg%, "OK", pushbuttonOK%, 12, 108, 56, 14, WS_GROUP OR BS_DEFPUSHBUTTON)
PROC_pushbutton(dlg%, "Cancel", pushbuttonCancel%, 92, 108, 56, 14, 0)
PROC_showdialog(dlg%)
ON CLOSE PROC_closedialog(dlg%):QUIT
ON ERROR PROC_closedialog(dlg%):PRINT'REPORT$:END
SYS "SendDlgItemMessage", !dlg%, comboboxDropDown%, CB_ADDSTRING, 0, "Combobox 1"
SYS "SendDlgItemMessage", !dlg%, comboboxDropDown%, CB_ADDSTRING, 0, "Combobox 2"
SYS "SendDlgItemMessage", !dlg%, comboboxDropDown%, CB_ADDSTRING, 0, "Combobox 3"
SYS "SendDlgItemMessage", !dlg%, comboboxDropDown%, CB_ADDSTRING, 0, "Combobox 4"
SYS "SendDlgItemMessage", !dlg%, comboboxDropDown%, CB_ADDSTRING, 0, "Combobox 5"
SYS "SendDlgItemMessage", !dlg%, comboboxDropDown%, CB_ADDSTRING, 0, "Combobox 6"
SYS "SendDlgItemMessage", !dlg%, comboboxDropDown%, CB_ADDSTRING, 0, "Combobox 7"
SYS "SendDlgItemMessage", !dlg%, comboboxDropDown%, CB_ADDSTRING, 0, "Combobox 8"
SYS "SendDlgItemMessage", !dlg%, comboboxDropDown%, CB_SETCURSEL, 3, 0
SYS "SendDlgItemMessage", !dlg%, listboxList%, LB_ADDSTRING, 0, "Listbox item 0"
SYS "SendDlgItemMessage", !dlg%, listboxList%, LB_ADDSTRING, 0, "Listbox item 1"
SYS "SendDlgItemMessage", !dlg%, listboxList%, LB_ADDSTRING, 0, "Listbox item 2"
SYS "SendDlgItemMessage", !dlg%, listboxList%, LB_ADDSTRING, 0, "Listbox item 3"
SYS "CheckRadioButton", !dlg%, radiobuttonButton1%, radiobuttonButton2%, radiobuttonButton2%
SYS "SendDlgItemMessage", !dlg%, dlgctrlNumberBox%, UDM_SETRANGE, 0, 15
REM --------------------- START OF THE INTERESTING BIT --------------
INSTALL @lib$+"EVENTLIB"
PROC_eventinit
PROC_eventregister(WM_COMMAND, PROCgetControlID())
REPEAT
PROC_eventpoll
WAIT 100
UNTIL FALSE
END
DEF PROCgetControlID(M%, W%, L%)
ControlNo% = W% AND &FFFF
CASE TRUE OF
WHEN (ControlNo% > 899) AND (ControlNo% < 909) :
ControlID$ = STR$(ControlNo%)
OTHERWISE ControlID$ = "Unknown " + STR$(ControlNo%)
ENDCASE
SYS "MessageBox", @hwnd%, "M%= " + STR$(M%) + " Control ID= " + ControlID$, "",0
ENDPROC
REM. Program to demonstrate a Dialogue Box
INSTALL @lib$+"WINLIB2"
REM!WC
BN_CLICKED = 0
BS_DEFPUSHBUTTON = 1
CB_ADDSTRING = 323
CB_SETCURSEL = 334
CBN_CLOSEUP = 8
CBN_DROPDOWN = 7
CBN_KILLFOCUS = 4
CBN_SELCHANGE = 1
CBN_SELENDCANCEL = &A
CBN_SELENDOK = 9
CBN_SETFOCUS = 3
CBS_DROPDOWNLIST = 3
EN_CHANGE = 768
EN_KILLFOCUS = 512
EN_SETFOCUS = 256
EN_UPDATE = &400
ES_AUTOHSCROLL = &80
ES_NUMBER = 8192
LB_ADDSTRING = 384
LBN_KILLFOCUS = 5
LBN_SELCHANGE = 1
LBN_SETFOCUS = 4
UDM_SETRANGE = &465
UDN_DELTAPOS = -722
UDS_ALIGNRIGHT = 4
UDS_AUTOBUDDY = 16
UDS_SETBUDDYINT = 2
WM_COMMAND = 273
WS_CHILD = &40000000
WS_GROUP = &20000
WS_VISIBLE = &10000000
editboxTextBox% = 900
editboxNumber% = 901
dlgctrlNumberBox% = 902
comboboxDropDown% = 903
listboxList% = 904
radiobuttonButton1% = 905
radiobuttonButton2% = 906
checkboxCheckbox1% = 907
checkboxCheckbox2% = 908
pushbuttonOK% = 1
pushbuttonCancel% = 2
dlg%=FN_newdialog("Dialogue box", 360, 20, 160, 128, 8, 1024)
PROC_groupbox(dlg%, "Group box", 0, 4, 4, 152, 96, WS_GROUP)
PROC_editbox(dlg%, "Text box", editboxTextBox%, 12, 20, 64, 12, ES_AUTOHSCROLL)
PROC_editbox(dlg%, "123456", editboxNumber%, 82, 20, 64, 12, ES_NUMBER)
PROC_dlgctrl(dlg%, "", dlgctrlNumberBox%, 0, 0, 12, 12, WS_VISIBLE OR WS_CHILD OR \
\ UDS_AUTOBUDDY OR UDS_ALIGNRIGHT OR UDS_SETBUDDYINT, "msctls_updown32")
PROC_combobox(dlg%, "", comboboxDropDown%, 12, 40, 64, 60, CBS_DROPDOWNLIST)
PROC_listbox(dlg%, "", listboxList%, 82, 40, 64, 48, 0)
PROC_radiobutton(dlg%, "Radiobutton 1", radiobuttonButton1%, 12, 64, 64, 10, 0)
PROC_radiobutton(dlg%, "Radiobutton 2", radiobuttonButton2%, 12, 82, 64, 10, 0)
PROC_checkbox(dlg%, "Checkbox1", checkboxCheckbox1%, 82, 82, 64, 10, 0)
PROC_checkbox(dlg%, "Checkbox2", checkboxCheckbox2%, 82, 10, 64, 10, 0)
PROC_pushbutton(dlg%, "OK", pushbuttonOK%, 12, 108, 56, 14, WS_GROUP OR BS_DEFPUSHBUTTON)
PROC_pushbutton(dlg%, "Cancel", pushbuttonCancel%, 92, 108, 56, 14, 0)
PROC_showdialog(dlg%)
ON CLOSE PROC_closedialog(dlg%):QUIT
ON ERROR PROC_closedialog(dlg%):PRINT'REPORT$:END
SYS "SendDlgItemMessage", !dlg%, comboboxDropDown%, CB_ADDSTRING, 0, "Combobox 1"
SYS "SendDlgItemMessage", !dlg%, comboboxDropDown%, CB_ADDSTRING, 0, "Combobox 2"
SYS "SendDlgItemMessage", !dlg%, comboboxDropDown%, CB_ADDSTRING, 0, "Combobox 3"
SYS "SendDlgItemMessage", !dlg%, comboboxDropDown%, CB_ADDSTRING, 0, "Combobox 4"
SYS "SendDlgItemMessage", !dlg%, comboboxDropDown%, CB_ADDSTRING, 0, "Combobox 5"
SYS "SendDlgItemMessage", !dlg%, comboboxDropDown%, CB_ADDSTRING, 0, "Combobox 6"
SYS "SendDlgItemMessage", !dlg%, comboboxDropDown%, CB_ADDSTRING, 0, "Combobox 7"
SYS "SendDlgItemMessage", !dlg%, comboboxDropDown%, CB_ADDSTRING, 0, "Combobox 8"
SYS "SendDlgItemMessage", !dlg%, comboboxDropDown%, CB_SETCURSEL, 3, 0
SYS "SendDlgItemMessage", !dlg%, listboxList%, LB_ADDSTRING, 0, "Listbox item 0"
SYS "SendDlgItemMessage", !dlg%, listboxList%, LB_ADDSTRING, 0, "Listbox item 1"
SYS "SendDlgItemMessage", !dlg%, listboxList%, LB_ADDSTRING, 0, "Listbox item 2"
SYS "SendDlgItemMessage", !dlg%, listboxList%, LB_ADDSTRING, 0, "Listbox item 3"
SYS "CheckRadioButton", !dlg%, radiobuttonButton1%, radiobuttonButton2%, radiobuttonButton2%
SYS "SendDlgItemMessage", !dlg%, dlgctrlNumberBox%, UDM_SETRANGE, 0, 15
REM --------------------- START OF THE INTERESTING BIT --------------
INSTALL @lib$+"EVENTLIB"
PROC_eventinit
PROC_eventregister(WM_COMMAND, PROCreportevent())
REPEAT
PROC_eventpoll
WAIT 1
UNTIL FALSE
END
DEF PROCreportevent(M%, W%, L%)
LOCAL controlID%, notificationCode%
controlID% = W% AND &FFFF
notificationCode% = W% >> 16
PRINT TIME$ ": Control "; controlID%; " sent notification ";
CASE controlID% OF
WHEN 900,901:
CASE notificationCode% OF
WHEN EN_KILLFOCUS: PRINT "EN_KILLFOCUS"
WHEN EN_SETFOCUS: PRINT "EN_SETFOCUS"
WHEN EN_CHANGE: PRINT "EN_CHANGE"
WHEN EN_UPDATE: PRINT "EN_UPDATE"
OTHERWISE PRINT "unknown"
ENDCASE
WHEN 903:
CASE notificationCode% OF
WHEN CBN_KILLFOCUS: PRINT "CBN_KILLFOCUS"
WHEN CBN_SETFOCUS: PRINT "CBN_SETFOCUS"
WHEN CBN_SELCHANGE: PRINT "CBN_SELCHANGE"
WHEN CBN_DROPDOWN: PRINT "CBN_DROPDOWN"
WHEN CBN_CLOSEUP: PRINT "CBN_CLOSEUP"
WHEN CBN_SELENDOK: PRINT "CBN_SELENDOK"
WHEN CBN_SELENDCANCEL: PRINT "CBN_SELENDCANCEL"
OTHERWISE PRINT "unknown"
ENDCASE
WHEN 904:
CASE notificationCode% OF
WHEN LBN_KILLFOCUS: PRINT "LBN_KILLFOCUS"
WHEN LBN_SETFOCUS: PRINT "LBN_SETFOCUS"
WHEN LBN_SELCHANGE: PRINT "LBN_SELCHANGE"
OTHERWISE PRINT "unknown"
ENDCASE
WHEN 1,2,905,906,907,908:
CASE notificationCode% OF
WHEN BN_CLICKED: PRINT "BN_CLICKED"
OTHERWISE PRINT "unknown"
ENDCASE
OTHERWISE PRINT "unknown"
ENDCASE
ENDPROC