This is a demo program created with Face Value 1.0. The RSC-file was 
loaded into Face Value, some flags were set, and Face Value produced 
a LST file for GFA Basic 3.x. You are now watching the result. All of 
the code added afterwards to this LST-file by the user is listed below:

Added in the procedure @user_rsc_interact():
--------------------------------------------
  ~@win_open_dialog(2,about_dialog&,iconify_icon_1&)
  ~@win_open_dialog(5,modal&,iconify_icon_1&)
  ~@win_open_dialog(2,non_modal&,iconify_icon_1&)
  ~@win_open_dialog(3,toolbox&,iconify_icon_1&)
  ~@win_open_dialog(4,fvt_asci&,iconify_icon_1&)

  ~@win_open(" Standard window ","  Info line...",simple_window%,backgrnd&,
             800,800,16,0,0,0,800,800,iconify_icon_1&)
  ~@win_open(" Toolstrip window ","",toolstrip_window%,toolstrip&,
             800,800,16,0,0,0,800,800,iconify_icon_1&)
  ~@win_open(" Toolbar window ","",toolbar_window%,toolbar&,800,800,
             16,0,0,0,800,800,iconify_icon_1&)

  @win_close_all
  @win_close(window_array&(index&,0))

  @win_iconify(-1)
  @win_iconify_all
  @win_uniconify(-1)
  @win_uniconify_all
  @win_cycle

  @rsc_set_new_menu(menu&)
  @rsc_set_new_menu(menu_2&)

  @desktop_new(desktop&,desklogo&)
  @desktop_restore

  a$=@fileselector$("Fileselector with title!:",program_path$,"",0)

  IF @alert_wind(1,alert_1&,"")=1
    IF @alert_wind(1,alert_2&,"")=1
      ~@alert_wind(1,alert_3&,"")=1
    ENDIF
  ENDIF

  @progress_open(-1)
  FOR albert&=0 TO 1000
    EXIT IF @progress_update(INT(albert&/10))
  NEXT albert&
  @progress_close

  time&=@busy_open(TRUE)
  FOR a&=0 TO 4000
    EXIT IF @busy_update(time&)
  NEXT a&
  @busy_close

  @open_text_window    !****** Calls to procedures written for this demo,
  @change_font(index&) !****** see bottom of text.

  @aes_screen_lock
  FOR a&=0 TO 80
    @mouse_busy(2)
    ~EVNT_TIMER(100)
  NEXT a&
  @mouse_form(-1)
  @aes_clear_buffers
  @aes_screen_unlock


Changed/added in the procedure @user_rsc_var_init:
--------------------------------------------------
  DIM lstbx_radio_arr$(23)
  LET lstbx_radio_ndx&=24 
  LET lstbx_radio_var&=1
  FOR a&=0 TO 23
    lstbx_radio_arr$(a&)="Radio "+STR$(a&)
  NEXT a&

  DIM chcklist_arr$(23)
  DIM chcklist_arr!(23)
  LET chcklist_ndx&=24 
  FOR a&=0 TO 23
    chcklist_arr$(a&)="Check "+STR$(a&)
  NEXT a&

  DIM list_menu_box_arr$(23)
  LET list_menu_box_ndx&=24
  FOR a&=0 TO 23
    list_menu_box_arr$(a&)="Menu "+STR$(a&)
  NEXT a&


Added in the procedure procedure @user_keyb():
----------------------------------------------
  @win_keyb_scroll(handle&,ks&,key&)


Added in the procedure @user_window_content():
----------------------------------------------
  LOCAL a&,b&,x&,y&,w&,h&
  SELECT userhandle&
  CASE 42
    @win_get_workarea(index&,x&,y&,w&,h&)
    y&=0
    b&=DIV(off_y&,window_array&(index&,29))
    x&=SUB(window_array&(index&,28),off_x&)
    FOR a&=b& TO ADD(b&,DIV(h&,window_array&(index&,29)))
      TEXT x&,y&,txt$(a&)
      ADD y&,window_array&(index&,29)
    NEXT a&
  DEFAULT
    FOR a&=95 TO 395 STEP 100
      CIRCLE 400-off_x&,400-off_y&,a&
    NEXT a&
  ENDSELECT


Added in the procedure @user_on_open:
-------------------------------------
  LOCAL d%
  IF dimmed!=FALSE
    dimmed!=TRUE
    num_lines&=202
    line_w&=90
    DIM txt$(num_lines&)
    OPEN "I",#10,"EX.TXT"
    RECALL #10,txt$(),num_lines&,d%
    CLOSE #10
  ENDIF


Added in the procedure @user_on_exit:
-------------------------------------
  IF acc&=0
    @vdi_unload_fonts
    ERASE txt$()
  ENDIF


Added in the procedure @user_win_close_all:
-------------------------------------------
  FOR a&=0 TO max_number_windows&
    IF window_array&(a&,0)>0
      IF window_array&(a&,1)=0
        IF window_array&(a&,8)=42
          @vdi_unload_fonts(window_array&(a&,22))
        ENDIF
      ENDIF
    ENDIF
  NEXT a&


Added in the function @user_win_close_ok():
-------------------------------------------
  IF userhandle&=42
    @vdi_unload_fonts(window_array&(index&,22))
  ENDIF


Written spesifically for this demo program:
-------------------------------------------
  PROCEDURE open_text_window
    LOCAL handle&,index&,totw&,toth&,scrlstep&,d&  
    ~GRAF_HANDLE(w&,h&,d&,d&)                      
    totw&=MUL(w&,line_w&)                               
    toth&=MUL(h&,num_lines&)                               
    scrlstep&=h&                                   
    handle&=@win_open(" System font at 10 points ","",menu_in_window%,window_menu&,
                      totw&,toth&,scrlstep&,42,0,0,1200,1200,iconify_icon_1&)
    IF handle&>0                                   
      index&=@win_get_index(handle&)               
      ~@vdi_load_fonts(window_array&(index&,22))
      @vst_alignment(window_array&(index&,22),0,5) 
      window_array&(index&,26)=1                   
      window_array&(index&,27)=10                  
      window_array&(index&,28)=w&                  
      window_array&(index&,29)=h&                 
    ENDIF
  RETURN

  PROCEDURE change_font(index&)
    LOCAL id&,size&,wcell&,hcell&,ret%,x&,y&,w&,h&,name$,handle&
    IF index&=-1                        
      ~WIND_GET(0,10,handle&,d&,d&,d&)  
      index&=@win_get_index(handle&)    
    ENDIF
    id&=window_array&(index&,26)        
    size&=window_array&(index&,27)      
    wcell&=window_array&(index&,28)     
    hcell&=window_array&(index&,29)     
    ret%=@xfsl(window_array&(index&,22),"Choose Font",254,name$,id&,size&,wcell&,hcell&)
    IF ret%=1                       
      @win_set_title(index&," "+name$+" "+STR$(size&)+" points ") 
      window_array&(index&,26)=id&       
      window_array&(index&,27)=size      
      window_array&(index&,28)=wcell&    
      window_array&(index&,29)=hcell&     
      @win_change_size(index&,MUL(wcell&,num_lines&),MUL(hcell&,line_w&),hcell&,0)  
      @win_get_workarea(index&,x&,y&,w&,h&)  
      @win_send_redraw(index&,x&,y&,w&,h&)  
    ENDIF
  RETURN





