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
dlg%=FN_newdialog("Dialogue box", 20, 20, 160, 128, 8, 560)
Adr0%=(dlg%!12+4) AND -3 : REM adr of groupbox ........................
PROC_groupbox(dlg%, "Group box", 0, 4, 4, 152, 96, WS_GROUP)
PROC_editbox(dlg%, "Text box", 101, 12, 20, 64, 12, ES_AUTOHSCROLL)
PROC_editbox(dlg%, "123456", 102, 82, 20, 64, 12, ES_NUMBER)
PROC_dlgctrl(dlg%, "", 109, 0, 0, 12, 12, WS_VISIBLE OR WS_CHILD OR \
\ UDS_AUTOBUDDY OR UDS_ALIGNRIGHT OR UDS_SETBUDDYINT, "msctls_updown32")
Adr1%=(dlg%!12+4) AND -3 : REM adr of combobox ........................
PROC_combobox(dlg%, "", 103, 12, 40, 64, 60, CBS_DROPDOWNLIST)
Adr2%=(dlg%!12+4) AND -3 : REM adr of listbox .........................
PROC_listbox(dlg%, "", 104, 82, 40, 64, 48, 0)
PROC_radiobutton(dlg%, "Radiobutton 1", 105, 12, 64, 64, 10, 0)
PROC_radiobutton(dlg%, "Radiobutton 2", 106, 12, 82, 64, 10, 0)
PROC_checkbox(dlg%, "Checkbox", 107, 82, 82, 64, 10, 0)
PROC_pushbutton(dlg%, "OK", 1, 12, 108, 56, 14, WS_GROUP OR BS_DEFPUSHBUTTON)
PROC_pushbutton(dlg%, "Cancel", 2, 92, 108, 56, 14, 0)
PROC_showdialog(dlg%)
ON CLOSE PROC_closedialog(dlg%):QUIT
ON ERROR PROC_closedialog(dlg%):PRINT'REPORT$:END
PROC_fill : REM Initialise the content ..............
Click%=0
ON SYS Click% = @wparam% : RETURN
Step%=10 : X%=0 : REM ...............................
REPEAT
MOUSE x,y,b:WHILE b:MOUSE x,y,b:WAIT 0:ENDWHILE : REM just to prevent moving the dialog from blocking this demo
REM manipulate template values --------------------
X%+=Step%
IF X%>90 OR X%<10 THEN Step%=-Step%
Adr1%!12=(60<<16) OR 64+X% : REM combobox cx% '(cy%<<16) OR cx%'
Adr2%!8 =(40<<16) OR 82+X% : REM listbox x%
Adr2%!12=(48<<16) OR 64+X% : REM listbox cx%
Adr0%!12=(96<<16) OR 152+X%*2 : REM groupbox cx%
dlg%!30 =(128<<16)OR 160+X%*2 : REM dialog cx%
PROC_closedialog(dlg%) : PROC_showdialog(dlg%)
PROC_fill : REM Re-initialise the content
REM -----------------------------------------------
WAIT 50
click%=0
SWAP Click%, click%
UNTIL click%=1 OR click%=2 OR !dlg%=0
IF click%=1 THEN
PRINT "OK pressed, settings were:"'
DIM text% 255
SYS "GetDlgItemText", !dlg%, 101, text%, 255
PRINT "Text box contained """$$text%""""
SYS "GetDlgItemInt", !dlg%, 102, 0, 1 TO Val%
PRINT "Number box contained ";Val%
SYS "GetDlgItemText", !dlg%, 103, text%, 255
PRINT "Combobox selection was """$$text%""""
SYS "SendDlgItemMessage", !dlg%, 104, LB_GETCURSEL, 0, 0 TO sel%
PRINT "Listbox selection index was ";sel%
SYS "IsDlgButtonChecked", !dlg%, 105 TO rb1%
IF rb1% PRINT "Radiobutton 1 was checked" ELSE PRINT "Radiobutton 2 was checked"
SYS "IsDlgButtonChecked", !dlg%, 107 TO cb%
IF cb% PRINT "Checkbox was checked" ELSE PRINT "Checkbox was not checked"
ELSE
PRINT "Cancel pressed"
ENDIF
PROC_closedialog(dlg%)
END
DEF PROC_fill
SYS "SendDlgItemMessage", !dlg%, 103, CB_ADDSTRING, 0, "Combobox 1"
SYS "SendDlgItemMessage", !dlg%, 103, CB_ADDSTRING, 0, "Combobox 2"
SYS "SendDlgItemMessage", !dlg%, 103, CB_ADDSTRING, 0, "Combobox 3"
SYS "SendDlgItemMessage", !dlg%, 103, CB_ADDSTRING, 0, "Combobox 4"
SYS "SendDlgItemMessage", !dlg%, 103, CB_SETCURSEL, 0, 0
SYS "SendDlgItemMessage", !dlg%, 104, LB_ADDSTRING, 0, "Listbox item 0"
SYS "SendDlgItemMessage", !dlg%, 104, LB_ADDSTRING, 0, "Listbox item 1"
SYS "SendDlgItemMessage", !dlg%, 104, LB_ADDSTRING, 0, "Listbox item 2"
SYS "SendDlgItemMessage", !dlg%, 104, LB_ADDSTRING, 0, "Listbox item 3"
SYS "CheckRadioButton", !dlg%, 105, 106, 105
SYS "SendDlgItemMessage", !dlg%, 109, UDM_SETRANGE, 0, 999
ENDPROC