Outline Control - Page 13                         Copyright
(C) 1993 Todd J. Abel. All Rights Reserved.
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                       Outline Control
                         for Windows
                              






Legal Stuff
The Software is protected by the copyright laws that pertain
to computer software. Federal copyright law permits you to
make one backup copy of the Software, except the TAOUT.DLL
explicitly designated as "redistributable", by any means, in
whole or part, for other purposes.

No part of this publication may be reproduced, transmitted,
transcribed, stored in a retrieval system, or translated
into any language in any form by any means without prior
written consent of Todd J. Abel with the exception of the
key commands table. Information in this manual is subject to
change without notice and does not represent a commitment on
the part of the vendor.

No other warranties, express or implied, by statute or
otherwise, regarding the use of, or the results of the use
of this software and the related materials in terms of
correctness, accuracy, reliability, currentness, or
otherwise. In no event will the vendor be liable for any
special, consequential, or other damages for breach of
warrant.














Trademarks
The following trademarks are used throughout this manual.
Whenever you come across them, please remember that they are
the trademarks or registered trademarks of the companies
shown below.

Microsoft is a registered trademark and Window and Visual
Basic are trademarks of Microsoft Corporation.

All other names are trademarks or register trademarks of
their respective owners.

OVERVIEW                                                   5
MESSAGE REFERENCE                                          7
          OL_ADD_NODE (OL_BASE + 1)                        7
          OL_ALLOW_APPEND (OL_BASE + 7)                    7
          OL_ALLOW_DELETE(OL_BASE + 8)                     8
          OL_ALLOW_EDIT(OL_BASE + 9)                       8
          OL_ALLOW_INSERT (OL_BASE + 10)                   8
          OL_BOTTOM (OL_BASE + 19)                         8
          OL_DELETE (OL_BASE + 20)                         9
          OL_FLUSH (OL_BASE + 29)                          9
          OL_GET_CURRENT_NODE (OL_BASE + 26)               9
          OL_GET_TEXT_STREAM(OL_BASE + 14)                 9
          OL_GET_TEXT STREAM_SIZE(OL_BASE + 15)           10
          OL_GET_FONT (OL_BASE + 25)                      10
          OL_GET_MAX_INDENT_LEVEL (OL_BASE + 28)          10
          OL_GET_NODE_TEXT (OL_BASE + 13)                 11
          OL_GET_NODE_TEXT_SIZE  (OL_BASE + 12)           11
          OL_GET_NUM_NODES (OL_BASE + 24)                 11
          OL_GET_NUMBERING_STYLE (OL_BASE + 36)           12
          OL_INDENT_IN (OL_BASE + 4)                      12
          OL_INDENT_NUMBERING (OL_BASE + 6)               12
          OL_INDENT_OUT (OL_BASE + 5)                     12
          OL_INSERT (OL_BASE + 21)                        13
          OL_MOVE_BACKWARD (OL_BASE + 3)                  13
          OL_MOVE_FORWARD (OL_BASE + 2)                   13
          OL_NEXTCONTROL  (OL_BASE + 22)                  13
          OL_PREVCONTROL  (OL_BASE + 22)                  14
          OL_REDRAW  (OL_BASE + 31)                       14
          OL_SET_TEXT_STREAM  (OL_BASE + 16)              14
          OL_SET_MAX_INDENT_LEVEL (OL_BASE + 27)          14
          OL_SET_NODE_TEXT (OL_BASE + 17)                 15
          OL_SET_REDRAW(OL_BASE + 30)                     15
          OL_TOP (OL_BASE + 18)                           15
NOTIFICATION REFERENCE                                    17
          OLN_ADDNODE                                     17
          OLN_CHANGE                                      17
          OLN_DELNODE                                     17
          OLN_INDENT                                      17
          OLN_INSNODE                                     18
          OLN_KILLFOCUS                                   18
          OLN_LBUTTONCLK                                  18
          OLN_LBUTTONDBLCLK                               18
          OLN_MBUTTONCLK                                  19
          OLN_MBUTTONDBLCLK                               19
          OLN_RBUTTONCLK                                  19
          OLN_RBUTTONDBLCLK                               19
          OLN_SELCHANGE                                   20
          OLN_SETFOCUS                                    20
          OLN_VSCROLL                                     20

