ۥ- !ތ\\\\\\\jjjj v  r:4+!!HY( 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 OL_DLL.DLL and OL_RUN.VBX 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. toc \t "Outline Heading 1,1"  Overview 4 Support 4 VBX Properties and Events 5 VBX Custom Properties 5 VBX Custom Events 9 Outline Messages (DLL version) 12 Message Reference (DLL version) 13 Outline Notifications (DLL version) 21 Notification Reference (DLL version) 22 Special Keyboard Interactions 26  Overview The outline control is a custom control for Microsoft Windows 3.x. Outline can be used with any Windows development language that is capable of calling functions from a Windows DLL or Visual Basic Extenstion (VBX). 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.. The outline control is unlike most other outline controls available in that it is not intended to be a tree control. It should be used as either an editable listbox or an outline (ex 1.1, 1.2). This is a demo version and is not licensed for use in a application. A version of the outline control is available for use in applications (without the nag screen) for $75 (US funds only). Complete source code is available. You should have Common: OUTLINE.DOC Microsoft Word 2.0 format documentation README.TXT Readme file DLL Version: OL_DLL.DLL Outline dynamic link library (redistributable) OUTLINE.H Header file. OL_DLL.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. VBX Version: OL_VBX.VBX Outline Visual Basic control design time VBX *OL_RUN.VBX Outline Visual Basic control runtime VBX (redistributable) **TESTMFC.ZIP MFC example program **TEXTBC.ZIP OWL 2.0 example program **TEXTVB.ZIP Visual Basic example program * Not included with the demo version ** you will only receive one of the example programs Support Please send any questions or comments to CIS: 73611,1023. You may also write and/or send payment to: Todd J. Abel 2585 Cooley Road Canandaigua, New York 14425 VBX Properties and Events Properties: +About +AllowAppend +AllowDelete +AllowEdit  +AllowInsert BackColor BorderStyle +Count  CtlName Drag Icon Drag Mode Enabled  FontBold FontItalic FontName FontSize  FontStrikeThru Height +Indent Index  Left +MaximumIndent +Numbering Parent  +Position +Redraw TabIndex TabStop  Tag Text Top Visible  Width   Events: +AddNode +ChangeNode +ChangeSelection +DeleteNode  +IndentNode +InsertNode +KillFocus +LeftButtonClick  +LeftButtonDoubleClick +MiddleButtonClick +MiddleButtonDoubleClick +RightButtonClick  +RightButtonDoubleClick +SetFocus +VerticalScroll    Methods: *AddItem RemoveItem Refresh    * AddItem method is a little different from the standard implementation. The index argument that is normally optional is required by the outline AddItem. Index represents the indent level of the node, not the position within the control. +Note: Custom properties and events are marked with an plus (+) and described in the next two sections. For information on Visual Basic standard properties, events and methods consult the Visual Basic documentation. In addition to the properties, events and methods listed above, messages may also be sent to the control using the documented messages for the Dynamic Link Library version. Here is an example of the code needed to send an OL_FLUSH message: In the general declarations sections of your form: Declare Function SendMessage& Lib user (ByVal hWnd%, ByVal wMsg%, ByVal wParam%, lp As Any) Const WM_USER = &H400 Const OL_BASE = WM_USER + 200 Const OL_FLUSH = OL_BASE + 29 Where you want to send the message add: retVal& = SendMessage(OL_VBX1.hWnd, OL_FLUSH, 0, 0) OL_VBX1 is the name of the outline control and OL_FLUSH is the message to send. For a working example, see the event procedure for Flush in TESTVB.ZIP or Microsoft technicial document Q72677. VBX Custom Properties About (Dialog) Description: Displays a dialog box that contains the version number of OL_VBX.VBX. Usage: Used only from within the Visual Basic environment Remarks: To display the About dialog, click on the ellipsis (...) that appears in the properties list. This is a design time only property. AllowAppend (Boolean) Description: Sets or returns TRUE or FALSE if the user is allowed to append new nodes to the end of the outline. Usage: [FORM.]ctlname.AllowAppend = boolean% Remarks: The default setting is TRUE. Valid settings are: Setting Description TRUE The user is allowed to append new nodes to the outline. FALSE The user is not allowed to append new node to the outline. AllowDelete (Boolean) Description: Sets or returns TRUE or FALSE if the user is allowed to delete nodes within the outline. Usage: [FORM.]ctlname.AllowDelete = boolean% Remarks: The default setting is TRUE. Valid settings are: Setting Description TRUE The user is allowed to delete nodes within the outline. FALSE The user is not allowed to delete nodes within the outline. AllowEdit (Boolean) Description: Sets or returns TRUE or FALSE if the user is allowed to edit nodes within the outline. Usage: [FORM.]ctlname.AllowEdit = boolean% Remarks: The default setting is TRUE. Valid settings are: Setting Description TRUE The user is allowed to edit nodes within the outline. FALSE The user is not allowed to edit nodes within the outline. AllowInsert (Boolean) Description: Sets or returns TRUE or FALSE if the user is allowed to insert nodes within the outline. Usage: [FORM.]ctlname.AllowInsert = boolean% Remarks: The default setting is TRUE. Valid settings are: Setting Description TRUE The user is allowed to insert nodes within the outline. FALSE The user is not allowed to insert nodes within the outline. Count (Integer) Description: Returns the number of nodes within the outline. Usage: Integer% = [FORM.]ctlname.Count Remarks: None Indent (Integer) Description: Sets or returns the current indent level of the current node. Usage: [FORM.]ctlname.Indent = integer% Remarks: The default setting is 0. The range is between 0 and 7. When setting a nodes indent level, the indent level should not be set to more than the outlines current maximum level. The indent level can not be set to more than 7. MaximumIndent (Integer) Description: Sets or returns the maximum indent level of outline control. Usage: [FORM.]ctlname.MaximumIndent = integer% Remarks: The default setting is 7. The range is between 0 and 7. When setting a nodes indent level. The maximum indent level is checked only when the user is changing the indent level. Numbering (Integer) Description: Sets or returns the current numbering style. Usage: [FORM.]ctlname.Numbering = integer% Remarks: The default setting is 1 (numeric). This controls the numbering style that appears to the left of each node. Valid settings are: Setting Description 0 No numbering. No numbering is displayed. 1 Numeric numbering. Nodes will automatically be numbered consecutively, 1, 2, 3, 4. If a node is indented, it takes on the parents number plus a consecutive number 1.1, 1.2, 1.3, 1.4. Position (Integer) Description: Sets or returns the current node within the outline control. Usage: [FORM.]ctlname.Position = integer% Remarks: Position is zero based. The current position can not be set to less than zero or greater than the number of nodes within the outline control. Redraw (Boolean) Description: Sets or returns TRUE or FALSE if the outline control will be redrawn. Usage: [FORM.]ctlname.Redraw = boolean% Remarks: The default setting is TRUE. This setting is useful if many changes are being made to the outline control. Set Redraw to FALSE, make the changes and then set Redraw to TRUE. Valid settings are: Setting Description TRUE Redrawing occurs normally. FALSE No redrawing occurs. VBX Custom Events AddNode (Event) Description: This event is fired after a node has been added to the control. Syntax: Sub ctlname_AddNode(Offset As Integer) Remarks: After a node has been added to the control, this event is fired. Offset is the zero based position of the newly added node. ChangeNode (Event) Description: This event is fired after a node within the control has been changed. Syntax: Sub ctlname_ChangeNode(Offset As Integer) Remarks: After a node has been changed, this event is fired. This event is fired every time the user types within a node. Offset is the zero based position of the changed node. ChangeSelection (Event) Description: This event is fired after the user changes the currently selected node. Syntax: Sub ctlname_ChangeSelection(Offset As Integer) Remarks: After the user changes the currently selected node this event is fired. The selection can be changed by a mouse click or the keyboard. Offset is the zero based position of the selected node. DeleteNode (Event) Description: This event is fired after a node has been deleted from the control. Syntax: Sub ctlname_DeleteNode(Offset As Integer) Remarks: After a node has been deleted from the control, this event is fired. Offset is the zero based position of the deleted node. IndentNode (Event) Description: This event is fired after a node has been indented. Syntax: Sub ctlname_IndentNode(Offset As Integer) Remarks: After a node has been indented, this event is fired. Offset is the zero based position of the effected node. InsertNode (Event) Description: This event is fired after a node has been inserted. Syntax: Sub ctlname_InsertNode(Offset As Integer) Remarks: After a node has been inserted, this event is fired. Offset is the zero based position of the newly inserted node. KillFocus (Event) Description: This event is fired after the outline control has lost the input focus. Syntax: Sub ctlname_KillFocus() Remarks: None. LeftButtonClick (Event) Description: This event is fired after the user clicks the left mouse button within the control. Syntax: Sub ctlname_LeftButtonClick() Remarks: None. LeftButtonDoubleClick (Event) Description: This event is fired after the user double clicks the left mouse button within the control. Syntax: Sub ctlname_LeftButtonDoubleClick() Remarks: None. MiddleButtonClick (Event) Description: This event is fired after the user clicks the middle mouse button within the control. Syntax: Sub ctlname_MiddleButtonClick() Remarks: None. MiddleButtonDoubleClick (Event) Description: This event is fired after the user double clicks the middle mouse button within the control. Syntax: Sub ctlname_MiddleButtonDoubleClick() Remarks: None. RightButtonClick (Event) Description: This event is fired after the user clicks the right mouse button within the control. Syntax: Sub ctlname_RightButtonClick() Remarks: None. RightButtonDoubleClick (Event) Description: This event is fired after the user double clicks the right mouse button within the control. Syntax: Sub ctlname_RightButtonDoubleClick() Remarks: None. SetFocus (Event) Description: This event is fired after the outline control has gained the input focus. Syntax: Sub ctlname_SetFocus() Remarks: None. VerticalScroll (Event) Description: This event is fired after the user scrolls the outline control. Syntax: Sub ctlname_VerticalScroll() Remarks: None. Outline Messages (DLL version) 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 currently supported  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.   Note: All messages are described in detail in Message Reference section. Message Reference (DLL version) 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. 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 tab delimited. 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. Each node's text is delimited by a tab character.   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 (DLL version) 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.   Note: All messages are described in detail in Notification Reference section. Notification Reference (DLL version) 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.   Outline Control - Page page 4 Copyright (C) 1993 Todd J. Abel. Version: date 03/03/94 time 5:19 PM All Rights Reserved. "$FHnp N O [ ]  $?D  @@@@@@@@@@@@((HHBDHOQ5UW]egho$|~WY9=i#(,3_a{       >MS[bcnqy}UYewyObj  tzw{                 < &)15=r+-9mst|  ' ( . 2 9 = E )!+!9!J!L!X!!!!!!!!!!!"""               B"""""""""# #######$$$$$$%%"%)%*%2%6%=%A%I%%%%%&N&T&\&c&d&j&m&u&y&&&& '&'G'Z'b'''''''%(,(-(0(               @0(1(8(9(@(W(_((((( )T)[)\)_)`)g)h)r)))?*O*^*`*l***********+++++0,7,8,;,<,C,D,N,e,m,,, - --P-W-X-[-\-c-d-n---.            C. ...*.b.i.j.m.n.u.v..../"/2/4/@////////////////H0O0P0S0T0[0\0k0q0y000000111!1"1)1*1?1E1M1Y1k1z1|111               A11111112 22!292G2I2U222222222222 333*3333333333333333T4[4\4_4`4g4h4~44444444 55555 5!5)5/5            D/575C5R5a5c5o5555555555555564666o6q66667B7D77777*8,8[8]8888899`9b999ÿ{   0999-:/:::::2;4;;; <<e<g<<<n=p===>>U>W>>>>>"?$?y?{?}????@7@9@Y@[@a@@ÿ{wvut-@@@@@AyA{AAAAABB!B/BMBBBBBB4C:CHCYCgCCCC D DDgDmD{DDDDE E@EBEHEEEEEEEFFFFFFFG*G9GTGGGGGGGG7H=HZHkHzHH,I.INIPIVIsIyIIIIIJJ:JkL>k@kkkkk>l@lllllSmUmmmmnGnInnnnnnoooopppLpSppprr4r6rvvvwwwwwwwxxxdygyyyyyydztzN{Q{q{s{y{{{O|b|F}I}i}k}q}}}J~[~7:Z\b8K14TV\5E #CEK!4<>Dz+^e Ԉ׈Y5<ӉՉĊƊ̊ ΋FHŒČIK!#XZ^uv{|}~ŽÎʎˎB:*,&Jr5 7 4 L N NN ] * %HnCEr &1>FHQ\gpr|³l :,"l :,"l :,"l :,"4 #).79@BDFHQ[hz zzzzkeeel p."l p." l:l :,"l :,"l :,"l :,"' 7BSUWY[]gq}|~WYKM;=fhay{')˼~yqq@ `@ `@ `& ( / l :,"l p."l p.",KM{}UWYyMOj rt6wy{35ǿ~yql@ `@ `@ `@ `@ `@ `@ `@ `@ `@ `@ `*5pr-km  ; = '!)!+!L!!!!!""""""###Ŀ~~vqid\@ `@ `@ `@ `@ `@ `@ `@ `@ `@ `@ `@ `@ `$####$$$$$%%?%A%%%%%L&N&w&y&E'G'b'''''''''#(%(U(W(((((R)T)Ŀ~~~yql@ `@ `@ `@ `@ `@ `@ `@ `@ `@ `@ `)T)));*=*?*`*****++++.,0,c,e,,,, -N-P-----..`.b...Ŀ~vvvqid\W@ `@ `@ `@ `@ `@ `@ `@ `@ `@ `@ `@ `@ `".///4/////////F0H0o0q0000011C1E1U1W1Y1|111 2 222!2Ŀ~vqid\\\@ `@ `@ `@ `@ `@ `@ `@ `@ `@ `@ `@ `@ `#!2I22222222333333333R4T4444444 5 5-5/5?5A5C5c55ǿ~yqlddd_W@ `@ `@ `@ `@ `@ `@ `@ `@ `@ `@ `@ `@ `"555555555555566'64666C6o6q66666677B7D7U777й}vvibbU l # l # l # l # l #l # @ `@ ` 77777*8,868[8]8r888888899,9`9b9t999999Ľtmm`YYL l # l # l # l # l # l # l # l # l #9:-:/:H:::::::2;4;I;;;; <<<e<g<y<<<<n=p=Ľtmm`YYL l # l # l # l # l # l # l # l # l #p=====>>>U>W>i>>>>>>?"?$?,?y?{?}????@7@9@E@Y@Ľtofaa\WQQ& ( /  l # l # l # l # l # l # l #Y@[@c@~@@@@@@@@@AyA{AAAAAAAABBBB!B-B/BMBBBBBþ~~qllgb\\ l f l fl f  l f l fl f !BBBC2C4CPRPTP\PuPwPPPPPPPP QQQQQQQ9R;RDR2S4S7SGSSSSʽyssfa\WR l ! l !l !  l ! l !l ! SOTRT^TrTtT|TTTU!U#U&U5UUUUIVKVWVkVmVuVVVVVVVVVV!WŸtnna\WWR l f l fl f  l ! l !l !  !WUWXWdWxWzWWWWWWWWWXX/XkXnXzXXXXXXYYY"Y1Y^W^Y^[^j^}wwjddWR l f l fl f  l ! l !l !  j^u^w^^^S_W_Y_e_y_{___________`s`v```````````}wwjddW l ! l !l !  l f l fl f !````aaaaaaaaaabb bb$b'bBb~bbbbbbbbbbbbɼxrre__R l ! l !l !  l ! l !l !  bbc c.cccccccccdddddddeeeeeeeeeefɼsmm`ZZ l !l !  l ! l !l ! ffff f"fCf}fffffffffggg+gggghhh%h'h/hRhhhh¼keeeXR l !l !  l ! l !l !  l ! hhhhhhhhIiLiXiliniviiiiiiiiiiiiij!j#j0jMjOjӼjccV l !hl !  l ! l !l !  l !Oj[jjjjjjjkkk>k@kOkkkkkkk>l@lPllllllĽtmm`YYL l !h l !h l !h l !h l !h l !h l !h l !h l !hl mSmUmhmmmmmnnGnInVnnnnnnoooooopppJpLpĽyyb\\O l !l ! & ( /  l !h l !h l !h l !h l !hLpUppppprr r4r6r>rorqrzrs s sssss tttHtJtSttttyssf``SN l ! l !l !  l ! l !l !  l !ttuuuuuuvv!vvvvvvwwwwwwwwwxxxxxdygytnna\WR l ! l !l !  l ! l !l ! gysyyyyyyy\z^zazdztzN{Q{]{q{s{{{{{{J|L|O|b|F}I}U}i}ʽ}}pkf`` l ! l !l !  l ! l !l ! i}k}s}}}}E~G~J~[~7:FZ\d358K14@TV^vqlffOIl !  l ! l !l !  l ! l !l ! ^025E #/CEM!4(<>Fxzʳ}}f``SMM l !l !  l ! l !l !  l ! l !+!\^g Ԉ׈35>ΉЉӉՉƹzttgaaTO l ! l !l !  l ! l !l !  l !ՉĊƊΊ Ƌ΋ЋڋFHWxqqd]]PIh l!h l!h l!hl!  l ! l !l ! ŒČ̌.IKV!#.XZ\^Ľtoojjje l!h l!h l!h l!h l!h l!h l!h\toc 9Outline Heading 1Outline Heading 2Indent 1IndentA   F /!x!!! !X!!!h!! x !@ x&   %nHY Tms Rmn `Symbol Helv 0CourierTimes New Roman Arial MS Serif MS Sans SerifTimes Helvetica System0Courier New0LinePrinter Wingdings 0Modern @ScriptRoman MS DialogSmall Fonts?m MS\^dlm! "S`!k]+Outline Control Paul King Paul King