home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / magazine / drdobbs / 1991 / 08 / dflat5 / dflat.doc < prev    next >
Text File  |  1991-06-26  |  37KB  |  1,005 lines

  1. Window Classes:
  2.  
  3. Window classes define the behavior of windows. Each class has its own
  4. unique reaction to messages. Classes derive from other classes.
  5.  
  6.     NORMAL       base window for all window classes
  7.     APPLICATION  application window. has the menu 
  8.                  (derived from NORMAL)
  9.     TEXTBOX      textbox. base window for listbox, editbox, etc.
  10.                  (derived from NORMAL)
  11.     LISTBOX      listbox. base window for menubar
  12.                  (derived from TEXTBOX)
  13.     EDITBOX      editbox
  14.                  (derived from TEXTBOX)
  15.     MENUBAR      the application's menu bar
  16.                  (derived from NORMAL)
  17.     POPDOWNMENU  popdown menu
  18.                  (derived from LISTBOX)
  19.     BUTTON       command button in a dialog box
  20.                  (derived from TEXTBOX)
  21.     DIALOG       dialog box. parent to editbox, button, listbox, etc.
  22.                  (derived from NORMAL)
  23.     ERRORBOX     for displaying an error message
  24.                  (derived from DIALOG)
  25.     MESSAGEBOX   for displaying a message
  26.                  (derived from DIALOG)
  27.     HELPBOX      help window
  28.                  (derived from DIALOG)
  29.     TEXT         static text on a dialog box
  30.     RADIOBUTTON  radio button on a dialog box
  31.     CHECKBOX     check box on a dialog box
  32.     STATUSBAR    status bar at the bottom of application window
  33.  
  34.                D-Flat Window Class Tree
  35.     ┌─────────────────────────────────────────────┐
  36.     │                                             │
  37.     │      NORMAL                                 │
  38.     │        │                                    │
  39.     │        ├── APPLICATION                      │
  40.     │        │                                    │
  41.     │        ├── MENUBAR                          │
  42.     │        │                                    │
  43.     │        ├── TEXTBOX                          │
  44.     │        │      │                             │
  45.     │        │      ├── LISTBOX                   │
  46.     │        │      │      │                      │
  47.     │        │      │      └──── POPDOWNMENU      │
  48.     │        │      │                             │
  49.     │        │      ├── EDITBOX                   │
  50.     │        │      │                             │
  51.     │        │      ├── STATUSBAR                 │
  52.     │        │      │                             │
  53.     │        │      └── BUTTON                    │
  54.     │        │                                    │
  55.     │        └── DIALOG                           │
  56.     │              │                              │
  57.     │              ├── ERRORBOX                   │
  58.     │              │                              │
  59.     │              ├── MESSAGEBOX                 │
  60.     │              │                              │
  61.     │              └── HELPBOX                    │
  62.     │                                             │
  63.     └─────────────────────────────────────────────┘
  64.  
  65.  
  66. Window Attributes:
  67.  
  68. Every window has an attribute word that defines some of its
  69. appearance and behavior. The following values are bitwise flags that
  70. OR together to make a window's attributes.
  71.  
  72. You can establish default attributes for a window's class, add
  73. additional attributes when you create the window, and use the
  74. AddAttribute, ClearAttribute, and TestAttribute macros to change and
  75. test a window's attributes.
  76.  
  77.     SHADOW       has a shadow
  78.     MOVEABLE     can move the window with mouse or cursor
  79.     SIZEABLE     can resize the window with mouse or cursor
  80.     HASMENUBAR   has a menubar (an application window)
  81.     VSCROLLBAR   has a vertical scroll bar
  82.     HSCROLLBAR   has a horizontal scroll bar
  83.     VISIBLE      is visible
  84.     SAVESELF     saves its own video memory
  85.     TITLEBAR     has a title bar 
  86.     CONTROLBOX   has a control box and control menu
  87.     MINMAXBOX    has a min/max box 
  88.     NOCLIP       is not clipped to its parent's borders
  89.     READONLY     is a readonly textbox
  90.     MULTILINE    is a multiline editbox or listbox
  91.     HASBORDER    has a border
  92.     HASSTATUSBAR has a statusbar (application window only)
  93.  
  94. Messages:
  95.  
  96. A D-Flat program is message-driven. You initiate message processing
  97. with the init_messages function, create a window with the
  98. CreateWindow function, and go into the message dispatching loop with
  99. the dispatch_message function. 
  100.  
  101. A window can have a window-processing function. When the user causes
  102. events to occur by pressing keys and using the mouse, D-Flat sends
  103. messages to the window's function. That function can send messages to
  104. itself and other windows with the SendMessage and PostMessage
  105. functions.
  106.  
  107. Windows are declared as members of a class. Every class has a default
  108. window-processing function. If you do not provide one for an instance
  109. of a window class, the default one receives messages for the window.
  110. Your custom window-processing function--if one exists--should chain to
  111. the default window-processing function for the blass by calling the
  112. DefaultWndProc function.
  113.  
  114. There are five things a window-processing function can do with a
  115. message:
  116.   - ignore it and let the D-Flat default processing occur.
  117.   - suppress it by returning without chaining to the default
  118.     window-processing function for the window class.
  119.   - chain to the default window-processing function and then do some
  120.     additional processing.
  121.   - do some preliminary processing and then chain to the default
  122.     window-processing function.
  123.   - do all the processing of the message and then return without 
  124.     chaining to the default window-processing function for the 
  125.     window class.
  126.  
  127. Following are the messages that an application program would use.
  128. There are other messages, but they are used by D-Flat only.
  129.  
  130. Process Communication Messages  
  131.  
  132. START                  start message processing (not used now)
  133.   Sent:    
  134.   P1:      
  135.   P2:      
  136.   Returns: 
  137.  
  138. STOP                   stop message processing        
  139.   Sent:    by application window to NULLWND to stop message 
  140.            dispatch loop
  141.   P1:      
  142.   P2:      
  143.   Returns: 
  144.  
  145. COMMAND                send a command to a window
  146.   Sent:    to send command
  147.   P1:      command code (commands.h)
  148.   P2:      additional data (command-dependent)
  149.   Returns: Nothing if sent by PostCommand
  150.            Command-dependent value if sent by SendCommand
  151.  
  152.  
  153. Window Management Messages  
  154.  
  155. CREATE_WINDOW          create a window                
  156.   Sent:    by DFLAT to new window after window is created
  157.   P1:      
  158.   P2:      
  159.   Returns: 
  160.  
  161. SHOW_WINDOW            show a window                  
  162.   Sent:    by the app to the window to display the window
  163.   P1:      
  164.   P2:      
  165.   Returns: 
  166.  
  167. HIDE_WINDOW            hide a window                  
  168.   Sent:    by the app to the window to hide the window
  169.   P1:      
  170.   P2:      
  171.   Returns: 
  172.  
  173. CLOSE_WINDOW           delete a window                
  174.   Sent:    by the app to destroy a window
  175.   P1:      
  176.   P2:      
  177.   Returns: 
  178.  
  179. SETFOCUS               set and clear the focus        
  180.   Sent:    by D-Flat or the app to set or release the focus
  181.   P1:      true = set, false = release
  182.   P2:      
  183.   Returns: 
  184.  
  185. PAINT                  paint the window's data space  
  186.   Sent:    to paint the client area of a window
  187.   P1:      RECT relative to window (0/0 = upper left) to paint
  188.            or 0 to paint entire client area
  189.   P2:      
  190.   Returns: 
  191.  
  192. BORDER                 paint the window's border      
  193.   Sent:    to paint a window's border
  194.   P1:      RECT relative to window (0/0 = upper left) to paint
  195.            or 0 to paint entire border
  196.   P2:      
  197.   Returns: FALSE to suppress D-Flat title display 
  198.            (e.g. the window displays its own border)
  199.  
  200. TITLE                  display the window's title     
  201.   Sent:    by D-Flat when it is about to display a window's title
  202.   P1:      RECT relative to window (0/0 = upper left) to paint
  203.            or 0 to paint entire title
  204.   P2:      
  205.   Returns: FALSE to suppress D-Flat title display 
  206.            (e.g. the window displays its own title)
  207.  
  208. MOVE                   move the window                
  209.   Sent:    to move a window
  210.   P1:      new left coordinate
  211.   P2:      new upper coordinate
  212.   Returns: 
  213.  
  214. SIZE                   change the window's size       
  215.   Sent:    to resize a window
  216.   P1:      new right coordinate
  217.   P2:      new lower coordinate
  218.   Returns: 
  219.  
  220. MAXIMIZE               maximize the window            
  221.   Sent:    to maximize a window within its parent's client area
  222.   P1:      
  223.   P2:      
  224.   Returns: 
  225.  
  226. MINIMIZE               minimize the window            
  227.   Sent:    to minimize a window to an icon 
  228.   P1:      
  229.   P2:      
  230.   Returns: 
  231.  
  232. RESTORE                restore the window             
  233.   Sent:    to restore a window to its position and size prior to the
  234.            maximize or minimize operation
  235.   P1:      
  236.   P2:      
  237.   Returns: 
  238.  
  239. INSIDE_WINDOW          test x/y inside a window       
  240.   Sent:    to test to see if coordinates are inside a window
  241.   P1:      x
  242.   P2:      y
  243.   Returns: true or false
  244.  
  245.  
  246. Clock Messages  
  247.  
  248. CLOCKTICK              the clock ticked               
  249.   Sent:    every second to a window that has captured the clock
  250.   P1:      segment of time display string
  251.   P2:      offset of time display string
  252.   Returns: 
  253.  
  254. CAPTURE_CLOCK          capture clock into a window    
  255.   Sent:    to capture the clock
  256.   P1:      
  257.   P2:      
  258.   Returns: 
  259.  
  260. RELEASE_CLOCK          release clock to the system    
  261.   Sent:    to release the captured clock
  262.   P1:      
  263.   P2:      
  264.   Returns: 
  265.  
  266.  
  267. Keyboard and Screen Messages  
  268.  
  269. KEYBOARD               key was pressed                
  270.   Sent:    when key is pressed. sent to the window that has the focus 
  271.   P1:      keystroke
  272.   P2:      shift key mask
  273.   Returns: 
  274.  
  275. CAPTURE_KEYBOARD       capture keyboard into a window 
  276.   Sent:    by window to itself to capture the keyboard 
  277.            regardless of focus
  278.   P1:      
  279.   P2:      
  280.   Returns: 
  281.  
  282. RELEASE_KEYBOARD       release keyboard to system     
  283.   Sent:    by window to itelf to release the captured keyboard
  284.   P1:      
  285.   P2:      
  286.   Returns: 
  287.  
  288. KEYBOARD_CURSOR        position the keyboard cursor   
  289.   Sent:    to position the keyboard cursor
  290.   P1:      x (if sent by window, 0 = left client area)
  291.   P2:      y (if sent by window, 0 = top client area)
  292.            if sent with NULLWND, x/y are relative to the screen
  293.   Returns: 
  294.  
  295. CURRENT_KEYBOARD_CURSOR    read the cursor position
  296.   Sent:    to retrieve the cursor position
  297.   P1:      x (relative to the screen)
  298.   P2:      y (relative to the screen)
  299.   Returns: 
  300.  
  301. HIDE_CURSOR            hide the keyboard cursor       
  302.   Sent:    to hide the keyboard cursor
  303.   P1:      
  304.   P2:      
  305.   Returns: 
  306.  
  307. SHOW_CURSOR            display the keyboard cursor    
  308.   Sent:    to display the keyboard cursor
  309.   P1:      
  310.   P2:      
  311.   Returns: 
  312.  
  313. SAVE_CURSOR            save the cursor's configuration
  314.   Sent:    to save the keyboard cursor's current configuration 
  315.   P1:      
  316.   P2:      
  317.   Returns: 
  318.  
  319. RESTORE_CURSOR         restore the saved cursor       
  320.   Sent:    to restore a keyboard cursor's saved configuration 
  321.   P1:      
  322.   P2:      
  323.   Returns: 
  324.  
  325. SHIFT_CHANGED          the shift status changed       
  326.   Sent:    to in-focus window when the user presses or 
  327.            releases shift, alt, or ctrl key
  328.   P1:      BIOS shift key mask
  329.   P2:      
  330.   Returns: 
  331.  
  332. WAITKEYBOARD        wait for key release
  333.   Sent:    to wait for a keypress release
  334.   P1:
  335.   P2:      
  336.   Returns: 
  337.  
  338.  
  339. Mouse Messages  
  340.  
  341. MOUSE_INSTALLED        test for mouse installed       
  342.   Sent:    to see if the mouse is installed
  343.   P1:      
  344.   P2:      
  345.   Returns: true or false
  346.  
  347. RIGHT_BUTTON           right button pressed           
  348.   Sent:    to window when the user presses the right button
  349.            (sent only when mouse cursor is within the window
  350.             or the window has captured the mouse)
  351.   P1:      x
  352.   P2:      y
  353.   Returns: 
  354.  
  355. LEFT_BUTTON            left button pressed            
  356.   Sent:    to window when the user presses the left button
  357.            (sent only when mouse cursor is within the window
  358.             or the window has captured the mouse)
  359.   P1:      x
  360.   P2:      y
  361.   Returns: 
  362.  
  363. DOUBLE_CLICK           left button doubleclicked    
  364.   Sent:    to window when the user double-clicks the left button
  365.            (sent only when mouse cursor is within the window
  366.             or the window has captured the mouse)
  367.            (a LEFT_BUTTON message will have preceded this one)
  368.   P1:      x
  369.   P2:      y
  370.   Returns: 
  371.  
  372. MOUSE_MOVED            mouse changed position         
  373.   Sent:    to window when the mouse has moved
  374.            (sent only when mouse cursor is within the window
  375.             or the window has captured the mouse)
  376.   P1:      x
  377.   P2:      y
  378.   Returns: 
  379.  
  380. BUTTON_RELEASED        mouse button released          
  381.   Sent:    to window when user releases mouse button
  382.            (sent only when mouse cursor is within the window
  383.             or the window has captured the mouse)
  384.   P1:      x
  385.   P2:      y
  386.   Returns: 
  387.  
  388. CURRENT_MOUSE_CURSOR   get mouse position             
  389.   Sent:    to determine the current mouse position
  390.   P1:      address of x
  391.   P2:      address of y
  392.   Returns: 
  393.  
  394. MOUSE_CURSOR           set mouse position             
  395.   Sent:    to set the current mouse position
  396.   P1:      x
  397.   P2:      y
  398.   Returns: 
  399.  
  400. SHOW_MOUSE             make mouse cursor visible      
  401.   Sent:    to display the mouse cursor
  402.   P1:      
  403.   P2:      
  404.   Returns: 
  405.  
  406. HIDE_MOUSE             hide mouse cursor              
  407.   Sent:    to hide the mouse cursor
  408.   P1:      
  409.   P2:      
  410.   Returns: 
  411.  
  412. WAITMOUSE              wait until button released     
  413.   Sent:    to wait until the user releases the mouse button
  414.   P1:      
  415.   P2:      
  416.   Returns: 
  417.  
  418. TESTMOUSE              test any mouse button pressed  
  419.   Sent:    to see if either mouse button is pressed
  420.   P1:      
  421.   P2:      
  422.   Returns: true or false
  423.  
  424. CAPTURE_MOUSE          capture mouse into a window    
  425.   Sent:    by/to a window to capture all mouse activity 
  426.            regardless of whether it occurs inside this window
  427.   P1:      
  428.   P2:      
  429.   Returns: 
  430.  
  431. RELEASE_MOUSE          release the mouse to system    
  432.   Sent:    release a captured mouse
  433.   P1:      
  434.   P2:      
  435.   Returns: 
  436.  
  437.  
  438. Text Box Messages  
  439.  
  440. ADDTEXT                add text to the text box       
  441.   Sent:    to append a line of text to the text box
  442.   P1:      address of null-terminated string 
  443.            (textbox makes its own copy. string can go out of scope.)
  444.   P2:      
  445.   Returns: 
  446.  
  447. CLEARTEXT              clear the text box             
  448.   Sent:    clear all text from the text box
  449.   P1:      
  450.   P2:      
  451.   Returns: 
  452.  
  453. SETTEXT                set address of text buffer     
  454.   Sent:    To set text buffer to caller's text.
  455.   P1:      address of text buffer
  456.            (lines are terminated by \n without \0)
  457.            (textbox makes its own copy. string can go out of scope.)
  458.   P2:      length of text buffer
  459.   Returns: 
  460.  
  461. SCROLL                 vertical scroll of text box    
  462.   Sent:    to scroll a text window vertically one line
  463.   P1:      true = scroll up, false = scroll down
  464.   P2:
  465.   Returns: 
  466.  
  467. HORIZSCROLL            horizontal scroll of text box  
  468.   Sent:    to scroll a text window horizontally one line
  469.   P1:      true = scroll left
  470.   P2:      false = scroll right
  471.   Returns: 
  472.  
  473.  
  474. Edit Box Messages  
  475.  
  476. EB_GETTEXT             get text from an edit box      
  477.   Sent:    Get the line of text from a single-line editbox
  478.   P1:      address of receiving buffer
  479.   P2:      max length to copy
  480.   Returns: 
  481.  
  482. EB_PUTTEXT             put text into an edit box      
  483.   Sent:    replace old or insert first text into an editbox
  484.   P1:      address of text (null-terminated string)
  485.   P2:      
  486.   Returns: 
  487.  
  488.  
  489. Application Window Messages
  490.  
  491. ADDSTATUS               write text to the status bar
  492.   Sent:    to write to or clear status bar text area
  493.   P1:      address of text (null-terminated string) or NULL to clear
  494.   P2:      
  495.   Returns: 
  496.  
  497. List Box Messages  
  498.  
  499. LB_SELECTION               list box selection
  500.   Sent:    sent by list box to self and to parent (if parent is not
  501.            a simple LISTBOX window) when user moves to an entry on 
  502.            the list box.
  503.   P1:      selection number: 0, 1, ...
  504.   P2:      if multi-line selection listbox, shift status mask
  505.            if not, true = selection was same as choice (e.g. mouse)
  506.   Returns: 
  507.  
  508. LB_CHOOSE               list box choice        
  509.   Sent:    sent to parent of list box when user chooses an item 
  510.            from the list box
  511.   P1:      selection number: 0, 1, ...
  512.   P2:      
  513.   Returns: 
  514.  
  515. LB_CURRENTSELECTION    return the current selection   
  516.   Sent:    To get the current selection number (where the listbox
  517.            cursor is positioned)
  518.   P1:      
  519.   P2:      
  520.   Returns: selection number: 0, 1, ...
  521.  
  522. LB_GETTEXT             return the text of selection   
  523.   Sent:    To get a copy of the text at a specified line
  524.   P1:      Address of string to receive copy of text
  525.   P2:      Line number: 0, 1, ...
  526.   Returns: 
  527.  
  528. LB_SETSELECTION        sets the listbox selection     
  529.   Sent:    To change where the listbox cursor points
  530.   P1:      Line number: 0, 1, ...
  531.   P2:      
  532.   Returns: 
  533.  
  534.  
  535. API Functions & Macros:
  536.  
  537. These are functions and macros defined for use by applications
  538. programs. There are many others defined in the header files. These
  539. others are for D-Flat to use, and programmers need not be concerned
  540. about them except as an expression of their curiosity about how
  541. D-Flat works.
  542.  
  543.  
  544. (Note: These specifications are not in any orderly sequence yet.)
  545.  
  546.  
  547. -------------------------------------------------------------------
  548. void init_messages(void)
  549.  
  550. Call this function first to initialize message processing
  551.  
  552. -------------------------------------------------------------------
  553. WINDOW CreateWindow(
  554.     CLASS class,              /* class of this window       */
  555.     char *ttl,                /* title or NULL              */
  556.     int left, int top,        /* upper left coordinates     */
  557.     int height, int width,    /* dimensions                 */
  558.     void *extension,          /* pointer to additional data */
  559.     WINDOW parent,            /* parent of this window      */
  560.     int (*wndproc)(struct window *,MESSAGE,PARAM,PARAM),
  561.     int attrib)               /* window attribute           */
  562.  
  563. This function creates a window. It returns the WINDOW handle that
  564. mesages and functions use to identify the window.
  565.  
  566. -------------------------------------------------------------------
  567. void PostMessage(WINDOW wnd, MESSAGE msg, PARAM p1, PARAM p2)
  568.  
  569. Post a message to a window. The window will receive the message in
  570. turn during the message-dispatching loop.
  571.  
  572. -------------------------------------------------------------------
  573. int SendMessage(WINDOW wnd, MESSAGE msg, PARAM p1, PARAM p2)
  574.  
  575. Send a message to a window. The window will receive the message
  576. immediately. Control returns to the sender after the window has
  577. processed the message. The window can return an integer value.
  578.  
  579. This function can send system messages to NULLWND. System messages
  580. are ones that D-Flat processes without regard to a particular window.
  581. -------------------------------------------------------------------
  582. int dispatch_message(void)
  583.  
  584. The message dispatching loop. After opening the first window (usually
  585. the applications window), continue to call this function until it
  586. returns a FALSE value.
  587. -------------------------------------------------------------------
  588. int TestCriticalError(void)
  589.  
  590. -------------------------------------------------------------------
  591. int DefaultWndProc(WINDOW wnd, MESSAGE msg, PARAM p1, PARAM p2)
  592.  
  593. Call this from a window-processing function to chain to the default
  594. window-processing function for the window's class.
  595.  
  596. -------------------------------------------------------------------
  597. int BaseWndProc(CLASS class, WINDOW wnd, MESSAGE msg, PARAM p1, PARAM p2)
  598.  
  599. Call this from the window-processing function of a derived window
  600. class to chain to the window-processing function of the base window's
  601. class.
  602.  
  603. -------------------------------------------------------------------
  604. int WindowHeight(WINDOW wnd)
  605. int WindowWidth(WINDOW wnd)
  606.  
  607. These functions return the window's height and width.
  608. -------------------------------------------------------------------
  609. int ClientWidth(WINDOW wnd)
  610. int ClientHeight(WINDOW wnd)
  611.  
  612. These functions return the height and width of the window's client
  613. area.
  614.  
  615. -------------------------------------------------------------------
  616. int GetTop(WINDOW wnd)
  617. int GetBottom(WINDOW wnd)
  618. int GetLeft(WINDOW wnd)
  619. int GetRight(WINDOW wnd)
  620.  
  621. These functions return the screen coordinates of the four corners of
  622. the window.
  623.  
  624. -------------------------------------------------------------------
  625. int GetClientTop(WINDOW wnd)
  626. int GetClientBottom(WINDOW wnd)
  627. int GetClientLeft(WINDOW wnd)
  628. int GetClientRight(WINDOW wnd)
  629.  
  630. These functions return the screen coordinates of the four corners of
  631. the window's client area.
  632.  
  633. -------------------------------------------------------------------
  634. WINDOW GetParent(WINDOW wnd)
  635.  
  636. Returns the parent of the window or NULLWND if the window has no
  637. parent.
  638. -------------------------------------------------------------------
  639. WINDOW GetFirstChild(WINDOW pwnd)
  640.  
  641. Returns the first child of a parent window or NULLWND if the window
  642. has no children.
  643.  
  644. -------------------------------------------------------------------
  645. WINDOW GetNextChild(WINDOW pwnd, WINDOW cwnd)
  646.  
  647. Call this function repetitively after GetFirstChild. It returns the
  648. next child window after the one specified in the second parameter. If
  649. there are no more children, the function returns NULLWND.
  650.  
  651. -------------------------------------------------------------------
  652. WINDOW GetLastChild(WINDOW pwnd)
  653.  
  654. Returns the last child of a p`rent window or NULLWND if the window
  655. has no children.
  656.  
  657. -------------------------------------------------------------------
  658. WINDOW GetPrevChild(WINDOW pwnd, WINDOW wnd)
  659.  
  660. Call this function repetitively after GetLastChild. It returns the
  661. previous child window before the one specified in the second
  662. parameter. If there are no more children, the function returns
  663. NULLWND.
  664.  
  665. -------------------------------------------------------------------
  666. int CharInView(WINDOW wnd, int x, int y)
  667.  
  668. Returns true if the x/y character position, relative to the window,
  669. is in view (not clipped at the border of a parent window or the
  670. screen.
  671.  
  672. -------------------------------------------------------------------
  673. int TopBorderAdj(WINDOW wnd)
  674.  
  675. Returns the value to add to a y coordinate of the window's client
  676. area to make it relative to the window top.
  677.  
  678. -------------------------------------------------------------------
  679. int BorderAdj(WINDOW wnd)
  680.  
  681. Returns the value to add to an x coordinate relative to the window's
  682. client area to make it relative to the window's left edge.
  683.  
  684. -------------------------------------------------------------------
  685. char *GetTitle(WINDOW wnd)
  686.  
  687. Returns the address of a window's title, or NULL if the window has no
  688. title.
  689.  
  690. -------------------------------------------------------------------
  691. void AddTitle(WINDOW wnd, char *title)
  692.  
  693. Adds or changes the title to an existing window.
  694.  
  695. -------------------------------------------------------------------
  696. CLASS GetClass(WINDOW wnd)
  697.  
  698. Returns the class of the window.
  699.  
  700. -------------------------------------------------------------------
  701. int GetAttribute(WINDOW wnd)
  702.  
  703. Returns the attribute word of a window.
  704.  
  705. -------------------------------------------------------------------
  706. void AddAttribute(WINDOW wnd, int attrib)
  707.  
  708. Adds one or more attributes to a window. OR the attribute values
  709. together.
  710.  
  711. -------------------------------------------------------------------
  712. void ClearAttribute(WINDOW wnd, int attrib)
  713.  
  714. Clears one or more attributes from a window. OR the attribute values
  715. together.
  716.  
  717. -------------------------------------------------------------------
  718. int TestAttribute(WINDOW wnd, int attrib)
  719.  
  720. Tests one or more attributes in a window. Returns true if any of them
  721. are set. OR the attribute values together.
  722.  
  723. -------------------------------------------------------------------
  724. int isVisible(WINDOW wnd)
  725.  
  726. Returns true if the window is visible.
  727.  
  728. -------------------------------------------------------------------
  729. char *GetText(WINDOW wnd)
  730.  
  731. Returns the address of the text buffer for a TEXTBOX or derived
  732. window class.
  733.  
  734. -------------------------------------------------------------------
  735. char *TextLine(WINDOW wnd, int line)
  736.  
  737. Returns the address of a specified line of text (0, 1, ...) in a
  738. TEXTBOX or derived class.
  739.  
  740. -------------------------------------------------------------------
  741. WINDOW inWindow(int x, int y)
  742.  
  743. Returns the WINDOW handle of the window that x/y are in or NULL if
  744. x/y is outside of any window.
  745.  
  746. -------------------------------------------------------------------
  747. int isActive(MENU *mnu, int command)
  748.  
  749. Returns true if the command (commands.h) on the menu is active
  750. (enabled).
  751.  
  752. -------------------------------------------------------------------
  753. void ActivateCommand(MENU *mnu, int command)
  754. void DeactivateCommand(MENU *mnu, int command)
  755.  
  756. Activate (enable) or deactivate (disable) a command (commands.h) on a
  757. menu.
  758.  
  759. -------------------------------------------------------------------
  760. int GetCommandToggle(MENU *mnu, int command)
  761. void SetCommandToggle(MENU *mnu, int command)
  762. void ClearCommandToggle(MENU *mnu, int command)
  763. void InvertCommandToggle(MENU *mnu, int command)
  764.  
  765. Some menu commands are toggles rather than executors of processes. 
  766. Examples are the Insert and Word wrap commands on the Options menu.
  767. These functions get, set, clear, and invert the toggle setting for a
  768. specified command on a specified menu.
  769.  
  770. -------------------------------------------------------------------
  771. int ItemSelected(WINDOW wnd, int line)
  772.  
  773. This function returns true if the specified item (0, 1, ...) on a
  774. multiple-line selection listbox is selected.
  775.  
  776. -------------------------------------------------------------------
  777. int DialogBox(
  778.   WINDOW wnd,        /* parent window of the dialog box        */
  779.   DBOX *db,          /* address of dialog box definition array */
  780.   int Modal,         /* trus if it is a modal dialog box       */
  781.   int (*wndproc)(struct window *, MESSAGE, PARAM, PARAM)
  782.                      /* the window processing function or NULL */
  783. )
  784.  
  785. This function executes a dialog box. If it is a modal dialog box, the
  786. function does not return until the user completes the dialog box. The
  787. return value will be true if the user has selected OK and false if
  788. the user has selected Cancel on the dialog box. If the dialog box is
  789. modeless, the function returns immediately, and the user can select
  790. other things from the screen while the dialog box is still active.
  791.  
  792. -------------------------------------------------------------------
  793. int DlgOpenFile(char *filespec, char *filename)
  794.  
  795. This function operates the Open File dialog box. The filespec pointer
  796. points to a default file path specification that the dialog box uses
  797. to display files, for example, *.DOC. If the function returns true,
  798. the space pointed to by the filename pointer will contain the path
  799. and filename selected by the user to be read.
  800.  
  801. -------------------------------------------------------------------
  802. int DlgSaveAs(char *filename)
  803.  
  804. This function operates the Save As dialog box. If the function returns
  805. true, the space pointed to by the filename pointer will contain the
  806. path and filename selected by the user where the file will be
  807. written.
  808.  
  809. -------------------------------------------------------------------
  810. void MessageBox(char *title, char *message)
  811. void ErrorMessage(char *message)
  812. int TestErrorMessage(char *message)
  813. int YesNoBox(char *question)
  814. WINDOW MomentaryMessage(char *message)
  815.  
  816. These functions display generic message boxes. The message text is
  817. one null-terminated string with newlines (\n) to indicate where lines
  818. are to be broken. The size of the boxes adjusts to the width of the
  819. longest line and the number of lines of text. A message may have no
  820. more lines of text than will fit into the largest window that the
  821. screen can display. You must account for the window's border's and
  822. the presence at the bottom of one or more command buttons.
  823.  
  824. The MessageBox function displays a message in a window with a title
  825. provided by the caller. The window contains the message and an OK
  826. command button.
  827.  
  828. The ErrorMessage function displays the message in an error box window
  829. with an OK command button.
  830.  
  831. The TestErrorMessage function is an error message with OK and Cancel
  832. command buttons. The function returns true if the user selects OK or
  833. presses Enter and false if the user selects Cancel or presses Esc.
  834.  
  835. The YesNoBox function displays the message with Yes and No command
  836. buttons. The function returns true if the user selects Yes or
  837. presses Enter and false if the user selects No or presses Esc.
  838.  
  839. The MomentaryMessage function displays a message box and returns its
  840. WINDOW handle. The caller must close the window. The purpose of this
  841. function is to allow you to display a message while some time
  842. consuming process is underway and then erase the message after the
  843. process is done but without any action required from the user.
  844.  
  845. -------------------------------------------------------------------
  846. int RadioButtonSetting(DBOX *db, enum commands cmd)
  847.  
  848. This function returns true if the specified command on the specified
  849. dialog box is a pressed radio button.
  850.  
  851. -------------------------------------------------------------------
  852. void EnableButton(DBOX *db, enum commands cmd)
  853.  
  854. This function enables a command button on a dialog box. command
  855. buttons are initially enabled when the dialog box is first opened.
  856.  
  857. -------------------------------------------------------------------
  858. void DisableButton(DBOX *db, enum commands cmd)
  859.  
  860. This function disables a command button on a dialog box. command
  861. buttons are initially enabled when the dialog box is first opened.
  862.  
  863. -------------------------------------------------------------------
  864. void PushRadioButton(DBOX *db, enum commands cmd)
  865.  
  866. This function presses the specified radio button command on the
  867. specified dialog box.
  868.  
  869. -------------------------------------------------------------------
  870. void PutItemText(WINDOW wnd, enum commands cmd, char *text)
  871.  
  872. This function appends a line of text to a TEXT, TEXTBOX, or EDITBOX
  873. control window in a dialog box. The wnd parameter is the WINDOW
  874. handle of the dialog box. The cmd parameter specifies the command
  875. associated with the control item. The text parameter points to the
  876. text to be added. The control window makes it own copy of the text,
  877. so the caller's copy can go out of scope. If the control window is a
  878. TEXTBOX or EDITBOX window, you must send a PAINT message to the
  879. control window so that the new text will display.
  880.  
  881. You must call this function while the dialog box is active. That
  882. means that if the dialog box is modal, you must call this function
  883. from within a custom window processing function that you supply when
  884. you call DialogBox.
  885.  
  886. -------------------------------------------------------------------
  887. void GetItemText(WINDOW wnd, enum commands cmd, char *text, int length)
  888.  
  889. This function copies the text from a TEXT, TEXTBOX, or EDITBOX
  890. control window in a dialog box.    The wnd parameter is the WINDOW
  891. handle of the dialog box. The cmd parameter specifies the command
  892. associated with the control item. The text parameter points to the
  893. caller's buffer where the text will be copied. The length parameter
  894. specifies the maximum number of characters to copy.
  895.  
  896. You must call this function while the dialog box is active. That
  897. means that if the dialog box is modal, you must call this function
  898. from within a custom window processing function that you supply when
  899. you call DialogBox.
  900.  
  901. -------------------------------------------------------------------
  902. char *GetEditBoxText(DBOX *db, enum commands cmd)
  903.  
  904. This function returns a pointer to the text associated with an
  905. editbox control in a dialog box. You can call it after the dialog box
  906. has completed processing. The buffer is on the heap. Do not free it.
  907. Instead, call SetEditBoxText with a NULL pointer.
  908.  
  909. If the text has not changed since it was initialized, this function
  910. returns NULL.
  911.  
  912. -------------------------------------------------------------------
  913. void SetEditBoxText(DBOX *db, enum commands cmd, char *text)
  914.  
  915. This function sets the text of a dialog box editbox. You can call
  916. this function before the dialog box is open. The dialog box makes it
  917. own copy on the heap, so your text can go out of scope.
  918.  
  919. -------------------------------------------------------------------
  920. void SetCheckBox(DBOX *db, enum commands cmd)
  921. void ClearCheckBox(DBOX *db, enum commands cmd)
  922. int CheckBoxSetting(DBOX *db, enum commands cmd)
  923.  
  924. These functions set, clear, and test the setting of a specified check
  925. box control item on a dialog box.
  926.  
  927. -------------------------------------------------------------------
  928. void LoadHelpFile(char *expath);
  929.  
  930. This function loads the help file named by the DFLAT_APPLICATION
  931. global constant with the .HLP file extension. The expath parameter
  932. points to the DOS path where the file can be found.
  933.  
  934. Call this function at the beginning of an application program.
  935.  
  936. -------------------------------------------------------------------
  937. void UnLoadHelpFile(void);
  938.  
  939. Call this function at the end of a D-Flat application to free the
  940. memory used by a help file.
  941.  
  942. -------------------------------------------------------------------
  943. void WriteTextLine(WINDOW wnd, RECT *rcc, int y, int reverse)
  944.  
  945. This function displays a text line from a TEXTBOX or derived window
  946. class. The text has apready been added to the window with ADDTEXT,
  947. etc. The y parameter specifies which line (0, 1, ...) relative to the
  948. window's text buffer to display. If the specified line is not in
  949. view, the function does nothing. If the reverse parameter is true,
  950. the line displays in the reverse-video colors of the window. The rcc
  951. RECT pointer is usually NULL for applications calls. It points to a
  952. rectangle relative to the window outside of which displays will not
  953. occur. 
  954.  
  955. This function calls the writeline function, so an application can
  956. embed CHANGECOLOR and RESETCOLOR commands in the text.
  957.  
  958. -------------------------------------------------------------------
  959. void writeline(WINDOW wnd, char *line, int x, int y, int pad)
  960.  
  961. This function writes a line of text to a window. The x and y
  962. coordinates point to the first character in the window's client area
  963. where the line is to be written. The text must be null-terminated.
  964. This function clips the line if it goes beyond the screen. If the
  965. window does not have the NOCLIP attribute, the function clips the
  966. line if it goes outside the borders of the window's parent. If the
  967. pad parameter is true, writeline pads the window's line to its right
  968. margin with spaces.
  969.  
  970. This function calls the wputs function, so an application can embed
  971. CHANGECOLOR and RESETCOLOR commands in the text.
  972.  
  973. ------------------------------------------------------------------- v
  974. void wputs(WINDOW wnd, void *line, int x, int y)
  975.  
  976. This function writes a line of text to a window. The x and y
  977. coordinates point to the first character in the window's client area
  978. where the line is to be written. The text must be null-terminated.
  979.  
  980. The caller can embed color change commands in the text. If the
  981. CHANGECOLOR code occurs, the next two characters are the foreground
  982. and background color values. These colors continue on the line until
  983. the end of the line or the RESETCOLOR code occurs.
  984.  
  985. -------------------------------------------------------------------
  986. void PutWindowChar(WINDOW wnd, int x, int y, int c)
  987.  
  988. This function writes the character c to a window. The x and y
  989. coordinates are relative to the window's client area.
  990.  
  991. The function performs clipping. If the character is beyond the
  992. screen's dimensions it is not written. If the window does not have
  993. the NOCLIP attribute, the character is not written if its coordinates
  994. are beyond the margins of its parent window (if the window has a
  995. parent).
  996.  
  997. -------------------------------------------------------------------
  998. void wputch(WINDOW wnd, int c, int x, int y)
  999.  
  1000. This function writes the character c to a window. The x and y
  1001. coordinates are relative to the window's client area.
  1002.  
  1003. -------------------------------------------------------------------
  1004.  
  1005.