OVERVIEW
The taOutline control is a custom control for Microsoft
Windows 3.x.  taOutline can be used with any Windows
development language that is capable of calling functions
from a Windows DLL. The outline control can be used as a
numerically numbered outline or with numbering and indenting
turned off can be used as a editable listbox.

This is a first version and I have lots of ideas for
additional functionality, but I thought it would be nice to
get some feedback on this version first. Please send any
comments or requests the CompuServe account given below. A
VBX version is in the works if there is enough demand for
it.

This is a demo version and is not licensed for use in a
shipping product. A version of the outline control is
available for use in products (without the splash screen)
for $75 (US funds only). Complete source code is available
for $250 (US funds only).


You should have
          OUTLINE.DLL    Outline dynamic link library
          OUTLINE.H Header file.
          OUTLINE.LIB    Outline import library.
          TEST.EXE  Outline example program that shows how
          to work with the              outline control.
          
          TEST.ZIP  File containing the source code for the
          example program written       in Visual C++ using
          the MFC.
          
          
Support
     Support is available on CompuServe writing to ID
73611,1023.

     You may also write to:
          Todd J. Abel
          2585 Cooley Road
          Canandaigua, New York 14425


          
Outline Messages
Message                  Description
OL_ADD_NODE              Appends a new node to the outline
                         control.
OL_ALLOW_APPEND          Turns appending on / off within
                         the outline control
OL_ALLOW_DELETE          Turns deletion on / off within
                         the outline control
OL_ALLOW_EDIT            Turns editing on / off within the
                         outline control
OL_ALLOW_INSERT          Turns insertion on / off within
                         the outline control
OL_BOTTOM                Set the current position to the
                         last node within the outline
                         control.
OL_DELETE                Deletes the current text node or
                         one at a specified position.
OL_FLUSH                 Deletes all nodes from the
                         outline.
OL_GET_CURRENT_NODE      Returns the index of the current
                         node.
OL_GET_FONT              Get the current font used in the
                         outline control
OL_GET_NODE_TEXT         Gets the text from a outline
                         node.
OL_GET_NODE_TEXT_SIZE    Returns the size of the text
                         within the text node.
OL_GET_NUM_NODES         Returns the number of nodes
                         within the outline control.
OL_GET_NUMBERING_STYLE   Returns the current numbering
                         style set.
OL_GET_TEXT_STREAM       Get all the text from all the
                         nodes.
OL_GET_TEXT_STREAM_SIZE  Returns the size of the buffer
                         required to hold the text stream.
OL_GETMAX_INDENT_LEVEL   Get the maximum indent level
                         allowed.
OL_INDENT_IN             Moves the specified node's indent
                         level in one unless the indent
                         level is at maximum.
OL_INDENT_NUMBERING      Sets the style of indent
                         numbering. Only numbering style
                         (ex 1.1) is supported in this
                         version.
OL_INDENT_OUT            Moves the specified node's indent
                         level out one unless the indent
                         level is at minimum.
OL_INSERT                Inserts a text node above the
                         current position or at a
                         specified position.
OL_MOVE_BACKWARD         Moves the current focus node
                         backward one node unless the
                         current node is the first node in
                         the outline control.
OL_MOVE_FORWARD          Moves the current focus node
                         forward one node unless the
                         current node is the last node in
                         the outline control.
OL_NEXTCONTROL           Advances the focus to the next
                         control in the dialog.
OL_PREVCONTROL           Advances the focus to the
                         previous control in the dialog.
OL_SET_MAX_INDENT_LEVEL  Set the maximum indent level of
                         the outline control.
OL_SET_NODE_TEXT         Set the text for a outline node.
OL_SET_TEXT_STREAM       Set all the text in an outline
                         control from a text stream
                         provided by the user.
OL_SETREDRAW             Sets the redraw flag on / off.
OL_TOP                   Set the current position to the
                         first text node within the
                         outline control.

