 RealWinby Indowsway Software With RealWin you can transform your DOS-hosted Fortran program into a great Windows application. 
 
   
  
    
      RealWin functions list -Page 1-
New Page 1
RealWin Function list (Page 1)
  
  
    
      
        | Windows | 
          | 
       
      
        |   | 
        Create_main_window
          and create_window
          -- These
          procedures create windows. During execution you may create and destroy
          as many windows as you wish, using create_window and destroy_window.
          With optional arguments, you can specify a window name, menu, toolbar,
          class name, style, position and size proportionally or in pixels,
          "paint code", file name, text color, text font, owner, icon,
          cursor, background brush, show state, paint procedure, exit procedure,
          scroll
          procedure, and associated bitmap. | 
       
      
        |   | 
        Redefine_window
          -- Redefine_window
          allows you to change various characteristics of a window. The
          descriptions of the arguments are the same as for create_window and
          create_main_window. | 
       
      
        |   | 
        Update_window
          -- This
          routine forces a window to be repainted. | 
       
      
        |   | 
        Set_foreground
          -- This
          routine forces a window to the foreground. | 
       
      
        |   | 
        Window_exists
          -- This
          function returns .TRUE. if the value passed to the window argument is
          a current, valid window. | 
       
      
          | 
        Destroy_window
          -- Destroy_window
          has a single, required, argument, which is the handle of the window to
          destroy. | 
       
    
   
 
  
  
    
      
        | Menus | 
          | 
       
      
        |   | 
        Set_menu_item
          -- The
          menu bar and each drop-down menu are defined by an array of menu_t
          type, one element for each item or separator in the menu. Use
          set_menu_item to assign values to the array elements. Define your own
          command numbers for the menu items, then create a SELECT CASE
          construct in your RW_control procedure to act on the commands. | 
       
      
        |   | 
        Update_menu_item
          -- When
          you want to change the status of a menu item after you have created
          the menu, call update_menu_item. It lets you gray and disable items
          that are not currently valid, then enable them later. | 
       
      
          | 
        Destroy_menu
          --
          If
          you change the structure of a menu, call destroy_menu before using the
          menu array again. This will force RealWin to rebuild the menu in its
          new format. | 
       
    
   
 
  
  
    
      
        | Status
          Bar | 
          | 
       
      
        |   | 
        A
          status bar sits at the bottom of most good applications for Windows,
          displaying various things about the state of the program or the
          computer. Most of the items on the status bar will be maintained by
          RealWin once created. Your program can set fields of type
          STATUS_USER_TEXT throughout the program to inform your user of
          whatever you deem important. The status bar area also doubles as a
          place to display the help text for menus. The status bar will be
          overwritten by help text from the menus when menu items are selected. | 
       
      
        |   | 
        Set_status_item
          -- You
          specify the status bar items with an array of type status_t, which can
          be initialized by calling the subroutine set_status_item. | 
       
      
        |   | 
        Set_status_bar
          -- After
          you modify the status bar, call this subroutine to pass the new values
          to RealWin. | 
       
      
          | 
        Update_status_bar
          -- This
          routine redraws the status bar immediately. | 
       
    
   
 
  
  
    
      
        | Toolbars | 
          | 
       
      
        |   | 
        Toolbars
          are another necessity for a full-featured Windows application. A
          toolbar is a row of buttons that typically sits just below the menu.
          Toolbar items are usually synonyms for commonly-used menu selections.
          When the user clicks the toolbar item, RW_control is passed a
          menu-type command, e.g., idm_open. | 
       
      
        |   | 
        Set_tool_bitmap_item
          -- The
          buttons in a toolbar are created from bitmaps. RealWin creates
          toolbars from bitmaps that are predefined in Windows or toolbar
          bitmaps from files with the .bmp extension. | 
       
      
        |   | 
        Set_toolbar_item
          -- The
          set_toolbar_item subroutine sets up all of the values for given
          toolbar button. | 
       
      
        |   | 
        Update_toolbar_item
          -- The
          update_toolbar_item subroutine updates certain values for given
          toolbar button. | 
       
      
          | 
        Set_toolbar
          -- Add
          a toolbar to a window or update an existing toolbar. If you want to
          specify bitmap or button sizes, you must use this subroutine instead
          of passing the toolbar to a create window routine. | 
       
    
   
 
  
  
    
      
        | Boxes | 
          | 
       
      
        |   | 
        Boxes
          are a RealWin mechanism for dividing up screen real estate. When you
          want sections of a window to be independent of each other, you can
          define a box for each of the areas. The boxes can then be scrolled or
          painted as logical entities. Boxes can overlap; the boxes that are
          defined later in the program flow will write over the earlier ones.
          Define_box and redefine_box have almost the same argument list, but
          handle omitted arguments differently. Define_box has a default value
          for each argument, but the default for redefine_box is the current
          value for the box. | 
       
      
        |   | 
        Define_box
          & Redefine_box
          -- Define_box
          and redefine_box have almost the same argument list, but handle
          omitted arguments differently. Define_box has a default value for each
          argument, but the default for redefine_box is the current value for
          the box. | 
       
      
          | 
        Destroy_box
          -- Remove
          a box from its window. | 
       
    
   
 
  
  
    
      
        | Dialog
          Boxes | 
          | 
       
      
        |   | 
        Dialog
          boxes are the most common tool for getting user input in Windows.
          Often a menu selection will lead to a dialog box popping up to get
          more details about the operation that was selected. A dialog box
          contains ?controls? such as buttons and boxes that can be selected
          and modified by the user. Text, frames and rectangles are used to
          enhance the appearance and functionality of a dialog box. | 
       
      
        |   | 
        Custom
          Edit Boxes 
          With
          RealWin, you can perform almost any custom validation of an edit field
          that you can think of. Specify the customizing feature in the 'custom'
          argument. RealWin includes built-in conversion routines for INTEGER,
          hexadecimal, octal, binary, REAL and DOUBLE PRECISION. If you need
          other custom fields, just write your own conversion in Fortran,
          following the template provided in 'custom.f90'. You can also specify
          a Fortran FORMAT string to the 'format' argument to control conversion
          from numeric variables and their display in the edit box.
          The
          built-in conversion routines validate the syntax of the field as it is
          being entered, and check to see that it is in range between the
          minimum and maximum values. If any of these checks fail, then a
          message box pops up to tell the user of the error. When the message
          box is OKed, the field gets the keyboard focus. 
          The
          edit box can also be a 'spinner', which means that it contains a small
          scroll bar called an 'updown'. When the user clicks the up arrow, the
          field is incremented by the value in integer_increment,
          real_increment, or double_increment, depending upon the type of the
          result. The down arrow causes a similar decrement. 
         | 
       
      
        |   | 
        Set_dialog_item
          -- Call
          set_dialog_item for each item in a dialog box, specifying only those
          entities that you need to; defaults will be supplied for any optional
          argument that is not supplied. | 
       
      
        |   | 
        Update_dialog_item
          -- Changes
          the characteristics of a dialog item. You can change whether a
          "control" in a dialog box is enabled and/or visible, and
          most other characteristics. This routine can be used on a modeless
          dialog box anywhere in your code, or on a modal dialog box in a
          callback routine from that dialog box. | 
       
      
        |   | 
        Dialog_box
          -- The
          dialog_box function creates a modal or modeless dialog box, depending
          on the modeless argument. | 
       
      
        |   | 
        Dialog_one_item
          -- The
          dialog_one_item function lets you place a single control (dialog item)
          on the screen. While it will function as a modeless dialog box, it
          will look like a stand-alone control. The width and heigth will be the
          same as the control. | 
       
      
        |   | 
        Get_open_file_name
          -- The
          get_open_file_name function allows the user to specify a file to open.
          The actual open can be performed in Fortran code. Get_open_file_name
          returns .TRUE. if a filename is selected. | 
       
      
          | 
        Get_save_file_name
          -- The
          get_save_file_name function allows the user to specify the name of a
          file in which to save something. The save can be performed in Fortran
          code with an open or close statement. Get_save_file_name returns
          .TRUE. if a filename is selected. | 
       
    
   
 
  
  
    
      
        | Painting
          and Printing | 
          | 
       
      
        |   | 
        In
          Windows, putting text and graphics into a window is called painting.
          Printing is, of course, doing the same onto paper. The same drawing
          and writing procedures work for printing and different forms of
          painting.
           Painting
          is done in callback procedures so that computation can be separated
          from screen updating and the user interface will operate cleanly.
          RealWin offers you the choice of using automatic painting routines or
          writing your own. If you just want to display scrolled text, then all
          you need to specify is what you want scrolled and RealWin takes care
          of the rest. If you want to create exotic displays, but you don?t
          want to reorganize your program, then ?AUTO_PAINT? will do the job
          for you. If you?re writing new code or just want the maximum in
          performance and capabilities, then you can write your own paint
          subroutine in Fortran. 
         | 
       
      
        |   | 
        Userpaint
          structures 
          Any
          output to the screen or a printer requires a variable of the derived
          type ?userpaint?. RealWin uses the convention of naming userpaint
          structures ?ups?. You don?t need to know what is in a userpaint
          structure to use it, but you can access the components if you want.
          Userpaint structures are only valid while the screen, autopaint, or
          print job is being created. A userpaint structure in a callback paint
          subroutine is created by RealWin before it calls the procedure and
          destroyed after the procedure returns. Start_autopaint and start_print
          initialize userpaint structures which are subsequently invalidated by
          end_autopaint and end_print, respectively. A valid userpaint structure
          must be passed to each RealWin drawing or writing procedure. | 
       
      
        |   | 
        Automatic
          Scrolling 
          You
          can associate text or a bitmap image with a window or a box and then
          let RealWin take care of automatically scrolling it. The normal
          granularity for text scrolling is a character; for bitmaps it is a
          bit. By specifying a callback procedure to the scroll_procedure
          argument, you can take control of the scrolling process. For example,
          if the bitmap consists of rows and columns you could make a click of
          the down arrow go down one row, etc. | 
       
      
        |   | 
        Write_scroll_line
          -- Write
          a line of text to a scrolling window or box. The line is written to
          the associated file (a temporary file if none was specified), and
          displayed as the last line in the window or box. | 
       
      
        |   | 
        Read_scroll_line
          -- Read
          a line of text from a scrolling window or box. Whatever the user types
          while read_scroll_line is active is displayed as the last line in the
          window or box and is written to the associated file (a temporary file
          if none was specified). This routine is useful for making a user
          interface similar to DOS or UNIX, which can be a useful stage in
          porting to Windows. For some applications, this kind of input will
          work for a finished product. | 
       
      
        |   | 
        Delete_scroll_lines
          -- Delete
          lines from a file being displayed in a scrolling window. The from and
          to arguments represent the number of the line in the whole file being
          scrolled, not the number on the screen. | 
       
      
        |   | 
        Set_scroll_position
          -- Force
          the upper-left corner of a scrolling box or window to a specific line
          and/or column. If a bitmap is being scrolled, then line and column
          refer to pixels. | 
       
      
        |   | 
        Get_scroll_position
          -- Get
          the character postions in the scroll file of the first line, last
          line, first column and last column displayed on the screen. If the
          display font is of variable pitch, then the last column will not be
          reliable. This routine is useful for printing what is currently
          displayed in the scroll window. If a bitmap is being scrolled, then
          line and column refer to pixels. | 
       
      
        |   | 
        Automatic
          Painting 
          This
          is powerful tool that allows you to get great Windows functionality
          without reorganizing your existing application. Create a userpaint
          structure by calling start_autopaint, draw your window with any
          RealWin paint functions, then finish up by calling end_autopaint.
          RealWin records the procedure calls, then executes them whenever
          Windows sends a paint message. If you want to add to a window or box
          that has already been auto-painted, call restart_autopaint, which also
          must be terminated with end_autopaint. You can use automatic painting
          to implement your final application or use it as step toward writing a
          Fortran paint subroutine. | 
       
      
        |   | 
        Start_autopaint,
          restart_autopaint
          -- The
          start_autopaint procedure starts recording autopaint calls.
          Restart_autopaint works like start_autopaint except that it doesn't
          delete what was previously written. | 
       
      
        |   | 
        End_autopaint
          -- The
          end_autopaint procedure terminates the recording of paint procedure
          calls and generates a paint message to cause the window or box to
          initially display. | 
       
      
        |   | 
        Painting
          a bitmap 
          Painting to a bitmap facilitates a number of techniques in Windows
          programming. You can draw the image you want on the screen, even if it
          is bigger than the screen. Pass the bitmap to window or box creation
          routine and let RealWin take care of scrolling the image. The bitmap
          can even be printed or converted to a device-independent bitmap and
          stored in a file. You can create you own button faces for toolbars. | 
       
      
        |   | 
        Start_bitmap_draw
          -- Call
          start_bitmap_draw to start a drawing operation on a bitmap. This
          operation does not change what is already in the bitmap, so you can
          write on top of whatever was there. | 
       
      
        |   | 
        End_bitmap_draw
          -- A
          call to end_bitmap_draw disassociates the bitmap from the userpaint
          structure. It also allows the bitmap to be displayed, saved, or
          printed. | 
       
      
        |   | 
        Fortran
          Paint subroutines 
          A
          Fortran paint subroutine lets your application take maximum advantage
          of RealWin paint functions. Specify the name of the subroutine to the
          paint_procedure argument and FORTRAN_PAINTS to the paint_code to
          create_window, create_main_window, define_box, or redefine_box.
          RealWin will call this procedure whenever the window or box needs
          updating. | 
       
      
        |   | 
        Current
          position 
          Some
          RealWin drawing or writing functions use the current position as their
          default starting point and set a new current position based upon their
          finishing point. The current position at the beginning of a paint
          subroutine is the upper left corner of the rectangle to be painted.
          Text and graphics procedures use the same current position. | 
       
      
        |   | 
        Set_current_position
          -- Sets
          a new current postion for drawing operations. All RealWin drawing and
          text routines will also let you specify starting position. | 
       
      
          | 
        Get_current_position
          -- Retrieves
          the current position. | 
       
    
   
 
  
  
    
      
        | Printing | 
          | 
       
      
        |   | 
        RealWin
          provides printing capability through the Windows Print Manager. This
          means that you don?t have to deal with any particular device
          characteristics in your program. Most programs that support printing
          will also let the user set up the print job by calling
          page_setup_dialog. The setup will affect any subsequent printing by
          the program. To start a print job, call start_print. To move to
          another page, call next_print_page. To terminate a print job, call
          end_print.
           One way to
          print is to use the code that paints the screen to compose an image to
          print. After calling start_print, you can call any of the draw
          routines to create a page. You can use the same subroutine you specify
          as a paint_procedure to a window or box. 
         | 
       
      
        |   | 
        Start_print
          -- The
          start_print function starts a print job, including calling the print
          dialog. The userpaint structure ?ups? must be declared in your
          code, and will be filled in for use by any of the RealWin drawing or
          writing functions. | 
       
      
        |   | 
        Next_print_page
          -- The
          next_print_page subroutine finishes one page of printing and gets
          ready for another. | 
       
      
        |   | 
        End_print
          -- The
          end_print subroutine must be called to complete a print job. | 
       
      
        |   | 
        Page_setup_dialog
          -- The
          page_setup_dialog function will normally be called in response to a
          menu item labeled "Page Setup". It gives the user control
          over the printer, margins, orientation, etc., of subsequent print
          jobs. | 
       
      
        |   | 
        Set_output_fit
          -- The
          set_output_fit subroutine sets the size and 'fitting' mode of a
          userpaint variable, typically for the printer. This allows you to
          place your printed output in a particular place on the page and set
          its size. You could even print several images on a single piece of
          paper, by creating frames with calls to set_output_fit.
           f you want
          to specify the sizes and locations in inches or millimeters, then use
          the conversion routines (y_millimeters_to_pixel, y_inches_to_pixel),
          passing the results to the pixel_? arguments. 
          Specifying
          fit_code tells RealWin how to fit your output into the printed page.
          The ?model? shape is derived from the window or box, if specified,
          otherwise from the whole screen. If you specify locations and
          fit_code, then the ?fitting? is within the area you specified. 
         | 
       
      
        |   | 
        Get_page_data
          -- The
          get_page_data subroutine gets information needed for printing text.
          The information pertains to the number of columns and lines that will
          fit on a page with the currently selected font, and information the
          user specified in the page setup dialog box. If you are using a
          fixed-width font then minimum_chars and average_chars will be the
          same. | 
       
      
        |   | 
        Start_dummy_userpaint
          -- Start
          a dummy userpaint structure compatible with the screen. This can be
          useful doing inquiry on the display when you are not actually
          painting. | 
       
      
          | 
        End_dummy_userpaint
          -- Release
          any resources associated with the dummy userpaint structure. | 
       
    
   
 
  
  
    
      
        | Text
          Output | 
          | 
       
      
        |   | 
        Write_text
          -- Write_text
          writes ASCII text to a window, box, or printer. If the location of the
          text is not specified, then the current position will be used. RealWin
          lets you write text in various fonts and colors, with rotation,
          italics, boldface, or underlining. Automatic formatting, margins, and
          tab stops are also available. | 
       
      
          | 
        Get_text_extent
          -- Find
          out how much space the given text will require when it is printed.
          This is useful when you have some rather delicate formatting to do.
          The dimensions returned are for text written in a normal, horizontal
          direction. | 
       
    
   
 
  
  
    
      
        | Lines
          and Shapes | 
          | 
       
      
        |   | 
        Lines
          and shapes use the current pen (See Pens). Shapes also use the
          current brush (See Brushes) to fill their interior. To draw
          unfilled shapes call new_brush with the BS_NULL style. Many line and
          shape procedures are based upon a bounding rectangle. The rectangle is
          defined by the Y-coordinates of its top and bottom, and the
          X-coordinates of its left and right sides. Ellipses are drawn within
          the bounding rectangle. Arcs, chords, and pies are created based on a
          part of an ellipse. All functions are capable of returning the actual
          pixel coordinates used by RealWin to draw the object. | 
       
      
        |   | 
        Draw_line
          -- The
          draw_line function draws a line using the current pen. If either of
          the beginning coordinates are not specified, then the current position
          is used. Coordinates can be specified proportionally or with pixels. | 
       
      
        |   | 
        Draw_polyline
          -- Draw_polyline
          is a powerful procedure that is useful for plotting as well as other
          drawing functions. It draws a line from the first point in the input
          array to the second point, then from the second point to the third
          point, continuing to the last point in the array. 
          This subroutine allows you to specify the ranges of the x and y axes
          so that you can pass your actual data. Left_x is the value that will
          be plotted at the left of the output rectangle, top_y at the top, and
          so forth. You can use set_output_fit to reduce the output rectangle,
          or you can define a box in the window for a plot. | 
       
      
        |   | 
        Draw_ellipse
          -- Draw
          an ellipse within the bounding rectangle. | 
       
      
        |   | 
        Draw_circle
          -- Draw
          a circle based upon a center point and a radius. | 
       
      
        |   | 
        Draw_rectangle
          -- Draw
          a filled or empty rectangle according to proportional or pixel
          arguments. You can draw a squares by specifying only three of the four
          coordinates. If the right is omitted, the width is calculated to be
          the same as the height. If the bottom is omitted, the height is set
          the same as the width. | 
       
      
        |   | 
        Draw_arc
          and draw_chord
          -- A
          chord is a shape formed by an arc plus a line connecting its
          endpoints. An ellipse formed by the specified bounding rectangle
          defines the curve of the arc or chord. Two ?radials? define the
          beginning and end points of the arc. A radial is an invisible ray that
          starts at the center of the bounding rectangle and passes through its
          defining point. The arc begins where the beginning radial intersects
          the ellipse, extending counter-clockwise to the point where the end
          radial intersects the ellipse. | 
       
      
        |   | 
        Draw_polygon
          -- Draw
          a filled or empty polygon whose vertices are defined as points in an
          array. The points can be specified as either proportional or pixel. | 
       
      
          | 
        Draw_bezier
          -- Draw
          one or a series of cubic Bézier curves using the points in the
          "points" or "pixel_points" array. The first curve
          is drawn from the first point to the fourth point by using the second
          and third points as control points. Each subsequent curve in the
          sequence needs exactly three more points: the ending point of the
          previous curve is used as the starting point, the next two points in
          the sequence are control points, and the third is the ending point.
          Therefore, the number of points must be a multiple of three, plus one. | 
       
    
   
 
 | 
     
    
       | 
     
    
      |   | 
     
     
  
  
  
   | 
    | 
  
   
   |