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