Message Reference
OL_ADD_NODE (OL_BASE + 1)
          This message appends a new node to the outline.

          Parameters    Type / Description
          wParam        indent level of the node.
          lParam        initial text to place in the
                        node
     
     Return Value:
          BOOL           TRUE if the node was added,
otherwise FALSE.

OL_ALLOW_APPEND (OL_BASE + 7)
          This message changes the flag to allow / disallow
          appending of text nodes to the outline control.

          Parameters    Type / Description
          wParam        TRUE - Allow appending of
                        text nodes
                        FALSE - Do not allow
                        appending of text nodes.
          lParam        Not Used
     
     Return Value:
          Not Used
OL_ALLOW_DELETE(OL_BASE + 8)
          This message changes the flag to allow / disallow
          deletion of text nodes within the outline control.

          Parameters    Type / Description
          wParam        TRUE - Allow deletion of
                        text nodes
                        FALSE - Do not allow
                             deletion of text nodes.
          lParam        Not Used
     
     Return Value:
          Not Used

OL_ALLOW_EDIT(OL_BASE + 9)
          This message changes the flag to allow / disallow
          editing of text nodes within the outline control.

          Parameters    Type / Description
          wParam        TRUE - Allow editing of text
                        nodes
                        FALSE - Do not allow editing
                             of text nodes.
          lParam        Not Used
     
     Return Value:
          Not Used

OL_ALLOW_INSERT (OL_BASE + 10)
          This message changes the flag to allow / disallow
          insertion of text nodes to the outline control.

          Parameters    Type / Description
          wParam        TRUE - Allow insertion of
                        text nodes
                        FALSE - Do not allow
                        insertion of text nodes.
          lParam        Not used. Must be zero.
     
     Return Value:
          Not Used

OL_BOTTOM (OL_BASE + 19)
          This message changes the current position of the
          editable text node to the last node within the
          outline control.  The node will be positioned to
          the top of the outline control.

          Parameters    Type / Description
          wParam        Not used. Must be zero.
          lParam        Not used. Must be zero.
     
     Return Value:
          Not Used.

 OL_DELETE (OL_BASE + 20)
          This message deletes the nodes specified in the
          wParam. If the wParam is not a valid node, no
          deletion occurs.

          Parameters    Type / Description
          wParam        Node offset to delete or
                        OL_NONODE to delete the
                        current text node.
          lParam        Not used. Must be zero.
     
     Return Value:
          Not Used.

OL_FLUSH (OL_BASE + 29)
          This message deletes all of the nodes in the
          outline control. An empty node is always placed
          back into the outline to giver the user someplace
          to type.

          Parameters    Type / Description
          wParam        Not used. Must be zero.
          lParam        Not used. Must be zero.
     
     Return Value:
          Not Used.

OL_GET_CURRENT_NODE (OL_BASE + 26)
          This message returns in index of the currently
          active node.

          Parameters    Type / Description
          wParam        Not used. Must be zero.
          lParam        Not used. Must be zero.
     
     Return Value:
          unsigned int        Index of the currently active
node.

OL_GET_TEXT_STREAM(OL_BASE + 14)
          This message retrieves the text from all nodes
          within the outline control and places them in a
          user provided buffer. The buffer size should be
          determined by calling OL_GET_TEXT_STREAM_SIZE.
          This format can be written to a file and later
          used with OL_SET_TEXT _STREAM to restore the
          outline.  Only the text and the indent level
          information are saved. Font and other properties
          must be stored by the developer.

          Parameters    Type / Description
          wParam        Size of the buffer provided
          lParam        LPSTR pointer to the user
                        buffer.

     Return Value:
          unsigned long       Number of characters actually
          returned.

OL_GET_TEXT STREAM_SIZE(OL_BASE + 15)
          This message retrieves the size of the buffer
          required by the OL_GET_TEXT_STREAM message.

          Parameters    Type / Description
          wParam        Not Used. Must be zero.
          lParam        Not Used. Must be zero.

     Return Value:
          unsigned long       Size of the buffer required
          for
          OL_GET_DELIMITED_TEXT.

