REM +++++ A much emasculated DLGDEMO, modified to open a new dialog box
REM to display a histogram
INSTALL @lib$+"WINLIB2"
BS_DEFPUSHBUTTON = &1
CB_ADDSTRING = &143
CB_SETCURSEL = &14E
CBS_DROPDOWNLIST = &3
ES_AUTOHSCROLL = &80
ES_NUMBER = &2000
ES_READ_ONLY = &880
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, 32768)
PROC_groupbox(dlg%, "Group box", 0, 4, 4, 152, 96, WS_GROUP)
PROC_pushbutton(dlg%, "OK", 1, 12, 108, 56, 14, WS_GROUP OR BS_DEFPUSHBUTTON)
PROC_pushbutton(dlg%, "Cancel", 2, 92, 108, 56, 14, 0)
REM +++++++++++++++++++++++++++++++++++++++ new code:
INSTALL @lib$+"WINLIB5A"
WS_POPUP = &80000000
dlg2%=FN_newdialog("MY HISTOGRAM", 20, 20, 500, 260, 10, 32768)
PROC_static(dlg2%,"",700,100,100,500,500,&E)
REM +++++++++++++++++++++++++++++++++++++++ end of new code
PROC_showdialog(dlg%)
ON CLOSE PROC_closedialog(dlg%):QUIT
ON ERROR PROC_closedialog(dlg%):PRINT'REPORT$:END
Click%=0
ON SYS Click% = @wparam% : RETURN
REPEAT
WAIT 1
click%=0
SWAP Click%, click%
UNTIL click%=1 OR click%=2 OR !dlg%=0
IF click%=1 THEN
REM +++++++++++++++++++++++++++++++++++++++ new code:
PROC_showdialog(dlg2%)
VDU 23,22,900;650;11,16,16,0
GCOL 135
GCOL 12
CLG
FOR n% = 0 TO 17
x% = n% * 88
y% = n% * 34
RECTANGLE FILL x%+100,150,65,y%
NEXT
file$ = "zzz.bmp"
OSCLI "GSAVE """+file$+""" 100,100,500,500"
LR_LOADFROMFILE = 16
STM_SETIMAGE = 370
SYS "LoadImage", 0, file$, 0, 250, 250, LR_LOADFROMFILE TO hbitmap%
SYS "SendDlgItemMessage", !dlg2%, 700, STM_SETIMAGE, 0, hbitmap%
ELSE
PROC_closedialog(dlg2%)
SYS "DeleteObject", hbitmap%
ENDIF
REM +++++++++++++++++++++++++++++++++++++++ end of new code
END
STM_SETIMAGE = 370
SS_BITMAP = &E
BS_DEFPUSHBUTTON = 1
INSTALL @lib$+"WINLIB2"
dlg%=FN_newdialog("Displaying animated histogram in a dialog box", 20, 20, 400, 200, 8, 500)
cx%=380 : cy%=160
PROC_static(dlg%,"",123,10,10,cx%,cy%,SS_BITMAP)
PROC_pushbutton(dlg%, "Start", 1, 240, 180, 56, 14, BS_DEFPUSHBUTTON)
PROC_pushbutton(dlg%, "Cancel", 2, 310, 180, 56, 14, 0)
PROC_showdialog(dlg%)
ON CLOSE PROC_close:QUIT
ON ERROR PROC_close:PRINT'REPORT$:END
DIM rc{l%,t%,r%,b%}
rc.r%=cx% : rc.b%=cy%
SYS "MapDialogRect", !dlg%, rc{}
cx%=rc.r% : cy%=rc.b%
SYS "CreateCompatibleBitmap", @memhdc%, cx%, cy% TO hbitmap%
*REFRESH OFF
Click%=0 : start%=0
ON SYS Click% = @wparam% : RETURN
REPEAT
IF start%=1 THEN
a%+=1 : IF a%>30 THEN a%=1
FOR n% = 0 TO 17
SYS "SelectObject", @memhdc%, hbitmap% TO C%
REM do your graphics here
x% = n% * 64
y% = n% * a%
GCOL RND(15): RECTANGLE FILL x%, 2*@vdu%!212-2*cy%, 32, y%
REM .....................
SYS "SelectObject", @memhdc%, C%
SYS "SendDlgItemMessage", !dlg%, 123, STM_SETIMAGE, 0, hbitmap%
*REFRESH
WAIT 2
NEXT n%
ENDIF
click%=0
SWAP Click%, click%
IF click%=1 THEN start%=1
UNTIL click%=2 OR !dlg%=0
PROC_close : QUIT
DEF PROC_close
PROC_closedialog(dlg%) : SYS "DeleteObject", hbitmap%
ENDPROC