OL_GET_FONT (OL_BASE + 25)
          This message retrieves the currently selected font
          for the outline control.

          Parameters    Type / Description
          wParam        Not used. Must be zero.
          lParam        Not used. Must be zero.

     Return Value:
          HFONT          Handle of the current font used by
          the outline control is                  returned
          in the low order word. When the outline is
          destroyed, this font handle will be properly
          freed.
          
OL_GET_MAX_INDENT_LEVEL (OL_BASE + 28)
          This message retrieves the maximum indent level
          for the outline control.

          Parameters    Type / Description
          wParam        Not used. Must be zero.
          lParam        Not used. Must be zero.

     Return Value:
          WORD           The number maximum number of indent
          levels allowed.
          
OL_GET_NODE_TEXT (OL_BASE + 13)
          This message retrieves the text from a specified
          node to a user provided buffer. On return the
          buffer is always NULL terminated.

          Parameters    Type / Description
          wParam        Node number to get the text from.
                        Node number is zero based. If this
                        parameter is OL_NONODE then the
                        current node is used.
          lParam        FAR pointer to a character buffer
                        large enough to hold the text
                        within the outline node. It is
                        assumed that the buffer is large
                        enough to hold the entire node's
                        contents. Used
                        OL_GET_NODE_TEXT_SIZE to get the
                        exact size of there buffer.

     Return Value:
          int            The number of  characters actually
          returned (not                 including the
          terminator) or OL_ERROR if the node
          number was invalid.
     
OL_GET_NODE_TEXT_SIZE  (OL_BASE + 12)
          This message returns the size of the buffer
          required for the OL_GET_NODE_TEXT message..

          Parameters    Type / Description
          wParam        Node number to get the text from.
                        Node number is zero based. If this
                        parameter is OL_NONODE then the
                        current node will be used.
          lParam        Not used. Must be zero.

     Return Value:
          int            Size of the buffer required to hold
          all of the text within a
          outline node (not including the terminator)  or
          OL_ERROR if the node number was invalid.
          
OL_GET_NUM_NODES (OL_BASE + 24)
          This message retrieves the number of nodes within
          the outline control.

          Parameters    Type / Description
          wParam        Not used. Must be zero.
          lParam        Not used. Must be zero.

     Return Value:
          int            Number of nodes within the outline
          control..
          
OL_GET_NUMBERING_STYLE (OL_BASE + 36)
          This message returns the current number style set.

          Parameters    Type / Description
          wParam        Not used. Must be zero.
          lParam        Not used. Must be zero.

     Return Value:
          WORD                Numbering style. OL_NUM_NONE
          or                            OL_NUM_NUMERIC.
          
OL_INDENT_IN (OL_BASE + 4)
          This message moves the specified node in one
          indent level.

          Parameters    Type / Description
          wParam        Node number to indent. If
                        this value is OL_NONODE then
                        the current nodes indent
                        will be changed.
          lParam        Not used. Must be zero.

     Return Value:
          Not Used.
          
OL_INDENT_NUMBERING (OL_BASE + 6)
          This message sets the style for automatic
          numbering of indent levels.

          Parameters    Type / Description
          wParam        Number style
                             OL_NUM_NONE    No indent
                        numbering
                        
                             OL_NUM_NUMERIC Numeric labels
                                            Example: 1, 2,
                        1.1
          lParam        Not used. Must be zero.

     Return Value:
          Not Used.

OL_INDENT_OUT (OL_BASE + 5)
          This message moves the specified node out one
          indent level.

          Parameters    Type / Description
          wParam        Node number to indent. If this
                        value is OL_NONODE then the
                        current nodes indent  will be
                        changed.
          lParam        Not used. Must be zero.

     Return Value:
          Not Used.
          
OL_INSERT (OL_BASE + 21)
          This message insert a text node at a specified
          position. The indent level will be the same as the
          node that was inserted above.

          Parameters    Type / Description
          wParam        Node number to insert the new text
                        node above.
          lParam        LPSTR pointer to the text to place
                        in the new node.

     Return Value:
          Not Used.
          
OL_MOVE_BACKWARD (OL_BASE + 3)
          This message moves the current focus node backward
          one node unless the
          current node is the first node in the outline. The
          outline control will be scrolled to keep the
          current node visible.
          
          Parameters    Type / Description
          wParam        Not used. Must be zero.
          lParam        Not used. Must be zero.

     Return Value:
          Not Used.
          
OL_MOVE_FORWARD (OL_BASE + 2)
          This message moves the current focus node forward
          one node unless the
          current node is the last node in the outline. The
          outline control will be scrolled to keep the
          current node visible.
          

          Parameters    Type / Description
          wParam        Not used. Must be zero.
          lParam        Not used. Must be zero.

     Return Value:
          Not Used.
          
OL_NEXTCONTROL  (OL_BASE + 22)
          This message moves focus to the next control
          within the dialog. This is just like pressing TAB
          within the control

          Parameters    Type / Description
          wParam        Not used. Must be zero.
          lParam        Not used. Must be zero.

     Return Value:
          Not Used.

OL_PREVCONTROL  (OL_BASE + 22)
          This message moves focus to the previous control
          within the dialog. This is just like pressing
          SHIFT-TAB within the control

          Parameters    Type / Description
          wParam        Not used. Must be zero.
          lParam        Not used. Must be zero.

     Return Value:
          Not Used.
          
OL_REDRAW  (OL_BASE + 31)
          This message forces a redraw of the entire outline
          control

          Parameters    Type / Description
          wParam        Not used. Must be zero.
          lParam        Not used. Must be zero.

     Return Value:
          Not Used.
          
OL_SET_TEXT_STREAM  (OL_BASE + 16)
          This message sets the entire text within an
          outline by setting each node the user provided
          text. The text must be in the same format as saved
          by the OL_GET_TEXT_STREAM message. Only the text
          and the indent level information is saved. When
          setting the text stream, the max indent level
          property is ignored.

          Parameters    Type / Description
          wParam        Not used. Must be zero.
          lParam        FAR pointer to a character buffer
                        containing the text to be placed
                        into the outline control

     Return Value:
          int            Zero if successful or OL_ERROR if
          there was an error.
     
OL_SET_MAX_INDENT_LEVEL (OL_BASE + 27)
          This message sets the maximum number of indent
          levels allowed. This value must be less than
          OL_MAX_INDENT_LEVEL.

          Parameters    Type / Description
          wParam        The maximum number of indent
                        levels to allow.
          lParam        Not used. Must be zero.

     Return Value:
          Not used..
          
OL_SET_NODE_TEXT (OL_BASE + 17)
          This message sets the content text of a particular
          node.

          Parameters    Type / Description
          wParam        Node number to set the text. Node
                        number is zero based.
          lParam        FAR pointer that contains the new
                        text.

     Return Value:
          int            Zero of successful or OL_ERROR if
          the number was                     invalid or
          there was an error.
          
OL_SET_REDRAW(OL_BASE + 30)
          This message sets the redraw flag on/off. With the
          redraw flag off performance is enhanced.

          Parameters    Type / Description
          wParam        TRUE - redrawing occurs as normal
                        FALSE - No redraws occur unless
                        the user calls OL_REDRAW
          lParam        Not used. Must be zero.

     Return Value:
          Not used.
          
OL_TOP (OL_BASE + 18)
          This message positions the current text node to
          the first text node within the outline control.

          Parameters    Type / Description
          wParam        Not used. Must be zero.
          lParam        Not used. Must be zero.

     Return Value:
          Not used.
          
          
Outline Notifications
Normal Notifications     Description
OLN_ADDNODE              Sent after a node is added.
OLN_CHANGE               Sent when the user has taken some
                         action that may have altered the
                         text within the node
OLN_DELNODE              Sent after a node is deleted
OLN_INDENT               Sent after a node is indented.
OLN_INSNODE              Sent after a node is inserted.
OLN_KILLFOCUS            Sent when the outline control
                         looses the input focus.
OLN_LBUTTONCLK           Sent when the left mouse button
                         is clicked with the outline
                         control.
OLN_LBUTTONDBLCLK        Sent when the left mouse button
                         is double clicked on the outline
                         control.
OLN_MBUTTONCLK           Sent when the middle mouse button
                         is clicked with the outline
                         control.
OLN_MBUTTONDBLCLK        Sent when the middle mouse button
                         is double clicked on the outline
                         control.
OLN_RBUTTONCLK           Sent when the right mouse button
                         is clicked with the outline
                         control.
OLN_RBUTTONDBLCLK        Sent when the right mouse button
                         is double clicked on the outline
                         control.
OLN_SELCHANGE            Sent when the selection in the
                         outline control changes.
OLN_SETFOCUS             Sent when the outline control
                         receives the input focus.
OLN_VSCROLL              Sent when the user interacts with
                         the vertical scroll bar.
     

Notification Reference
OLN_ADDNODE
          The OLN_ADDNODE notification message is sent after
          a node has been appended to the outline control.
          The parent window of the outline control receives
          this notification message through a WM_COMMAND
          message.

          Parameters    Type / Description
          wParam        Specifies the node offset of the
                        effected node.
          lParam        Specifies the handle of the
                        outline control in the low-order
                        word, and specifies the
                        OLN_ADDNODE notification message
                        in the high-order word.

OLN_CHANGE
          The OLN_CHANGE notification message is sent after
          the user has taken an action that may have altered
          the text in an outline node. This message is sent
          after the screen update.  The parent window of the
          outline control receives this notification message
          through a WM_COMMAND message.

          Parameters    Type / Description
          wParam        Specifies the node offset of the
                        effected node.
          lParam        Specifies the handle of the
                        outline control in the low-order
                        word, and specifies the OLN_CHANGE
                        notification message in the high-
                        order word.

OLN_DELNODE
          The OLN_DELNODE notification message is sent when
          a node has been deleted from the outline control.
          The parent window of the outline control receives
          this notification message through a WM_COMMAND
          message.

          Parameters    Type / Description
          wParam        Specifies the node offset of the
                        effected node.
          lParam        Specifies the handle of the
                        outline control in the low-order
                        word, and specifies the
                        OLN_DELNODE notification message
                        in the high-order word.
          
OLN_INDENT
          The OLN_INDENT notification message is sent when
          the indent level of a node has changed.  The
          parent window of the outline control receives this
          notification message through a WM_COMMAND message.

          Parameters    Type / Description
          wParam        Specifies the node offset of the
                        effected node.
          lParam        Specifies the handle of the
                        outline control in the low-order
                        word, and specifies the OLN_INDENT
                        notification message in the high-
                        order word.

          
OLN_INSNODE
          The OLN_INSNODE notification message is sent when
          a node has been inserted into the outline control.
          The parent window of the outline control receives
          this notification message through a WM_COMMAND
          message.

          Parameters    Type / Description
          wParam        Specifies the node offset of the
                        effected node.
          lParam        Specifies the handle of the
                        outline control in the low-order
                        word, and specifies the
                        OLN_INSNODE notification message
                        in the high-order word.

          
OLN_KILLFOCUS
          The OLN_KILLFOCUS notification message is sent
          when a outline loses the input focus.  The parent
          window of the outline control receives this
          notification message through a WM_COMMAND message.

          Parameters    Type / Description
          wParam        Specifies the identifier of the
                        outline control.
          lParam        Specifies the handle of the
                        outline control in the low-order
                        word, and specifies the OLN_DBLCLK
                        notification message in the high-
                        order word.


OLN_LBUTTONCLK
          The OLN_LBUTTONCLK notification message is sent
          when the left mouse button is clicked in the
          outline control.  The parent window of the outline
          control receives this notification message through
          a WM_COMMAND message.

          Parameters    Type / Description
          wParam        Specifies the identifier of the
                        outline control.
          lParam        Specifies the handle of the
                        outline control in the low-order
                        word, and specifies the
                        OLN_LBUTTONCLK notification
                        message in the high-order word.

OLN_LBUTTONDBLCLK
          The OLN_LBUTTONDBLCLK notification message is sent
          when the left mouse button is double clicked in
          the outline control.  The parent window of the
          outline control receives this notification message
          through a WM_COMMAND message.

          Parameters    Type / Description
          wParam        Specifies the identifier of the
                        outline control.
          lParam        Specifies the handle of the
                        outline control in the low-order
                        word, and specifies the
                        OLN_LBUTTONDBLCLK notification
                        message in the high-order word.

OLN_MBUTTONCLK
          The OLN_MBUTTONCLK notification message is sent
          when the middle mouse button is clicked in the
          outline control.  The parent window of the outline
          control receives this notification message through
          a WM_COMMAND message.

          Parameters    Type / Description
          wParam        Specifies the identifier of the
                        outline control.
          lParam        Specifies the handle of the
                        outline control in the low-order
                        word, and specifies the
                        OLN_MBUTTONCLK notification
                        message in the high-order word.

OLN_MBUTTONDBLCLK
          The OLN_MBUTTONDBLCLK notification message is sent
          when the middle mouse button is double clicked in
          the outline control.  The parent window of the
          outline control receives this notification message
          through a WM_COMMAND message.

          Parameters    Type / Description
          wParam        Specifies the identifier of the
                        outline control.
          lParam        Specifies the handle of the
                        outline control in the low-order
                        word, and specifies the
                        OLN_MBUTTONDBLCLK notification
                        message in the high-order word.

OLN_RBUTTONCLK
          The OLN_RBUTTONCLK notification message is sent
          when the right mouse button is clicked in the
          outline control.  The parent window of the outline
          control receives this notification message through
          a WM_COMMAND message.

          Parameters    Type / Description
          wParam        Specifies the identifier of the
                        outline control.
          lParam        Specifies the handle of the
                        outline control in the low-order
                        word, and specifies the
                        OLN_RBUTTONCLK notification
                        message in the high-order word.

OLN_RBUTTONDBLCLK
          The OLN_RBUTTONDBLCLK notification message is sent
          when the right mouse button is double clicked in
          the outline control.  The parent window of the
          outline control receives this notification message
          through a WM_COMMAND message.

          Parameters    Type / Description
          wParam        Specifies the identifier of the
                        outline control.
          lParam        Specifies the handle of the
                        outline control in the low-order
                        word, and specifies the
                        OLN_MBUTTONDBLCLK notification
                        message in the high-order word.
     OLN_SELCHANGE
          The OLN_SELCHANGE notification message is sent
          when the selection in the outline is changed.  The
          parent window of the outline control receives this
          notification message through a WM_COMMAND message.

          Parameters    Type / Description
          wParam        Specifies the node offset of the
                        currently selected node.
          lParam        Specifies the handle of the
                        outline control in the low-order
                        word, and specifies the
                        OLN_SELCHANGE notification message
                        in the high-order word.

          
OLN_SETFOCUS
          The OLN_SETFOCUS notification message is sent when
          the a outline receives the input focus.  The
          parent window of the outline control receives this
          notification message through a WM_COMMAND message.

          Parameters    Type / Description
          wParam        Specifies the identifier of the
                        outline control.
          lParam        Specifies the handle of the
                        outline control in the low-order
                        word, and specifies the
                        OLN_SETFOCUS notification message
                        in the high-order word.

          
OLN_VSCROLL
          The OLN_VSCROLL notification message is sent when
          the outline control is scrolled.  The parent
          window of the outline control receives this
          notification message through a WM_COMMAND message.

          Parameters    Type / Description
          wParam        Specifies the identifier of the
                        outline control.
          lParam        Specifies the handle of the
                        outline control in the low-order
                        word, and specifies the
                        OLN_VSCROLL notification message
                        in the high-order word.

          
Special Keyboard Interactions
Key                      Action
CTRL-TAB                 Indents the current node one tab
                         position
CTRL-SHIFT-TAB           UN indents the current node one
                         tabs position
CTRL-UP ARROW            Moves the current node to the
                         pervious node.
CTRL-DOWN ARROW          Moves the current node to the
                         next node.
INSERT                   Inserts a node above the current
                         node and moves focus to the
                         inserted node.
CTRL-SHIFT-DELETE        Deletes the current node.
CTRL-HOME                Moves the current node to the
                         first node within the outline
                         control.
CTRL-END                 Moves the current node to the
                         last node within the outline
                         control.
CTRL-PGUP                Move the outline control up one
                         page.
CTRL-PGDN                Moves the outline control down
                         one page.


