home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
etkdoc.zip
/
ETKE.TXT
< prev
Wrap
Text File
|
1993-01-13
|
257KB
|
10,097 lines
PROGRAMMERS GUIDE TO THE E EDITOR TOOLKIT. VERSION 2.0
January 13, 1993
Gennaro (Jerry) Cuomo (GCUOMO at YKTVMV)
Jason Crawford (JASON at YKTVMV)
John Ponzo (JPONZO at YKTVMV)
OS/2 Applications & Tools
IBM T.J. Watson Research Center
P.O. Box 218
Yorktown Heights, NY 10958
-----------------------------------------------------------------------------
ii Programmers Guide to the E Editor Toolkit. Version 2.0
CONTENTS
________
DISCLAIMER - READ FIRST! . . . . . . . . . . . . . . 1
INTRODUCTION. . . . . . . . . . . . . . . . . . . . . 3
WRITTING PROGRAMS USING THE E TOOLKIT . . . . . . . . 5
GETTING STARTED. . . . . . . . . . . . . . . . . . . 7
ETKExxx.DLL - The "Heart" of the E-Toolkit . . . . . 7
ETKRxxx.DLL - Utility Resources . . . . . . . . . . . 7
E-Macros - Utility Resources . . . . . . . . . . . . 8
Your Application/Sample Programs . . . . . . . . . . 8
Special Notes!!! . . . . . . . . . . . . . . . . . . 9
E TOOLKIT FUNCTIONS AT A GLANCE. . . . . . . . . . 11
Register, Create, Delete functions (The basics) . . 11
Special Access- E-MLE Manipulation . . . . . . . . 11
REGISTER, CREATE, DELETE FUNCTIONS (THE BASICS) . . 15
EtkRegister . . . . . . . . . . . . . . . . . . . . 16
EtkCreate . . . . . . . . . . . . . . . . . . . . . 17
EtkDestroy . . . . . . . . . . . . . . . . . . . . 19
EtkVersion . . . . . . . . . . . . . . . . . . . . 20
SPECIAL ACCESS FUNCTIONS- E-MLE MANIPULATION . . . 21
Event Execution. . . . . . . . . . . . . . . . . . 21
EtkExecuteCommand . . . . . . . . . . . . . . . . . 22
EtkProcessEditKey . . . . . . . . . . . . . . . . . 23
Text Manipulation . . . . . . . . . . . . . . . . . 25
EtkQueryText . . . . . . . . . . . . . . . . . . . 26
EtkDeleteText . . . . . . . . . . . . . . . . . . . 27
EtkReplaceText . . . . . . . . . . . . . . . . . . 28
EtkInsertText . . . . . . . . . . . . . . . . . . . 29
EtkQueryTextBuffer . . . . . . . . . . . . . . . . 30
EtkInsertTextBuffer . . . . . . . . . . . . . . . . 31
EtkFindAttribute. . . . . . . . . . . . . . . . . . 32
Text Selection. . . . . . . . . . . . . . . . . . . 33
EtkQuerySelectionType . . . . . . . . . . . . . . . 34
EtkQuerySelection . . . . . . . . . . . . . . . . . 35
EtkSetSelection . . . . . . . . . . . . . . . . . . 37
File Information . . . . . . . . . . . . . . . . . 39
EtkQueryFileID . . . . . . . . . . . . . . . . . . 40
EtkSetFileField . . . . . . . . . . . . . . . . . . 41
EtkQueryFileField . . . . . . . . . . . . . . . . . 42
E TOOLKIT MESSAGES . . . . . . . . . . . . . . . . 45
EPM_FRAME_STATUSLINE . . . . . . . . . . . . . . . 48
EPM_FRAME_MESSAGELINE . . . . . . . . . . . . . . . 50
EPM_EDIT_VERSION . . . . . . . . . . . . . . . . . 51
-----------------------------------------------------------------------------
Contents iii
EPM_EDIT_TURN_OFF_HIGHLIGHT . . . . . . . . . . . . 52
EPM_EDIT_QUERY_HELP_INSTANCE . . . . . . . . . . . 53
EPM_BROADCASTHELP . . . . . . . . . . . . . . . . . 54
EPM_EDIT_DELETEFILE . . . . . . . . . . . . . . . . 55
EPM_EDIT_ACTIVATEFILEID . . . . . . . . . . . . . . 56
EPM_EDIT_CHAR . . . . . . . . . . . . . . . . . . . 57
EPM_EDIT_CLIPBOARDCOPY . . . . . . . . . . . . . . 58
EPM_EDIT_COMMAND . . . . . . . . . . . . . . . . . 59
EPM_EDIT_COMMAND2 . . . . . . . . . . . . . . . . . 61
EPM_EDIT_CHANGEFONT . . . . . . . . . . . . . . . . 62
EPM_EDIT_TASKLIST . . . . . . . . . . . . . . . . . 63
EPM_EDIT_RETCODE . . . . . . . . . . . . . . . . . 64
EPM_EDIT_CURSORMOVE . . . . . . . . . . . . . . . . 65
EPM_EDIT_ACTIVEHWND . . . . . . . . . . . . . . . . 66
EPM_EDIT_OPTIONS . . . . . . . . . . . . . . . . . 67
EPM_EDIT_ID . . . . . . . . . . . . . . . . . . . . 70
EPM_EDIT_SHOW . . . . . . . . . . . . . . . . . . . 71
EPM_EDIT_NEWFILE . . . . . . . . . . . . . . . . . 72
EPM_EDIT_DESTROYNOTIFY . . . . . . . . . . . . . . 74
EPM_EXTRAWINDOW_REFRESH . . . . . . . . . . . . . . 75
EPM_EDIT_CONTROLTOGGLE . . . . . . . . . . . . . . 76
EPM_EDIT_RECORDKEY- . . . . . . . . . . . . . . . . 78
EPM_EDIT_ENDRECORDKEY- . . . . . . . . . . . . . . 79
EPM_EDIT_PLAYKEY . . . . . . . . . . . . . . . . . 80
EPM_EDIT_QUERYRECORDKEY . . . . . . . . . . . . . . 81
EPM_EDIT_ASKTOQUIT . . . . . . . . . . . . . . . . 82
EPM_EDIT_ASKTOCLOSE . . . . . . . . . . . . . . . . 83
EPM_EDIT_ASKTODONE . . . . . . . . . . . . . . . . 84
EPM_EDIT_ASKTOFAILED . . . . . . . . . . . . . . . 85
ERES.DLL . . . . . . . . . . . . . . . . . . . . . 87
ERES.DLL - Exported Functions . . . . . . . . . . . 88
ERESRegisterEtkFunctions . . . . . . . . . . . . . 89
ERESCommonWndProc . . . . . . . . . . . . . . . . . 90
ERESSaveLists . . . . . . . . . . . . . . . . . . . 91
ERESRetrieveLists . . . . . . . . . . . . . . . . . 92
ERESOpenEditWindow . . . . . . . . . . . . . . . . 93
ERESCountEWindows . . . . . . . . . . . . . . . . . 94
ERESPopDlgBox . . . . . . . . . . . . . . . . . . . 95
ERESIsAnEditWin . . . . . . . . . . . . . . . . . . 97
ERESEwindowValid . . . . . . . . . . . . . . . . . 98
ERESSendOpenMsgToApp . . . . . . . . . . . . . . . 99
ERESShutDown . . . . . . . . . . . . . . . . . . . 100
ERESInitEResStruct . . . . . . . . . . . . . . . . 101
ERESCheckVersion . . . . . . . . . . . . . . . . . 102
ERESProcessCommands . . . . . . . . . . . . . . . . 103
ERESEditwindowList . . . . . . . . . . . . . . . . 104
ERES.DLL - EXPORTED DIALOG BOX PROCEDURES . . . . . 105
ERESOpen1DlgProc . . . . . . . . . . . . . . . . . 106
ERESCommandDlgProc . . . . . . . . . . . . . . . . 108
ERESFindChangeDlgProc . . . . . . . . . . . . . . . 110
ERESConfigDlgProc . . . . . . . . . . . . . . . . . 111
EntryBoxDlgProc . . . . . . . . . . . . . . . . . . 113
-----------------------------------------------------------------------------
iv Programmers Guide to the E Editor Toolkit. Version 2.0
ListBoxDlgProc . . . . . . . . . . . . . . . . . . 115
QuitBoxDlgProc . . . . . . . . . . . . . . . . . . 117
EXAMPLE E TOOLKIT APPLICATION . . . . . . . . . . . 121
APPENDIX . . . . . . . . . . . . . . . . . . . . . 123
Appendix A - . . . . . . . . . . . . . . . . . . . 123
Appendix A1 - . . . . . . . . . . . . . . . . . . . 127
Appendix B - . . . . . . . . . . . . . . . . . . . 128
Appendix C - . . . . . . . . . . . . . . . . . . . 129
Appendix E - . . . . . . . . . . . . . . . . . . . 134
Appendix F - . . . . . . . . . . . . . . . . . . . 137
Appendix G - . . . . . . . . . . . . . . . . . . . 139
-----------------------------------------------------------------------------
Contents v
-----------------------------------------------------------------------------
vi Programmers Guide to the E Editor Toolkit. Version 2.0
DISCLAIMER - READ FIRST!
________________________
The sample code for using the current version (5.51) of
the E Toolkit and its Enhanced Multi-Line Edit control
(E-MLE) is being made available for the benefit of those
who need to use it now. It is being released "as-is",
with no promise of support, enhancement, or bug fixes.
In addition, you should be aware that we are currently
working on a new, cleaner, API for the next major update
to EPM, which is not necessarily compatible with the one
used in this package.
In mentioning the "next major update", we are not guaran-
teeing that this will ever be released outside of IBM.
(That is not a decision that we can make.) We are cur-
rently developing EPM 5.60, which includes long line
support, pop-up menus, and much more, and EPM 6.00, which
is essentially a 32-bit version of EPM 5.60.
If you have a need to develop on top of the newer E-MLE,
then please send a note to Gennaro Cuomo (gcuomo at
watson.IBM.com) describing why you need it. This will
help us demonstrate demand for the new code, and *might*
get you on our beta-test list.
-----------------------------------------------------------------------------
Disclaimer - read first! 1
-----------------------------------------------------------------------------
2 Programmers Guide to the E Editor Toolkit. Version 2.0
INTRODUCTION.
_____________
The E-Toolkit assists a software developer in building
applications that edit multiple lines of text. The
E-Toolkit gives developers access to OS/2 functions and
PM messages that enable the creation and manipulation of
an advanced multi-line edit control window. This multi-
line edit window contains an advanced text editor engine
based on the "E" text editor technology. (The E Family
of text editors include, E3 for DOS, E3AIX for AIX, EOS2
for Full Screen OS/2, EPM and EPM/G for OS/2 Presentation
Manager.) This multi-line edit window is referred to as
the E-MLE. The E-MLE is a versatile control window that
supports many primitive operations which allow easy
access to powerful text editing capabilities.
For example, The E-MLE supports the editing of large
files (limited only by system memory). Each E-MLE can
store multiple files, each of which can be viewed one at
a time. (The feature is known as a "file RING") The
E-MLE supports text with associated attribute informa-
tion. Using the attribute feature your application can
display text in Multiple Fonts, Multiple colors, and even
associate commands with regions of text. (Associating
commands with regions of text can be a way of imple-
menting HyperText.) An advanced feature is available
which allows other window classes to be overlayed with in
a E-MLE. Using this "Overlay Window" feature, a E-MLE
can incorporate images along with text.
The E based editor engine runs in its own separate work
thread. Therefore, when primitive commands are executed
(i.e. Load a file) the main process is not blocked.
This built-in feature leads to programs that efficiently
use the computers CPU.
The behavior of an E-MLE can be enhanced by adding new
methods of behavior in any of the following ways. The
E-MLE can be sub-classed using traditional PM functions
written in C. (i.e WinSubclassWindow(...)). New methods
can also be added to an E-MLE by simply extending event
definitions by writing E or REXX macros.
This document describes the Application Program Interface
(API) of the E-Toolkit. Examples are provided that dem-
onstrate some of the more popular way in which an E-MLE
can be used.
-----------------------------------------------------------------------------
Introduction. 3
As mentioned above, The E-MLE can also be extended by
writing Macros. The E Technical Reference manual
describes how macros can be written.
-----------------------------------------------------------------------------
4 Programmers Guide to the E Editor Toolkit. Version 2.0
WRITTING PROGRAMS USING THE E TOOLKIT
_____________________________________
There are four basic steps to creating an E-MLE window.
The first step is to Register the E-MLE window class.
After Registration, a data structure, describing the
desired characteristics of your E-MLE, must be created.
The next step involves actually creating the E-MLE and an
receiving a handle to the E-MLE in return. This handle
can now be used to manipulate the E-MLE window.
1) Register the E-MLE window Class.
2) Fill in Data Structure.
3) Create the E-MLE.
4) Manipulate E-MLE
-----------------------------------------------------------------------------
Writting programs using the E Toolkit 5
-----------------------------------------------------------------------------
6 Programmers Guide to the E Editor Toolkit. Version 2.0
GETTING STARTED.
________________
In order to write application programs using the
E-Toolkit you first need to download the latest EPM/G
package from OS2TOOLS. You will also need copies of the
OS/2 1.3 Programmers ToolKit, and the IBM C/2 compiler.
(We currently provide language bindings to the 'C' pro-
gramming language. ('ETOOLKT.H')
Unpack the FLSBIN files that make up the EPM/G package.
(Use LOADRAM to unpack FLSBIN files.)
There are four major pieces that are essential to the
building of your own custom editor application.
1) ETKExxx.DLL - Heart of the E-Toolkit
2) ETKRxxx.DLL - Utility Resources
3) E-Macros - Utility Resources
4) Your Application/Sample Programs
ETKEXXX.DLL - THE "HEART" OF THE E-TOOLKIT
__________________________________________
The first file is ETKExxx.DLL. This is the dynamic link
library that contains the powerful functions that will
allow you to create your own custom E-MLE windows. Both
messages and functions are available for a user to sub-
class the behavior of an E-MLE. Sample functions
include: EtkInsertText, EtkProcessEditKey, and
EtkSetFileField, and EtkQueryText Sample message include
the EPM_EDIT_COMMAND message allows any of the editor
commands to be issued against the receiving edit window.
The API to this library is described in detail in this
document.
ETKRXXX.DLL - UTILITY RESOURCES
_______________________________
The second file of interest is ETKRxxx.DLL. This file
contains Utility Resources. We call this our
ERES-Toolkit. It contains widgets that enhance produc-
tivity when working with E-MLE's. Dialogs boxes such as
the Search, Bookmark, and Error Message dialog can be
displayed using the EResPopDialog(...) function. Other
utility functions like EResCountEditWindow(...) and
EResOpenEditWindow(...) are examples of functions pro-
vided so programmers need not write some of the most
common actions taken upon E-MLE windows. The API to this
library is described in detail in this document.
-----------------------------------------------------------------------------
Getting Started. 7
E-MACROS - UTILITY RESOURCES
____________________________
The set of E macros files can be use to build your own
custom macros which will enhance your applications E-MLE.
For example, you can build new commands using the E
macros "defc" construct that can be executed in C using
either the EtkExecuteCommand function of the
EPM_EDIT_COMMAND message.
YOUR APPLICATION/SAMPLE PROGRAMS
________________________________
This is the program that you write. For example EPM.EXE.
EPM.EXE is small piece of code that creates E-MLE's and
provides the proper glue needed to tie in dialogs, help,
macros, and etc. (The *source code* to EPM.EXE ver 5.50
is available via request to EOS2. It will become a per-
manent piece of our toolkit package.)
Note: It is important that the two dynalink libraries
are placed in a sub-directory that is specified in your
LIBPATH environment variable. (Your LIBPATH environment
variable is found in your CONFIG.SYS file.)
Before you attempt to write you own application, you
should examine the sample programs provided with this
package. A sample program named ESIMPLE is provided to
demonstrate the "basics" of an E-MLE application. The
sample contains two source files:
o ESIMPLE.C
o ESIMPLE.E
ESIMPLE.C creates a parent window containing a single
E-MLE window. The parent monitors cursor movement within
the E-MLE by processing the EPM_EDIT_CURSORMOVE message.
When this message is received, a status line is painted
containing the line and column of the cursor.
ESIMPLE.E contains a definition of a handful of keys.
ESIMPLE.MAK is provided to compile and link all compo-
nents of the ESIMPLE example. (When you build your own
custom application, be sure to use the same link and
compile options as used in the example.
You are now ready to write your own editor application
using the Editor Toolkit.
-----------------------------------------------------------------------------
8 Programmers Guide to the E Editor Toolkit. Version 2.0
SPECIAL NOTES!!!
________________
1) PM Queue size.
Take note of the PM Queue Size specified in the
ESIMPLE program.
hmq = WinCreateMsgQueue(hab, 0x100); // Create Queue
We strongly recommend the above PM queue definition
because the E-MLE requires a large queue for message
passing.
2) E-MLE window handles. (E-MLE Positioning)
The E-MLE window is a standard PM window. At
minimum, it contains a frame window as well as a
client window. (You can us the PMstyle flag to add
any other standard window control as well.) To posi-
tion the E-MLE window one must use the frame window
handle. The EtkCreate function returns a handle to
the E-MLE client window. The following is an example
of positioning an E-MLE window.
VOID PositionMLE( HWND hwndMLE, SHORT x, SHORT y, SHORT cx, SHORT cy)
{ HWND hMLEFrame=WinQueryWindow( hwndMLE, QW_PARENT, FALSE );
WinSetWindowPos(hMLEFrame, NULL, x ,y ,cx ,cy, SWP_MOVE | SWP_SIZE);
}
-----------------------------------------------------------------------------
Getting Started. 9
-----------------------------------------------------------------------------
10 Programmers Guide to the E Editor Toolkit. Version 2.0
E TOOLKIT FUNCTIONS AT A GLANCE.
________________________________
The following functions are used to create and manage
E-MultiLine Edit (E-MLE) windows:
REGISTER, CREATE, DELETE FUNCTIONS (THE BASICS)
_______________________________________________
The following Dynalink functions are used to registra-
tion, initialization, and destroy E-MLE windows.
ETKREGISTER
Register the E-MLE window class.
ETKCREATE
Create an E-MLE Window.
ETKDESTROY
Destroy a Edit Window.
ETKVERSION
Retrieve the ETKxxx.DLL version number.
ETKGETPROCADDRS
Retrieve function address of the "basic" func-
tions.
SPECIAL ACCESS- E-MLE MANIPULATION
__________________________________
The following Dynalink functions are used to manipulate
various aspects of an E-MLE.
----------------
EVENT EXECUTION.
ETKEXECUTECOMMAND
Execute an command
ETKPROCESSEDITKEY
Execute a "built-in" key action
-----------------
TEXT MINIPULATION
ETKDELETETEXT
Delete a line of text.
ETKREPLACETEXT
Replace a line of text with a new line.
ETKINSERTTEXT
Insert a new line of text.
-----------------------------------------------------------------------------
E Toolkit functions at a glance. 11
ETKQUERYTEXT
Retreive a line of text.
ETKQUERYTEXTBUFFER
Retreive a range of lines.
ETKINSERTTEXTBUFFER
Insert a stream of text.
ETKFINDATTRIBUTE
Search for an attribute associated with a line.
--------------
TEXT SELECTION
ETKSETSELECTION
Select text
ETKQUERYSELECTION
Query selection region.
ETKQUERYSELECTIONTYPE
Query Selection Type.
----------------
FILE INFORMATION
ETKQUERYFILEID
Query the active files id.
ETKSETFILEFIELD
Set file related information
ETKQUERYFILEFIELD
Query file related information
ETKQUERYFILEFIELDSTRING
Query file related information
-----
FONTS
ETKREGISTERFONT
Register a new font
ETKREGISTERFONT2
Register a new fixed pitch font.
---------------
SPECIAL ACCESS.
ETKACCESSLOWLEVELDATA
It's a secret. :-)
-----------------------------------------------------------------------------
12 Programmers Guide to the E Editor Toolkit. Version 2.0
-----------------------------------------------------------------------------
E Toolkit functions at a glance. 13
-----------------------------------------------------------------------------
14 Programmers Guide to the E Editor Toolkit. Version 2.0
REGISTER, CREATE, DELETE FUNCTIONS (THE BASICS)
_______________________________________________
-----------------------------------------------------------------------------
Register, Create, Delete functions (The basics) 15
ETKREGISTER -
_____________
(REGISTER AN E-MULTI-LINE EDIT WINDOW)
______________________________________
-----------------------------------------------------------------------------
Register the E-Multi-Line Edit Window Class for this
process.
+-------------------------------------------------------+
| ETKREGISTER (HAB, CLASS_STYLE, Window_Class_Name ) |
_________________
+-------------------------------------------------------+
PARAMETERS
HAB (HAB) - input
_____
Application anchor block
CLASS_STYLE (ULONG) - input
_______
Default window style. This can be any of the
standard PM class styles CS_*.
RETURNS
WINDOW_CLASS_NAME (PSZ) -
_____
Pointer to window-class-name string in which the
editor window was registered under.
REMARKS
This call only needs to be called once per applica-
tion. This function issues a WinRegisterClass.
Your application can customize this registration
process. The first 16 bytes of window storage is
reserved for the E-MLE window. You can use
EtkWndProc as the default window procedure for your
custom class.
EXAMPLE
WinRegisterClass( // Register Window Class
(HAB)hab, // Anchor block handle
(PSZ)classEwindow, // Window Class name
(PFNWP)EtkWndProc, // Address of Window Procedure
(ULONG)class_style, // class style
(USHORT)16 // ETK uses the first 16bytes of
); // the reserved long.
-----------------------------------------------------------------------------
16 Programmers Guide to the E Editor Toolkit. Version 2.0
ETKCREATE -
___________
(CREATE A E-MULTI-LINE EDIT CONTROL WINDOW)
___________________________________________
-----------------------------------------------------------------------------
Create a new E-Multi-line edit control window con-
taining specified file(s).
+-------------------------------------------------------+
| ETKCREATE (EPM_P, HWND_P, rc ) |
__
+-------------------------------------------------------+
PARAMETERS
EPM_P (PEDITORINFO) - input
_____________
Pointer to Text Editor Information Structure.
.---------------------------------------------------------------------------.
| Editor Information Structure defined in 'C' |
|---------------------------------------------------------------------------|
| typedef struct EDIT_INFO_TYPE { |
| HAB hab; // application anchor block |
| HWND hwndparent; // handle to parent of edit window |
| HWND hwndowner; // handle to owner of edit window |
| PRECTL pswp // positioning of edit window |
| PSZ filename; // file to be edited (with wildcard) |
| HPOINTER hEditPtr; // handle to editor pointer icon. |
| HPOINTER hMarkPtr; // handle to mark pointer icon. |
| PVOID hEditorIcon; // editor ICON. |
| ULONG editorstyle; // internal editor options |
| ULONG pmstyle; // PM standard window styles (FCF_xxxx) |
| USHORT font; // - Not used in versions greater than 5.20 |
| PSZ exfile; // pre-compiled macro code file (EPM.EX) |
| PSZ *topmkr; // top and bottom of file marker |
| PSZ *botmkr; // |
| SHORT editid; // unique window id specified for edit window |
| PSZ exsearchpath; // a set of paths to search for ex's files |
| PSZ exe_path; // path where the application started |
| HINI hini; // handle to an opened ini profile |
| } EDITORINFO; |
| |
'---------------------------------------------------------------------------'
See Appendix A for a detailed description of the
EDITORINFO structure.
HWND_P (PHWND) - output
_______
Pointer to E-MLE's client window.
RETURNS
RC (USHORT) -
________
TRUE if a error occurred during E-MLE window cre-
ation.
REMARKS
This call creates a unique E-MLE window. Each
E-MLE is a complete new instance of the text editor.
Therefore, it knows little about any other E-MLE
windows that have been previously created. Each
-----------------------------------------------------------------------------
Register, Create, Delete functions (The basics) 17
E-MLE window has it's own marks, tabs, margins, and
etc.
Starting with version 5.50, the E-MLE's use GPI
fonts for text I/O. An E-MLE window can render text
in multiple font faces and sizes. (See Appendix
???????)
An application can create as many E-MLE's as system
memory will permit. Each E-MLE instance can contain
a ring a files. A RING can contain as many files as
system memory will permit.
-----------------------------------------------------------------------------
18 Programmers Guide to the E Editor Toolkit. Version 2.0
ETKDESTROY -
____________
(DESTROY A MULTI-LINE EDIT CONTROL WINDOW)
__________________________________________
-----------------------------------------------------------------------------
Close a E-MLE window.
+-------------------------------------------------------+
| ETKDESTROY (HAB, HWNDOWNER, HWNDEDIT, rc ) |
__
+-------------------------------------------------------+
PARAMETERS
HAB (HAB) - input
_____
Anchor block
HWNDOWNER (HWND) - input
______
Handle of the owner of the E-MLE window. Usually
this is the application client window.
HWNDEDIT (HWND) - input
______
E-MLE window to destroy
RETURNS
RC (USHORT) -
________
One of the following messages are returned. (These
messages are defined in EDLL.H)
o EPM_RC_DESTROYOK - E-MLE window has suc-
cessfully closed.
o EPM_RC_DESTROYTIMEOUT - the interpreter has
timed out because it was either running a very
long command, or it was executing a defexit that
had a problem.
o EPM_RC_DESTROYCANCEL - the user did not wish to
close the E-MLE window.
REMARKS
Since E is a memory based editor, the destroy func-
tion will not effect the most recent copy of the
text file on disk. The destroy function generates a
WM_DESTROY message. It is this message that actu-
ally closes the edit window. You may choose to send
this message directly instead of using the destroy
function. It is important to check the return code
when sending the E-MLE window a WM_DESTROY. If the
E-MLE window receives a destroy message, and a modi-
fied file exists in its ring, an EPM_EDIT_ASKTOCLOSE
message is sent to the application. (See
EPM_EDIT_ASKTOCLOSE message in the section "Editor
Toolkit Messages" ) This message gives the applica-
tion a chance to display a dialog box asking the
user if they want to "really close" the window.
-----------------------------------------------------------------------------
Register, Create, Delete functions (The basics) 19
ETKVERSION -
____________
(DYNALINK VERSION)
__________________
-----------------------------------------------------------------------------
Get the version of the Editor dynalink
library(ETKExxx.DLL)
+-------------------------------------------------------+
| ETKVERSION (VERSION_STR, ) |
+-------------------------------------------------------+
PARAMETERS
VERSION_STR (PSZ) - output
_____
Pointer to a buffer of memory. This will be filled
with the current dynalink version. The return string
is in the following format:
byte [1] - length of string to follow.
byte [2 - length] - Null terminated version string.
RETURNS
VOID
REMARKS
A constant, 'EVERSION', is provided in the EDLL.H
file. This constant is to be compared to the
results of the EtkVersion procedure. An example
follows:
EXAMPLE
CHAR EDLLVersion[20];
EtkVersion( EDLLVersion ); // Get Version from .DLL
vercmp=strcmp( EDLLVersion, EVERSION ); // compare version numbers
if (vercmp) {
WinMessageBox ((HWND)HWND_DESKTOP, // Display editor return code
(HWND)hwndAppFrame,
(PSZ)"Version Mismatch",
(PSZ)"Check ETKExxx.DLL version",
NULL,
MB_ICONEXCLAMATION
);
return(1);
}
-----------------------------------------------------------------------------
20 Programmers Guide to the E Editor Toolkit. Version 2.0
SPECIAL ACCESS FUNCTIONS- E-MLE MANIPULATION
____________________________________________
EVENT EXECUTION.
________________
-----------------------------------------------------------------------------
Special Access Functions- E-MLE Manipulation 21
ETKEXECUTECOMMAND -
___________________
(EXECUTE AN E -COMMAND)
_______________________
-----------------------------------------------------------------------------
This function will execute any predefined command.
+-------------------------------------------------------+
| ETKEXECUTECOMMAND (HWNDEDIT, COMMAND, rc ) |
__
+-------------------------------------------------------+
PARAMETERS
HWNDEDIT (HWND) - input
______
Window handle to the E-MLE in which the specified
command will execute.
COMMAND (PSZ) - input
_____
An asciiz command string that is defined as either
an internal command, an E macro, or a REXX macro.
RETURNS
RC (ULONG) -
_______
TRUE if action failed.
REMARKS
This is one of the more versatile commands available
in the E Toolkit. Three classes of commands can be
executed:
o Internal Commands. (examples - SAVE, L[ocate],
and C[hange]).
o Predefined E macros. (examples - ADD, DRAW, and
GET)
o REXX macros commands. (examples - RX SORT.ERX,
RX ADDMENU.ERX, RX NEW.ERX)
An example of how to use this function follows.
EXAMPLE
{
HWND hwndEdit=QueryEditHandle( );
// issue a "save" command to an E-MLE. The data is saved in
// a file called temp.tmp.
EtkExecuteCommand( hwndEdit, "SAVE temp.tmp") ;
}
-----------------------------------------------------------------------------
22 Programmers Guide to the E Editor Toolkit. Version 2.0
ETKPROCESSEDITKEY -
___________________
(EXECUTE A EDITOR ACTION)
_________________________
-----------------------------------------------------------------------------
Execute a primitive editor action.
+-------------------------------------------------------+
| ETKPROCESSEDITKEY (HWNDEDIT, KEY, rc ) |
__
+-------------------------------------------------------+
HWNDEDIT (HWND) - input
______
Window handle of the E-MLE.
KEY (USHORT) - input
________
Built in key primitives:
ADJUST_BLOCK
BACKTAB Tab to the left.
BACKTAB_WORD Tab to the left one word.
BEGIN_LINE Move the cursor to the beginning of the
line.
BOTTOM Move the cursor to the last line in the
file.
COPY_MARK Copy the current selection to the cursor
location.
DELETE_CHAR Delete the character in which the cursor
is located.
DELETE_LINE Delete the line in which the cursor is
located.
DELETE_MARK Delete the current selection.
DOWN Scroll down one line.
END_LINE Move the cursor to the end of the current
line.
ERASE_END_LINE Erase from the cursor to the end of
the line.
INSERT_LINE Insert a new line after the cursor.
INSERT_TOGGLE Toggle between insert and replace
cursor.
JOIN Join next line with the line in which the
cursor is located.
LEFT Scroll one character to the left.
MOVE_MARK Move the current selection to the cursor
location.
NEXT_FILE Go to the next file in the Ring.
OVERLAY_BLOCK Overlay the current block selection to
the cursor location.
PAGE_DOWN Scroll one page down.
PAGE_UP Scroll one page up.
PREVFILE_OP Go to the previous file in the Ring.
REFLOW Reflow the text according to the margins
settings.
REPEAT_FIND Repeat the last find.
RIGHT Scroll right one character.
-----------------------------------------------------------------------------
Special Access Functions- E-MLE Manipulation 23
RUBOUT Move cursor to the left and delete char-
acter.
SHIFT_LEFT Shift the selected text one character to
the left.
SHIFT_RIGHT Shift the selected text one character to
the right.
SPLIT Split the current line at the cursor.
TAB Move cursor to the next tab position.
TAB_WORD Tab to the right one word.
TOP Move the cursor to the first line in the
file.
UNDO_LINE Return the current line to its original
state.
UNMARK Clear the current selection.
UP Scroll up one line.
REMARKS
EXAMPLE
-----------------------------------------------------------------------------
24 Programmers Guide to the E Editor Toolkit. Version 2.0
TEXT MANIPULATION
_________________
-----------------------------------------------------------------------------
Special Access Functions- E-MLE Manipulation 25
ETKQUERYTEXT -
______________
(RETRIEVE A LINE)
_________________
-----------------------------------------------------------------------------
Retrieve a line of text and its associated attri-
butes.
+-------------------------------------------------------+
| ETKQUERYTEXT (HWNDEDIT, FILEID, LINENUM, TEXT, ATTRS, |
| ALATTR, rc ) |
__
+-------------------------------------------------------+
PARAMETERS
HWNDEDIT (HWND) - input
______
Window handle to the E-MLE that will contain the
selected text.
FILEID (ULONG) - input
_______
the fileid of the file containing the specified
line. If 0 is specified, the line will be retrieved
from the visible file.
LINENUM (ULONG) - input
_______
line number of interest.
TEXT (PSZ *) - output
_______
Returns an indirect pointer to the text found on the
specified line.
ATTRS (PVOID) - output
_______
returns a pointer to an attribute structure that
describes the attributes (i.e. font, color) associ-
ated with that line.
ALATTRS (PVOID) - output
_______
returns a pointer to an attribute structure that
describes the attributes (i.e. font, color) associ-
ated with that line.
RETURNS
RC (ULONG) -
_______
TRUE if action failed.
REMARKS
****************************************************************************
*** TODO - Need a section on how to interpret the attribute structures ***
****************************************************************************
EXAMPLE
-----------------------------------------------------------------------------
26 Programmers Guide to the E Editor Toolkit. Version 2.0
ETKDELETETEXT -
_______________
(DELETE TEXT)
_____________
-----------------------------------------------------------------------------
Delete an area of text.
+-------------------------------------------------------+
| (HWNDEDIT, FILEID, STARTLINE, NUMBER_OFLINES, rc ) |
__
+-------------------------------------------------------+
PARAMETERS
HWNDEDIT (HWND) - input
______
Window handle to the E-MLE.
FILEID (ULONG) - input
_______
the fileid of the file containing the specified
line. If filid=0 is specified, the line will be
retrieved from the visible file.
STARTLINE (ULONG) - input
_______
starting line number
NUM_OF_LINES (ULONG) - input
_______
number of lines to delete. If (-1L) then lines are
deleted from the start line through the last line in
the file.
RETURNS
RC (ULONG) -
_______
TRUE if action failed.
REMARKS
EXAMPLE
-----------------------------------------------------------------------------
Special Access Functions- E-MLE Manipulation 27
ETKREPLACETEXT -
________________
(REPLACE A LINE)
________________
-----------------------------------------------------------------------------
Replace a line with a new single attributed string
+-------------------------------------------------------+
| ETKREPLACETEXT (HWNDEDIT, FILEID, LINENUM, |
| ATTRSTRING, rc ) |
__
+-------------------------------------------------------+
PARAMETERS
HWNDEDIT (HWND) - input
______
Window handle to the E-MLE that will contain the
selected text.
FILEID (ULONG) - input
_______
the fileid of the file containing the specified
line. If 0 is specified, the line will be retrieved
from the visible file.
LINENUM (ULONG) - input
_______
starting line number
ATTRS (PVOID) - input
_______
a pointer to an attribute structure that describes
the attributes (i.e. font, color) associated with
that line.
RETURNS
RC (ULONG) -
_______
TRUE if action failed.
REMARKS
****************************************************************************
*** TODO - Need a section on how to interpret the attribute structures ***
****************************************************************************
EXAMPLE
-----------------------------------------------------------------------------
28 Programmers Guide to the E Editor Toolkit. Version 2.0
ETKINSERTTEXT -
_______________
(ADD A LINE)
____________
-----------------------------------------------------------------------------
Insert a single attributed string
+-------------------------------------------------------+
| ETKINSERTTEXT (HWNDEDIT, FILEID, LINENUM, ATTRSTRING, |
| rc ) |
__
+-------------------------------------------------------+
PARAMETERS
HWNDEDIT (HWND) - input
______
Window handle to the E-MLE that will contain the
selected text.
FILEID (ULONG) - input
_______
the fileid of the file containing the specified
line. If 0 is specified, the line will be retrieved
from the visible file.
LINENUM (ULONG) - input
_______
starting line number
ATTRS (PVOID) - input
_______
A pointer to an attribute structure that describes
the attributes. (i.e. font, color) associated with
that line.
RETURNS
RC (ULONG) -
_______
TRUE if action failed.
REMARKS
****************************************************************************
*** TODO - Need a section on how to interpret the attribute structures ***
****************************************************************************
EXAMPLE
-----------------------------------------------------------------------------
Special Access Functions- E-MLE Manipulation 29
ETKQUERYTEXTBUFFER -
____________________
(QUERY TEXT BUFFER)
___________________
-----------------------------------------------------------------------------
Retrieve a stream of text within a specified line
range.
+-------------------------------------------------------+
| ETKQUERYTEXTBUFFER (HWNDEDIT, STARTLINE, LASTLINE, |
| TOTALLEN, BUFFER, characters ) |
__________
+-------------------------------------------------------+
PARAMETERS
HWNDEDIT (HWND) - input
______
Window handle of the E-MLE.
STARTLINE (ULONG) - input
_______
First line in text range.
LASTLINE (ULONG) - input
_______
Last Line in range.
TOTALLEN (ULONG) - input
_______
Size of buffer
BUFFER (PSZ) - output
_____
Buffer where text stream will be returned.
RETURNS
CHARACTERS (ULONG) -
_______
The number of characters in the buffer is returned.
If 0 is returned, it is likely that a problem
occured. (Most likely an invalid line number)
REMARKS
If startline and lastline are zero (0), the entire
file will be returned.
The Buffer contains a stream of characters where
each line ends in CR-LF.
-----------------------------------------------------------------------------
30 Programmers Guide to the E Editor Toolkit. Version 2.0
ETKINSERTTEXTBUFFER -
_____________________
(INSERT TEXT BUFFER)
____________________
-----------------------------------------------------------------------------
Enter a stream of text starting at a specified
point.
+-------------------------------------------------------+
| ETKINSERTTEXTBUFFER (HWNDEDIT, STARTLINE, TOTALLEN, |
| TEXT, lines ) |
_____
+-------------------------------------------------------+
PARAMETERS
HWNDEDIT (HWND) - input
______
Window handle of the E-MLE.
STARTLINE (ULONG) - input
_______
Insert starting at this line.
TOTALLEN (ULONG) - input
_______
Size of buffer
TEXT (PSZ) - input
_____
Text stream to insert.
RETURNS
LINES (ULONG) -
_______
The number of lines inserted in to the E-MLE. If 0
is returned, it is likely that a problem occured.
(Most likely an invalid line number)
REMARKS
If startline is zero (0), the Text is inserted at
the current cursor position.
The Text buffer should contain a stream of charac-
ters where each line ends in CR-LF.
EXAMPLE
{
UCHAR string[512],
strcpy(string, "1: This is a test\r\n2: This is line 2\r\n");
EtkInsertTextBuffer( hwndEdit, 1, strlen(string), string);
}
-----------------------------------------------------------------------------
Special Access Functions- E-MLE Manipulation 31
ETKFINDATTRIBUTE. -
___________________
(RETRIEVE A LINE ATTRIBUTE)
___________________________
-----------------------------------------------------------------------------
Search for an attribute associated with a line.
+-------------------------------------------------------+
| ETKFINDATTRIBUTE (HWNDEDIT, FILEID, LINENUM, COLUMN, |
| COLUMNOFFSET, ATTRIBUTE, PFOUND, rc ) |
__
+-------------------------------------------------------+
PARAMETERS
HWNDEDIT (HWND) - input
______
Window handle to the E-MLE that will contain the
selected text.
FILEID (ULONG) - input
_______
the fileid of the file containing the specified
line. If 0 is specified, the line will be retrieved
from the visible file.
LINENUM (ULONG) - input
_______
starting line number
COLUMN (USHORT) - input
________
starting column
COLUMNOFFSET (USHORT) - input
________
Column Offset.
ATTRS (PVOID) - input
_______
A pointer to an attribute structure that describes
the attributes (i.e. font, color) associated with
that line.
PFOUND (BOOLEAN *) - output
___________
found flag.
RETURNS
RC (ULONG) -
_______
TRUE if action failed.
REMARKS
****************************************************************************
*** TODO - Need a section on how to interpret the attribute structures ***
****************************************************************************
EXAMPLE
-----------------------------------------------------------------------------
32 Programmers Guide to the E Editor Toolkit. Version 2.0
TEXT SELECTION.
_______________
-----------------------------------------------------------------------------
Special Access Functions- E-MLE Manipulation 33
ETKQUERYSELECTIONTYPE -
_______________________
(QUERY CURRENT SELECTION TYPE)
______________________________
-----------------------------------------------------------------------------
Returns the current selection type. The E Toolkit
supports three types of text selection. Character,
Line, and Block.
+-------------------------------------------------------+
| ETKQUERYSELECTIONTYPE (HWNDEDIT, MARKTYPE, rc ) |
__
+-------------------------------------------------------+
PARAMETERS
HWNDEDIT (HWND) - input
______
Window handle of the E-MLE.
MARKTYPE (PUSHORT) - output
_________
The E Toolkit will fill this value with a constant
that represents the type of mark contained in the
visible file.
#define LINEMARK 0
#define CHARMARK 1
#define BLOCKMARK 2
#define CHARMARKG 3
#define BLOCKMARKG 4
#define NOMARK -1
RETURNS
RC (USHORT) -
________
TRUE if action failed.
REMARKS
EXAMPLE
{
HWND hwndEdit=QueryEditHandle( );
USHORT marktype;
UCHAR outmsg[MAXSTR];
strcpy( outmsg, "Your file contains ");
EtkQuerySelectionType( hwndEdit, &marktype);
switch (marktype) {
case LINEMARK: strcat( outmsg, "a Line Mark"); break;
case CHARMARK: strcat( outmsg, "a Character Mark"); break;
case CHARMARKG: strcat( outmsg, "a Special Character Mark");break;
case BLOCKMARK: strcat( outmsg, "a Block Mark"); break;
case BLOCKMARKG: strcat( outmsg, "a Special Block Mark"); break;
default:
strcat( outmsg, "no mark.");
break;
}
}
-----------------------------------------------------------------------------
34 Programmers Guide to the E Editor Toolkit. Version 2.0
ETKQUERYSELECTION -
___________________
(SELECTION LOCATION)
____________________
-----------------------------------------------------------------------------
Returns the coordinates of the selected text area.
+-------------------------------------------------------+
| ETKQUERYSELECTION (HWNDEDIT, FIRSTLINE, LASTLINE, |
| FIRSTCOL, LASTCOL, MARKFILEID, RESPECTATTRIBUTES, |
| RELATIVE2FILE, rc ) |
__
+-------------------------------------------------------+
PARAMETERS
HWNDEDIT (HWND) - input
______
Window handle of the E-MLE that contains selected
text.
FIRSTLINE, LASTLINE (PULONG) - output
________
returns the first and last lines in the selected
area.
FIRSTCOL, LASTCOL (PUSHORT) - output
_________
returns the first and last columns in the selected
area.
MARKFILEID (PULONG) - output
________
returns the fileid of the file containing the
selected text.
RESPECTATTRIBUTES (PUSHORT) - output
_________
If TRUE, Font and color attribute information will
be taken into consideration.
RELATIVE2FILE (PUSHORT) - output
_________
Should always be set to TRUE.
RETURNS
RC (USHORT) -
________
TRUE if action failed.
REMARKS
EXAMPLE
-----------------------------------------------------------------------------
Special Access Functions- E-MLE Manipulation 35
{
ULONG firstline, lastline;
USHORT firstcol, lastcol;
LONG markfileid;
SHORT marktype;
USHORT respectattributes=FALSE, relative2file=TRUE;
EtkQuerySelectionType( hwndEdit, &marktype);
if (marktype!=NOMARK) {
EtkQuerySelection(QueryActiveEdit(),
&firstline, &lastline,
&firstcol, &lastcol,
&markfileid,
respectattributes, relative2file);
}
}
-----------------------------------------------------------------------------
36 Programmers Guide to the E Editor Toolkit. Version 2.0
ETKSETSELECTION -
_________________
(SELECT TEXT)
_____________
-----------------------------------------------------------------------------
Specifiy the type of selection along with the area
of text to be selected.
+-------------------------------------------------------+
| ETKSETSELECTION (HWNDEDIT, FIRSTLINE, LASTLINE, |
| FIRSTCOL, LASTCOL, FIRSTOFF, LASTOFF, MARKTYPE, |
| FILEID, rc ) |
__
+-------------------------------------------------------+
PARAMETERS
HWNDEDIT (HWND) - input
______
Window handle to the E-MLE that will contain the
selected text.
FIRSTLINE, LASTLINE (ULONG) - input
_______
The first and last lines in the selected area.
FIRSTCOL, LASTCOL (USHORT) - input
________
The first and last columns in the selected area.
FIRSTOFF, LASTOFF (USHORT) - input
________
The attribute offset associated with the first and
last column. (If color or font attributes are not
being used, set to 0)
MARKTYPE (USHORT) - input
________
#define LINEMARK 0
#define CHARMARK 1
#define BLOCKMARK 2
#define CHARMARKG 3
#define BLOCKMARKG 4
#define NOMARK -1
MARKFILEID (USHORT) - input
________
the fileid of the file containing the selected text.
If -1 is specified, the text will be selected in the
visible file.
RETURNS
RC (USHORT) -
________
TRUE if action failed.
REMARKS
EXAMPLE
-----------------------------------------------------------------------------
Special Access Functions- E-MLE Manipulation 37
{
ULONG firstline, lastline;
USHORT firstcol, lastcol;
LONG markfileid;
SHORT marktype;
USHORT respectattributes=FALSE, relative2file=TRUE;
EtkQuerySelectionType( hwndEdit, &marktype);
if (marktype!=NOMARK) {
HWND hwndEdit=QueryActiveEdit();
EtkQuerySelection(hwndEdit,
&firstline, &lastline,
&firstcol, &lastcol,
&markfileid,
respectattributes, relative2file);
// extend the mark one line.
EtkSetSelection(hwndEdit,
firstline, lastline+1,
firstcol, lastcol, 0, 0,
marktype,
markfileid);
}
}
-----------------------------------------------------------------------------
38 Programmers Guide to the E Editor Toolkit. Version 2.0
FILE INFORMATION
________________
-----------------------------------------------------------------------------
Special Access Functions- E-MLE Manipulation 39
ETKQUERYFILEID -
________________
(QUERY A FILES IDENTIFIER)
__________________________
-----------------------------------------------------------------------------
Retrieve the visible files file identifier.
+-------------------------------------------------------+
| ETKQUERYFILEID (HWNDEDIT, FILEID, rc ) |
__
+-------------------------------------------------------+
PARAMETERS
HWNDEDIT (HWND) - input
______
Window handle to the E-MLE that will contain the
selected text.
FILEID (PUSHORT) - input
_________
returns the fileid of the visible file.
RETURNS
RC (USHORT) -
________
TRUE if action failed.
REMARKS
The file identifier is an constant that is used by
certian functions to identify a particular file in
an E-MLE window Ring.
EXAMPLE
-----------------------------------------------------------------------------
40 Programmers Guide to the E Editor Toolkit. Version 2.0
ETKSETFILEFIELD -
_________________
SET SOME FILE CHARACTERISTIC
____________________________
-----------------------------------------------------------------------------
Set information pertaining to some aspect of a file.
(i.e. Margin, Name, etc)
+-------------------------------------------------------+
| ETKSETFILEFIELD (HWNDEDIT, FIELD, FILEID, INDATA, rc |
__
| ) |
+-------------------------------------------------------+
PARAMETERS
HWNDEDIT (HWND) - input
______
Window handle of the E-MLE.
FIELD. (ULONG) - input
_______
SEE APPENDIX A1 FOR FIELD CONSTANTS AND VALUES
EXPECTED BY EACH FIELD.
FILEID (ULONG) - input
_______
the fileid
INDATA (PVOID) - input
_______
The input data varies depending on the field being
set. SEE APPENDIX A-1 FOR FIELD CONSTANTS AND
VALUES EXPECTED BY EACH FIELD.
RETURNS
RC (USHORT) -
________
TRUE if action failed.
REMARKS
EXAMPLE
{
UCHAR s[MAXSTR];
ULONG Browse;
Browse = 0L; // turn OFF browse mode - the file can now be modified.
EtkSetFileField(hwndMLE,(ULONG)READONLY_FIELD,(ULONG)0,(PVOID)Browse);
// Insert a stream of text...
strcpy( s,"Hello World\r\nAnother Line\r\nAnd another...");
EtkInsertTextBuffer( hwndMLE, 1, strlen(s), s);
Browse = 1L; // turn ON browse mode - the file is now read only!
EtkSetFileField(hwndMLE,(ULONG)READONLY_FIELD,(ULONG)0,(PVOID)Browse);
}
-----------------------------------------------------------------------------
Special Access Functions- E-MLE Manipulation 41
ETKQUERYFILEFIELD -
___________________
(QUERY SOME FILE CHARACTERISTIC)
________________________________
-----------------------------------------------------------------------------
Query information pertaining to some aspect of a
file. (i.e. Margin, Name, etc)
+-------------------------------------------------------+
| ETKQUERYFILEFIELD (HWNDEDIT, FIELD, FILEID, |
| RETURNDATA, rc ) |
__
+-------------------------------------------------------+
PARAMETERS
HWNDEDIT (HWND) - input
______
Window handle of the E-MLE.
FIELD. (ULONG) - input
_______
SEE APPENDIX A1 FOR FIELD CONSTANTS AND VALUES
EXPECTED BY EACH FIELD.
FILEID (ULONG) - input
_______
the fileid
RETURNDATA (PVOID) - output
_______
data returned. This data varies depending on the
field being queried. SEE APPENDIX A1 FOR FIELD CON-
STANTS AND VALUES EXPECTED BY EACH FIELD.
RETURNS
RC (USHORT) -
________
TRUE if action failed.
REMARKS
EXAMPLE
{
ULONG numlines;
// query the number of lines in a given file.
EtkQueryFileField(hwndMLE,(ULONG)LAST_FIELD,(ULONG)0,(PVOID)&numlines);
}
-----------------------------------------------------------------------------
42 Programmers Guide to the E Editor Toolkit. Version 2.0
-----------------------------------------------------------------------------
Special Access Functions- E-MLE Manipulation 43
-----------------------------------------------------------------------------
44 Programmers Guide to the E Editor Toolkit. Version 2.0
E TOOLKIT MESSAGES
__________________
Purpose The following messages are used to interact
with an edit window object.
Remarks
The numbering of the following messages are: (using
C and PM standards)
-----------------------------------------------------------------------------
E Toolkit Messages 45
EPM_BROADCASTHELP
EPM_EDIT_OPTION
EPM_EDIT_PLAYKEY
EPM_EDIT_ACTIVATEFILEID
EPM_EDIT_POSTDONE
EPM_EDIT_ACTIVEHWND
EPM_EDIT_ASKTOCLOSE
EPM_EDIT_ASKTODONE
EPM_EDIT_ASKTOFAILED
EPM_EDIT_QUERYRECORDKEY
EPM_EDIT_ASKTOQUIT
EPM_EDIT_QUERY_HELP_INSTANCE
EPM_EDIT_CHANGEFONT * (to be implemented for 5.50)
EPM_EDIT_RECORDKEY
EPM_EDIT_CHAR
EPM_EDIT_RETCODE
EPM_EDIT_CLIPBOARDCOPY
EPM_EDIT_SAYERROR
EPM_EDIT_CLIPBOARDPASTE
EPM_EDIT_COMMAND
EPM_EDIT_SHOW
EPM_EDIT_COMMAND2
EPM_EDIT_TURN_OFF_HIGHLIGHT
EPM_EDIT_CONTROLTOGGLE * ( need access to CONTROL constants.)
EPM_EDIT_CURSORMOVE
EPM_EDIT_VERSION
EPM_EDIT_WIN2DOC * (Jason needs to document this one.)
EPM_EDIT_DESTROYNOTIFY
EPM_EDIT_DESTROYRC
EPM_EXTRAWINDOW_REFRESH
EPM_EDIT_DOC2WIN * (Jason needs to document this one.)
EPM_FRAME_MESSAGELINE
EPM_FRAME_STATUSLINE
EPM_EDIT_ENDRECORDKEY
EPM_EDIT_TASKLIST
------------- TODO ----------------
EPM_EDIT_EXEC_DYNALINK * (GAC has to document this one.)
EPM_GET_ERROR_MESSAGE
EPM_EDIT_EXEC_PROC
EPM_IS_HELP_LOADED
EPM_EDIT_GETMEM
EPM_PRINT_RENDERPAGE
EPM_EDIT_GETPROFILE
EPM_PRINT_RENDERPAGERC
EPM_EDIT_HELPNOTIFY
EPM_QHELP_TABLE
EPM_EDIT_ID
EPM_QUERY_GLOBDATA
EPM_EDIT_MINMAXFRAME
EPM_SEND_MACROS_ERRORS
EPM_EDIT_NEWFILE
-----------------------------------
-----------------------------------------------------------------------------
46 Programmers Guide to the E Editor Toolkit. Version 2.0
Note: Editor messages are either SEND messages or
____
RECEIVE messages. The SEND messages are sent from
_______ ____
your application to the edit window. The RECEIVE
_______
messages are sent by an edit window to the regis-
tered owner's window procedure.
-----------------------------------------------------------------------------
E Toolkit Messages 47
EPM_FRAME_STATUSLINE
____________________
----------------------------------------------
(UPDATE STATUS LINE) - SENT TO AN E-MLE WINDOW
Purpose Updates the status line's template and
color.
Message Parameter 1
STATUS_TEMPLATE (PSZ) Status temple string to be
________________
filled in by status line. (See Remarks for
status_template format)
Message Parameter 2
STATUSLINE_COLOR( USHORT)
________________
(LOCHAR)foreground color
(HICHAR)background color
Return
NULL
Remarks: If a color is not specified, then the
current color is used. The pointer passed in
_______________________
Message Parameter 1 IS FREED by this message. It
________________________________________________
must be allocated using DosAllocSeg, because it is
freed using DosFreeSeg.
The following tags are supported in the status tem-
plate:
%L current line number.
%C current column number.
%F files in E-MLE Ring.
%M displays "Modified" if visible file is
modified.
%I Displays "Insert" or "Replace"
%Z - %X Displays character at cursor is ascii(%z)
or in hex(%x).
%S Total number of lines in file.
%A Autosave value.
-----------------------------------------------------------------------------
48 Programmers Guide to the E Editor Toolkit. Version 2.0
For example, if the following template string was
passed:
Line=%l Column=%C Mode=%i, The Ring contains %f
The status line would display:
Line=1290 Column=72 Mode=Insert, The Ring contains 2 Files.
-----------------------------------------------------------------------------
E Toolkit Messages 49
EPM_FRAME_MESSAGELINE
_____________________
-----------------------------------------------
(UPDATE MESSAGE LINE) - SENT TO AN E-MLE WINDOW
Purpose Updates the message line's text and color.
Message Parameter 1
MESSAGE (PSZ) string to appear on message line
________
Message Parameter 2
MESSAGELINE COLOR( USHORT)
_________________
(LOCHAR)foreground color
(HICHAR)background color
Return
NULL
Remarks: If a color is not specified, then the
current color is used. The pointer passed in
________________________
Message Parameter 1 IS FREED by this message. It
________________________________________________
must be allocated using DosAllocSeg, because it is
freed using DosFreeSeg.
-----------------------------------------------------------------------------
50 Programmers Guide to the E Editor Toolkit. Version 2.0
EPM_EDIT_VERSION
________________
-----------------------------------------
(E-MLE VERSION) - SENT TO AN E-MLE WINDOW
Purpose Return the E-Toolkit version number.
Message Parameter 1
NOT USED (LONG)
_________
Message Parameter 2
NOT USED()
________
Return
NULL
Remarks:
-----------------------------------------------------------------------------
E Toolkit Messages 51
EPM_EDIT_TURN_OFF_HIGHLIGHT
___________________________
----------------------------------------------
(TURN OFF HIGHLIGHT) - SENT TO AN E-MLE WINDOW
Purpose Clear text circled by the CIRCLEIT macro.
Message Parameter 1
NOT USED (LONG)
_________
Message Parameter 2
NOT USED()
________
Return
NULL
Remarks:
-----------------------------------------------------------------------------
52 Programmers Guide to the E Editor Toolkit. Version 2.0
EPM_EDIT_QUERY_HELP_INSTANCE
____________________________
-------------------------------------------------
(QUERY HELP INSTANCE) - SENT FROM AN E-MLE WINDOW
Purpose The following is a request from the etoolkit
for the handle of the help instance
Message Parameter 1
NOT USED (LONG)
_________
Message Parameter 2
NOT USED()
________
Return
NULL
Remarks: This is how EPM.EXE handles this messages.
case EPM_EDIT_QUERY_HELP_INSTANCE:
if(!GlobData->hwndHelpInstance) {
GlobData->hwndHelpInstance = WinCreateHelpInstance(GlobData->hAB,&GlobData->hmiHelpData);
}
return(GlobData->hwndHelpInstance);
break;
-----------------------------------------------------------------------------
E Toolkit Messages 53
EPM_BROADCASTHELP
_________________
----------------------------------
(BROADCAST HELP) - SENT FROM E-MLE
Purpose EPM_BROADCASTHELP is sent a E-MLE applica-
tion when the help instance has been initialized.
To insure that all existing edit windows add their
helpsub tables to the help instance EPM_QHELP_TABLE
is broadcasted to all edit windows on the desktop
informing them that help has been loaded. If no
edit windows are running then
EPM_EDIT_QUERY_HELP_INSTANCE is issued to the shell
in order to create the help instance.
Message Parameter 1
NOT USED (LONG)
_________
Message Parameter 2
NOT USED()
________
Return
NULL
Remarks: This is how EPM.EXE handles this messages.
case EPM_BROADCASTHELP:
{
USHORT rc;
rc=ERESBroadcastMsgToEditWindows(GlobData, EPM_QHELP_TABLE, 0L,0L);
if(!rc) {
WinSendMsg(GlobData->eres.hwndAppClient,
EPM_EDIT_QUERY_HELP_INSTANCE, 0L, 0L);
}
}
break;
-----------------------------------------------------------------------------
54 Programmers Guide to the E Editor Toolkit. Version 2.0
EPM_EDIT_DELETEFILE
___________________
-----------------------
(DELETE FILE FROM DISK)
Purpose Delete the file specified in mp1 from disk
and free pointer
Message Parameter 1
FILENAME(PSZ) Fully qualified file name.
________
Message Parameter 2
NOT USED()
________
Return
NULL
Remarks
:
-----------------------------------------------------------------------------
E Toolkit Messages 55
EPM_EDIT_ACTIVATEFILEID
_______________________
-----------------
(ACTIVATE A FILE)
Purpose Activate a file corresponding to the speci-
fied file identifier.
Message Parameter 1
FILEID (LONG) A file identifier that could be
_______
obtained using the EtkQueryFileID function.
Message Parameter 2
NOT USED()
________
Return
NULL
Remarks:
-----------------------------------------------------------------------------
56 Programmers Guide to the E Editor Toolkit. Version 2.0
EPM_EDIT_CHAR
_____________
-------------------------
(ISSUE A WM_CHAR MESSAGE)
Purpose An alternitive to the WM_CHAR message. It
is handled exactly in the same manner as WM_CHAR.
Message Parameter 1
MP1(MPARAM) See WM_CHAR in the PM Tech. Ref.
___
Message Parameter 2
MP2(MPARAM) See WM_CHAR in the PM Tech. Ref.
___
Return
Remarks:
-----------------------------------------------------------------------------
E Toolkit Messages 57
EPM_EDIT_CLIPBOARDCOPY
______________________
-----------------------------------
(INSERT TEXT INTO THE PM CLIPBOARD)
Purpose Fast path to inserting text into the PM
Clipboard.
Message Parameter 1
PTEXTBUF(PVOID) Pointer to a memory buffer con-
________
taining text to copy to the clipboard. The text is
in a format described by mp2.
Message Parameter 2
MP2() Flag that describes what format of the memory
___
buffer, which was passed in mp1.
0 = CF_TEXT type buffer, terminated by nul
1 = EPM shared memory buffer (32byte head)
Return
Remarks: When the contents of mp1 is copied to the
clipboard a EPM defc event is called by the name of
PROCESSCLIPBOARDCOPY. Arg(1) of this function is the
original buffer passed in as mp1. The caller may
choose to free the buffer during this command. If
zero is passed as arg(1), an error was encountered.
An error message should be displayed at this point.
-----------------------------------------------------------------------------
58 Programmers Guide to the E Editor Toolkit. Version 2.0
EPM_EDIT_COMMAND
________________
--------------------------------
(EDITOR COMMAND MESSAGE - E-MLE)
Purpose Issue a command to the E-MLE
Message Parameter 1
EDIT COMMAND (PSZ) Any legal editor command. (See
_______________
Appendix B for a complete list of commands)
Message Parameter 2
COMMAND FLAGS(USHORT) The following command flags
_____________
can be set with the EPM_EDIT_COMMAND message:
o COMMAND_SYNC - the command is sent to the
edit interpreter thread and is executed imme-
diately or after the last command.
o COMMAND_FREESEL - free the selector of parameter
one when done.
o COMMAND_GETABLE - the selector in parameter one
is a getable shared segment.
Returns
void
Remarks This message is the main source of communi-
cation to editor windows. To send a message to a
specific file, send any legal editor command (in
string form) to the associated edit window handle.
Legal editor commands consist of any of the base
editor commands or any user defined commands. User
commands can be created within the editor macro lan-
guage via DEFC's.
For command return codes see the EPM_EDIT_RETCODE
________________
message.
See Appendix B for a complete list of commands
By default all commands sent or posted to edit
windows are copied and posted to the editor inter-
-----------------------------------------------------------------------------
E Toolkit Messages 59
preter thread. By setting the COMMAND_SYNC flag the
command is sent to the editor interpreter, therefore
it will be executed immediately or after the last
command is finished executing.
When an application other then the one that created
an edit window wishes to send a command to an edit
window, that application must allocate a shared
segment for the command string (parameter one). The
COMMAND_GETABLE flag notifies the E Toolkit that the
pointer in parameter one is that of a getable shared
segment.
When an application wants the selector sent in
parameter one to be freed after it is used by the E
Toolkit, the COMMAND_FREESEL flag must be set. This
flag is only valid for selectors allocated within
the application that created the edit window. A
selector of a getable shared segment can't be freed
by the E Toolkit with this message.
-----------------------------------------------------------------------------
60 Programmers Guide to the E Editor Toolkit. Version 2.0
EPM_EDIT_COMMAND2
_________________
-------------------------------------------
(EXECUTE COMMAND) - SENT TO AN E-MLE WINDOW
Purpose Same as EPM_EDIT_COMMAND, but if the command
does not exist, no error message is generated.
Message Parameter 1
See EPM_EDIT_COMMAND
Message Parameter 2
See EPM_EDIT_COMMAND
Return
See EPM_EDIT_COMMAND
Remarks
-----------------------------------------------------------------------------
E Toolkit Messages 61
EPM_EDIT_CHANGEFONT
___________________
---------------------
(CHANGE E-MLE'S FONT)
Purpose Change E-MLE's base font.
Message Parameter 1
NAME(PSZ)
____
Font Face Name.
Message Parameter 2
SIZE(USHORT)
____
Point Size.
STYLE(USHORT)
_____
Attribute Style.
Remarks
-----------------------------------------------------------------------------
62 Programmers Guide to the E Editor Toolkit. Version 2.0
EPM_EDIT_TASKLIST
_________________
--------------------------
(SHOW/HIDE TASK LIST ENTY)
Purpose This message can either show or hide a task
list entry corresponding to an E-MLE window. It
also allows an application to set a prefix string
before the task list entry, which typically contains
the name of the visible file.
Message Parameter 1
FLAG(LOUSHORT)
____
Show task list entry flag
TRUE=Show entry
FALSE = Hide entry
Message Parameter 2
PREFIX_STRING(PSZ)
_____________
String to be pre-pended to the task list entry
Remarks This message can be either sent of posted,
however, if this message is posted, the application
is responsible for freeing the string.
-----------------------------------------------------------------------------
E Toolkit Messages 63
EPM_EDIT_RETCODE
________________
------------------------------------
(EDITOR COMMAND MESSAGE RETURN CODE)
Purpose Send to the registered owner in response to
a edit command.
Message Parameter 1
RETURN STRING (PSZ)
______________
Text describing the return code.
Message Parameter 2
RETURN CODE (USHORT)
____________
specific editor return code.
Remarks
Sent to owner registered in the Editor Information
structure. (See Appendix A for more details on the
Edit Information structure.) This message is in
response to a internal editor return code/ error
code.
See Appendix C for editor return codes.
-----------------------------------------------------------------------------
64 Programmers Guide to the E Editor Toolkit. Version 2.0
EPM_EDIT_CURSORMOVE
___________________
---------------------
(EDITOR CURSOR MOVED)
Purpose The cursor has changed position in the edit
window.
Message Parameter 1
ROW (ULONG)
____
row of cursor in file
Message Parameter 2
COLUMN (ULONG)
_______
column of cursor in file
Remarks
Sent to owner registered in the Editor Information
structure. (See Appendix A for more details on the
Edit Information structure.) This message gives the
owner the capability to track the editor's cursor.
-----------------------------------------------------------------------------
E Toolkit Messages 65
EPM_EDIT_ACTIVEHWND
___________________
-----------------------
(EDITOR RECEIVED FOCUS)
Purpose Notify application that a specific edit
window has become active.
Message Parameter 1
EDIT WINDOW HANDLE (HWND)
___________________
Handle of active edit window.
Message Parameter 2
ACTIVE FILE NAME (PSZ)
_________________
Full path of top most file being edited in active
edit window.
Remarks
Processing this message is useful if more than one
edit window is being used by a given application.
The application does not need to keep global infor-
mation on each edit window because it is returned
via this message.
-----------------------------------------------------------------------------
66 Programmers Guide to the E Editor Toolkit. Version 2.0
EPM_EDIT_OPTIONS
________________
-----------------------------------------------
(GET EDITOR OPTION INFORMATION) - SENT TO E-MLE
Purpose Get a specified piece of editor information.
Message Parameter 1
OPTION NUMBER (LONG)
______________
OPTIONS_xxxxx constant. (See Remarks.)
Message Parameter 2
[BUFFER](PVOID)
________
Used by some options.
Return The returned value depends on the option
selected.
Constant that specifies one of the following
options:
OPTIONS_MARGINS Returns 4 bytes containing (lo to
hi): left marg (CHAR), right marg (CHAR),
paragraph margin (CHAR), 0 (CHAR).
OPTIONS_LINE Returns line of file that contains the
cursor. (ULONG)
OPTIONS_COLUMN Returns column of file that contains
the cursor. (ULONG)
OPTIONS_INSERT Returns TRUE if cursor is in insert
mode. (ULONG)
OPTIONS_AUTOSAVE Returns the number of changes
before autosave. (ULONG)
OPTIONS_NTABS Returns the number of tab stops.
(ULONG)
-----------------------------------------------------------------------------
E Toolkit Messages 67
OPTIONS_NROWS Returns the total number of rows
visible in the E-MLE. (uses the default
font height as a measument.)
OPTIONS_NCOLS Returns the total number of columns
visible in the E-MLE. (uses the default
font width as a measument.) (ULONG)
OPTIONS_MODIFY Returns TRUE if the file has been
modified. (last save) (ULONG)
OPTIONS_TAB Returns a pointer to a byte-table of tab
values. The table is terminated by a NULL
character. (PBYTE)
OPTIONS_SEARCH Returns the last string searched by
locate or change. (PSZ)
OPTIONS_GETTEXT Returns the line of text specified
by high word of option parameter. If high
word is NULL the the line in which the
cursor is currently on is returned.
Parameter 2 must contain a pointer to a
255 byte character array. The specified
line will be placed into this buffer.
(PSZ)
OPTIONS_NAME Returns the name of the visible file.
OPTIONS_HWNDEXTRA Returns the handle to the extra
area window. (HWND)
OPTIONS_HWNDEIOBJECT Returns the handle to the EI
Work Thread. (PVOID)
OPTIONS_TEXTCOLOR Returns the text Foreground
(LOUSHORT) and Background (HIUSHORT).
OPTIONS_RING Returns a buffer filled with the name
of the files within the E-MLE ring. The
buffer has the following format:
USHORT - length of filenames
UCHAR - delimitor
ULONG - fileid
CHAR[] - delimited string
OPTIONS_FILEID Returns the File ID of the visible
file.
OPTIONS_QSELECTION Returns the type of selection.
This message is send to a edit window to get a spec-
ified option. All options are returned in the form
-----------------------------------------------------------------------------
68 Programmers Guide to the E Editor Toolkit. Version 2.0
of a 4 byte return code. Here is an example of
using the Option message to get the total numbers of
visible lines in a edit window.
VisibleLines = (ULONG)WinSendMsg( hwndEditWindow,
EPM_EDIT_OPTIONS,
OPTIONS_NROWS,
0L
);
-----------------------------------------------------------------------------
E Toolkit Messages 69
EPM_EDIT_ID
___________
----------------------
QUERY EDITOR ID NUMBER
Purpose Determine if a window handle is your E-MLE
window.
Message Parameter 1
NULL
____
not used
Message Parameter 2
NULL
____
not used
Remarks
This message is used to determine if a window handle
is a edit window handle. This message returns a
4byte return code. The way to determine if the
specified handle is a edit window is by checking if
the Hi-order word contains the value of EPM_EDIT_ID
and the Lo-order word contains the value specified
in the create structure field, 'editid'. If a match
is found in the Hi-order word then the window handle
is a edit window. If a match is found in both the
Hi-order word and the Lo-order word, then the window
handle is a edit window created by your application.
An example follows:
result = WinSendMsg( hwndE, EPM_EDIT_ID, 0L, 0L );
match = MPFROM2SHORT(epm.editid,EPM_EDIT_ID);
if (result==match) {
/* Edit window found */
}
-----------------------------------------------------------------------------
70 Programmers Guide to the E Editor Toolkit. Version 2.0
EPM_EDIT_SHOW
_____________
------------------------------------
(MAKE EDIT WINDOW VISIBLE/INVISIBLE)
Purpose Refresh and Show/Hide the edit window speci-
fied.
Message Parameter 1
SHOW FLAG(Bool)
_________
TRUE = Show and Refresh edit window
FALSE = Hide edit window
Message Parameter 2
NULL
____
not used
Remarks
When an edit window is created (using EtkCreate) the
WS_VISIBLE flag is not used as a window style.
Therefore, the edit window is not visible upon cre-
ation. It is recommended that an EPM_EDIT_SHOW
message be sent to the edit window to be displayed
instead of WinShowWindow(...). The difference
between sending the EPM_EDIT_SHOW verses the
WinShowWindow is that the EPM_EDIT_SHOW forces a
window repaint.
-----------------------------------------------------------------------------
E Toolkit Messages 71
EPM_EDIT_NEWFILE
________________
------------------------
(OPEN A NEW EDIT WINDOW)
Purpose Open a new edit window with the specified
file.
Message Parameter 1
FILE NAME(PSZ)
_________
Asciiz string pointer to any legal file name.
(Wildcards are supported)
Message Parameter 2
STRING FLAGS (MPARAM)
_____________
Flags specifying how to handle the pointer in
parameter one.
The following are flags that can be set.
o COMMAND_GETABLE - The pointer is a getable
shared segment. Use
DosGetSeg(SELECTOROF(mp1)
) to access the pointer.
o COMMAND_FREESEL - The selector must be freed
after it is used by the
application. Use
DosFreeSeg( FP_SEG(mp1) ) to
free the selector.
Returns
void
Remarks
An edit window is requesting that another edit
window be opened. This message should be handled by
calling EtkCreate.: The macros used by the EPM
editor use this message to implement the 'OPEN'
command.
The Flags in parameter two are checked by anding
parameter two with the constants COMMAND_GETABLE and
-----------------------------------------------------------------------------
72 Programmers Guide to the E Editor Toolkit. Version 2.0
COMMAND_FREESEL. For example to check if the
COMMAND_GETABLE flag is set do the folowing:
if( LONGFROMMP(mp2) & COMMAND_FREESEL ) {
/* the free selector flag is set */
}
-----------------------------------------------------------------------------
E Toolkit Messages 73
EPM_EDIT_DESTROYNOTIFY
______________________
-------------------------
(A E-MLE HAS BEEN CLOSED)
Purpose Notify owner that an E-MLE window has been
closed.
Message Parameter 1
EDIT HANDLE(HWND)
___________
Handle to the client window of the E-MLE window
that was just closed.
Message Parameter 2
MESSAGE QUEUE(HMQ) Handle to the message queue
______________
formally being used by the E-MLE window that was
just closed.
Returns
void
Remarks
Sent to owner registered in the Editor Information
structure. (See Appendix A for more details on the
Edit Information structure.) This message gives the
owner the ability to take some action when a edit
window is closed. Note that the window handle
passed is not valid. It is to be used for reference
only.
-----------------------------------------------------------------------------
74 Programmers Guide to the E Editor Toolkit. Version 2.0
EPM_EXTRAWINDOW_REFRESH
_______________________
------------------------------
(REFRESH EXTRA WINDOW CONTROL)
Purpose Repaint the optional editor extra window,
updating all values.
Message Parameter 1
NULL(MPARAM)
____
not used
Message Parameter 2
NULL (MPARAM)
_____
not used
Returns
VOID
Remarks
The Extra Window control can provide two extra lines
of text, the status area and the message area.: To
obtain the extra window handle, send a
EPM_EDIT_OPTION message to the edit window in ques-
tion. When sending the option message specify
OPTION_HWNDEXTRA as message parameter one.
-----------------------------------------------------------------------------
E Toolkit Messages 75
EPM_EDIT_CONTROLTOGGLE
______________________
---------------------------------------------------------
(TOGGLE OR QUERY THE STATUS OF A BASE EDIT WINDOW
CONTROL)
Purpose Toggle a editor control on/off or force the
control on/off.
Message Parameter 1
ID(LOUSHORT)
__
Control identifier; See table below.
RCE ON/OFF(HIUSHORT)
__________
Set to 2=ON, or 1=OFF
Message Parameter 2
QUERY FLAG (MPARAM)
___________
TRUE if control is to be Queried, otherwise FALSE.
Returns
void
Remarks
This message is send to an edit window to toggle
(turn ON or OFF) some editor control window. The
message can also be used to force a particular
control on or off.: The lo-ordered short of the
first message parameter contains an id number that
determines the control window. The id constants are
as follows:
EDITSTATUSAREA Status area of extra window control.
EDITMSGAREA Message area of extra window control
EDITVSCROLL Vertical scroll bar
EDITHSCROLL Horizontal scroll bar
EDITTITLEBAR Stops automatic updating of title bar
with filename. This is useful if the
application requires the title bar to
display text other then the current file
being edited.
EDITCURSOR Editor cursor
-----------------------------------------------------------------------------
76 Programmers Guide to the E Editor Toolkit. Version 2.0
The hi-ordered short of the first message parameter
contains an optional value. If the value is null
then the control is toggled. If it is non- zero the
control status is set to one less the value. This
value should be set to 2 if you want to force the
control on, or one if you want to force the control
off.
Parameter contain the Query Flag. If parameter is
non-zero the status of the specified control is
returned. That is, TRUE is returned if the control
is active or FALSE if it is not.
-----------------------------------------------------------------------------
E Toolkit Messages 77
EPM_EDIT_RECORDKEY-
___________________
----------------------------
(START RECORDING KEYSTROKES)
Purpose Start the recording of keystrokes (WM_CHAR
messages) sent to the edit window.
Message Parameter 1
NULL (MPARAM)
_____
not used
Message Parameter 2
NULL (MPARAM)
_____
not used
Returns
void
Remarks
-----------------------------------------------------------------------------
78 Programmers Guide to the E Editor Toolkit. Version 2.0
EPM_EDIT_ENDRECORDKEY-
______________________
-------------------------
(STOP STORING KEYSTROKES)
Purpose Terminates the storing of keystrokes
(WM_CHAR messages) started by the EPM_EDIT_RECORDKEY
message.
Message Parameter 1
NULL (MPARAM)
_____
not used
Message Parameter 2
NULL (MPARAM)
_____
not used
Returns
void
Remarks
-----------------------------------------------------------------------------
E Toolkit Messages 79
EPM_EDIT_PLAYKEY
________________
----------------------------------------------
(EXECUTE STORED KEYSTROKES) - SENT TO AN E-MLE
Purpose Generate keystrokes (WM_CHAR messages) saved
since the EPM_EDIT_RECORDKEY message has been sent.
Message Parameter 1
NULL (MPARAM)
_____
not used
Message Parameter 2
NULL (MPARAM)
_____
not used
Returns
void
Remarks
It is recommend that a EPM_EDIT_ENDRECORDKEY message
be sent before this message is sent. If the edit
window is still in record mode when the message is
sent an error message is sent to the owner window.
-----------------------------------------------------------------------------
80 Programmers Guide to the E Editor Toolkit. Version 2.0
EPM_EDIT_QUERYRECORDKEY
_______________________
----------------------------
(DETERMINE RECORD KEY STATE)
Purpose Returns TRUE if edit window is recording
keys.
Message Parameter 1
NULL (MPARAM)
_____
not used
Message Parameter 2
NULL (MPARAM)
_____
not used
Returns
TRUE = edit window is recording keys.
Remarks
-----------------------------------------------------------------------------
E Toolkit Messages 81
EPM_EDIT_ASKTOQUIT
__________________
---------------------------------
(REQUEST TO QUIT A MODIFIED FILE)
Purpose Notify application that a request has been
sent to quit a file which has been modified.
Message Parameter 1
FILENAME (PSZ)
_________
Name of file that has been modified.
Message Parameter 2
HEDITWND (HWND)
_________
The edit window's handle.
Remarks
This message is sent after the E toolkit has
received notice to quit a modified file. The appli-
cation must respond to this message by sending an
EPM_EDIT_ASKTODONE message. When an application
receives this message it is a good time to pop a
dialog to the user asking what action to take. (See
the Quitbox dialog for an example )
Related Messages
EPM_EDIT_ASKTOCLOSE
EPM_EDIT_ASKTOFAILED
EPM_EDIT_ASKTODONE
-----------------------------------------------------------------------------
82 Programmers Guide to the E Editor Toolkit. Version 2.0
EPM_EDIT_ASKTOCLOSE
___________________
---------------------------------
(REQUEST TO CLOSE AN EDIT WINDOW)
Purpose Notify application that a request has be
sent to close an edit window which contains a file
that has been modified.
Message Parameter 1
FILENAME (PSZ)
_________
Name of file that has been modified.
Message Parameter 2
HEDITWND (HWND)
_________
The edit window's handle.
Remarks
This message is sent after the E toolkit has
received notice to close an edit window which con-
tains a modified file. The application must respond
to this message by sending an EPM_EDIT_ASKKTODONE
message.
Related Messages
EPM_EDIT_ASKTOQUIT
EPM_EDIT_ASKTOFAILED
EPM_EDIT_ASKTODONE
-----------------------------------------------------------------------------
E Toolkit Messages 83
EPM_EDIT_ASKTODONE
__________________
--------------------------------------
(RESPOND TO EPM_EDIT_ASKTOXXX MESSAGE)
Purpose Respond to one of the EPM_EDIT_ASKTOxxx mes-
sages from the E toolkit.
Message Parameter 1
RETCODE (MPFROMSHORT)
________
Response message sent to E toolkit. One of the fol-
lowing messages can be used:
o ERES_CANCEL - Cancel the closing of the file or
edit window.
o ERES_DISCARD - Discard the modifications and
continue closing.
o ERES_SAVE - Save file as message parameter
two and continue closing.
Message Parameter 2
FILENAME (PSZ) Name of file to save modifications in
_________
if EPM_SAVE is sent. This pointer must be the same
pointer sent to the applications with one of the
EPM_EDIT_ASKTOxxx messages.
Remarks
This message allows the application control the
saving or discarding of a modified file when an edit
window is closing, a quit file message has been
sent, or when a previous EPM_EDIT_ASKTODONE message
returned EPM_EDIT_ASKTOFAILED.
Related Messages
EPM_EDIT_ASKTQUIT
EPM_EDIT_ASKTOCLOSE
EPM_EDIT_ASKTODONE
-----------------------------------------------------------------------------
84 Programmers Guide to the E Editor Toolkit. Version 2.0
EPM_EDIT_ASKTOFAILED
____________________
--------------------------------
(LAST EPM_EDIT_ASKTODONE FAILED)
Purpose Notify application that the file name sent
with the last EPM_EDIT_ASKTODONE message could not
be saved with the name specified.
Message Parameter 1
FILENAME (filename)
_________
File name used which caused an error in saving.
Message Parameter 2
HEDITWND (HWND)
_________
The edit window's handle.
Remarks
This message informs the application that the file
name sent with the EPM_EDIT_ASKTODONE message and
message parameter EPM_SAVE, was a bad file name. The
application should correct the file name and send
another EPM_EDIT_ASKTODONE message.
Related Messages
EPM_EDIT_ASKTQUIT
EPM_EDIT_ASKTOCLOSE
EPM_EDIT_ASKTOFAILED
-----------------------------------------------------------------------------
E Toolkit Messages 85
-----------------------------------------------------------------------------
86 Programmers Guide to the E Editor Toolkit. Version 2.0
ERES.DLL
________
ERES.DLL exports a set a general purpose functions
that can be used by an application that contains
E-MLE's. These functions are detailed in this
section. IN ORDER TO USE THESE FUNCTIONS AN APPLI-
__________________________________________
CATION MUST DO THE FOLLOWING IN THE ORDER GIVEN:
_________________________________________________
1) Include ETOOLKT.H in all source files that use
ERES.DLL functions. The main source file of the
application should define the constant
INCL_DONT_EXT_GLOB before including etoolkt.h.
For example:
#define INCL_DONT_EXT_GLOB
#include <ETOOLKT.H>
2) Declare a variable of type GLOBDATA in the main
source file of the application.
3) Load the ERES.DLL module and initialize the
"eresModule" field of the GLOBDATA variable with
the ERES.DLL module handle.
// Note that GlobData is a variable of type GLOBDATA
DosLoadModule((PSZ)NULL,(USHORT)0,(PSZ)"ERES",
(PHMODULE)&GlobData.eresModule );
4) The following three function calls must be
called next.
ERESRegisterEtkFunctions((PFN) EtkCreate, CREATE_FUNC);
ERESRegisterEtkFunctions((PFN) EtkDestroy, DESTROY_FUNC);
ERESRegisterEtkFunctions((PFN) EtkVersion, VERSION_FUNC);
(See ERESRegisterEtkFunctions in the section
"ERES.DLL Exported Functions" for an explanation
of these function calls)
5) Call the function ERESInitEresGlob() in order
to initialize the internal data of ERES.DLL.
6) Required fields of the variable of type GLOBDATA
must be initialized. These are:
-----------------------------------------------------------------------------
ERES.DLL 87
o eres.exfilename - name of the applications
EX file.
o ApplicationName - name of the application.
o ExSearchPath - search path for EX files.
Set to NULL if search
path includes only the
current directory.
o ApplicationID - a unique ID that distin-
guishes the edit windows
of the application.
ERES.DLL - EXPORTED FUNCTIONS
_____________________________
The following functions are exported from ERES.DLL
.--------------------------------------------------------------------------.
| Dynalink functions found in ERES.DLL |
|--------------------------------------------------------------------------|
| |
| ERESRegisterEtkFunctions - Register pointer to E.DLL functions |
| ERESCommonWndProc - Common window procedure |
| EresSaveLists - Saves internal list data to ini file |
| ERESRetrieveLists - Retrieves internal list data from ini file |
| ERESOpenEditWindow - Opens a new edit window |
| ERESCountEWindows - Counts the number of edit windows |
| ERESPopDlgBox - Pop Dialog box |
| ERESIsAnEditWin - Is an edit window |
| ERESEwindowValid - Edit window valid |
| ERESSendOpenMsgToApp - Send open message to application |
| ERESShutDown - Shut down all edit windows |
| ERESInitEResStruct - Initialize the ERES structure |
| ERESCheckVersion - Check the E.DLL version |
| ERESProcessCommands - Process command messages. |
| ERESEditWindowlist - Show listing of available edit windows. |
| |
.--------------------------------------------------------------------------.
-----------------------------------------------------------------------------
88 Programmers Guide to the E Editor Toolkit. Version 2.0
ERESREGISTERETKFUNCTIONS -
__________________________
(REGISTERS POINTERS TO E.DLL FUNCTIONS)
_______________________________________
-----------------------------------------------------------------------------
Allows ERES.DLL to call E.DLL functions without
having to import them.
+-------------------------------------------------------+
| ERESREGISTERETKFUNCTIONS (, ) |
+-------------------------------------------------------+
PARAMETERS
FUNCPTR (PFN) - input
_____
Pointer to E.DLL function. One of the following can
be used:
o EtkCreate
o EtkDestroy
o EtkVersion
ID (USHORT) - input
________
Function identifier. One of the following can be
used:
o CREATE_FUNC - EditWindowCreate
o DESTROY_FUNC - EditWindowDestroy
o VERSION_FUNC - EditVersion
RETURNS
Void
REMARKS
Currently an application must send the pointers of
E.DLL functions required by ERES.DLL in order to
avoid reloading of the E.DLL module. Due to an a
debug in the operating system if two modules in the
same application import the same module, that module
is reloaded. Therefore, this function avoids the
costly reloading of the E.DLL module. Util this
problem is resolved the following code must be
placed after an application loades eres.dll:
EXAMPLE
ERESRegisterEtkFunctions((PFN) EtkCreate, CREATE_FUNC);
ERESRegisterEtkFunctions((PFN) EtkDestroy, DESTROY_FUNC);
ERESRegisterEtkFunctions((PFN) EtkVersion, VERSION_FUNC);
-----------------------------------------------------------------------------
ERES.DLL 89
ERESCOMMONWNDPROC
_________________
-------------------------
(COMMON WINDOW PROCEDURE)
Purpose Handles default window message processing of
E toolkit applications.
Prototype: ERESCOMMONWNDPROC
____________________
Parameters
HWND (HWND)
_____
The window handle of the application.
MSG (HWND)
____
The window message.
MP1 (MPARAM)
____
Message parameter one.
MP2 (MPARAM)
____
Message parameter two.
Returns
VOID
Remarks
Applications that choose to call this function as
their default window procedure will have the default
message processing for E toolkit messages. (See
Appendix H for a description of these messages) The
Window ULONG of the applications window handle must
be set to the address of the GLOBDATA structure in
order to process application specific information.
-----------------------------------------------------------------------------
90 Programmers Guide to the E Editor Toolkit. Version 2.0
ERESSAVELISTS
_____________
--------------------------------------
(SAVES INTERNAL LIST DATA TO INI FILE)
Purpose Saves the internal data structures of the
Open File, List Box, and Command Dialog boxes in the
ini file specified in the GLOBDATA structure.
Prototype: ERESSAVELISTS
________________
Parameters
GLOBDATA (GLOBDATA *)
_________
Pointer to application instance data.
Returns
Void
Remarks
GlobData->IniApplicationName contains the name of
the ini file to store the structures in.
GlobData->eres contains the structures cmd, msg, and
open1 which are the structures used by the three
dialog boxes.
-----------------------------------------------------------------------------
ERES.DLL 91
ERESRETRIEVELISTS
_________________
--------------------------------------------
(RETRIEVES INTERNAL LIST DATA FROM INI FILE)
Purpose Retrieves the internal data structures of
the Open File, List Box, and Command Dialog boxes
from the ini file specified in the GLOBDATA struc-
ture.
Prototype: ERESRETRIEVELISTS
____________________
Parameters
GLOBDATA (GLOBDATA *)
_________
Pointer to application instance data.
Returns
VOID
Remarks
GlobData->IniApplicationName contains the name of
the ini file to retrieve the structures from.
GlobData->eres contains the structures cmd, msg, and
open1 which are the structures used by the three
dialog boxes. These will be filled with the data in
the specified ini file.
-----------------------------------------------------------------------------
92 Programmers Guide to the E Editor Toolkit. Version 2.0
ERESOPENEDITWINDOW
__________________
-------------------------
(OPENS A NEW EDIT WINDOW)
Purpose Initializes the EDITORINFO structure with
application specific data and calls the
EPM_CreateEditWindow function of E.DLL .
Prototype: ERESOPENEDITWINDOW
_____________________
Parameters
FILENAME (char far *)
_________
Pointer to the string containing the file to edit.
GLOBDATA (GLOBDATA *)
_________
Application instance data.
Returns HWNDEDIT (HWND) The window handle of the new
_________
edit window.
Remarks
-----------------------------------------------------------------------------
ERES.DLL 93
ERESCOUNTEWINDOWS
_________________
------------------------------------------------
(COUNTS THE NUMBER OF E-MULTI-LINE EDIT WINDOWS)
Purpose Determines the number of available edit
windows.
Prototype: ERESCOUNTEWINDOWS
____________________
Parameters
GLOBDATA (GLOBDATA *) Pointer to application
__________
instance data.
Returns COUNT (USHORT) The total number of E-Multi-
______
line edit windows that belong to an application.
Remarks
GlobData->CountOnlyVisibleWindows determines whether
to count only visible windows. Some applications
might create edit windows, keep them hidden, and use
them at some later time.
-----------------------------------------------------------------------------
94 Programmers Guide to the E Editor Toolkit. Version 2.0
ERESPOPDLGBOX
_____________
----------------
(POP DIALOG BOX)
Purpose Display the specified dialog box. If the
dialog is already being displayed bring it to the
top.
Prototype: ERESPOPDLGBOX(
_________________
Parameters
PROC (PFNWP) Pointer to the window procedure of the
______
dialog.
DLGIN (USHORT) Pointer to dialog input information.
______
MODULETYPE (PSZ) Specifies the module that contains
___________
the dialogs resource information excluding the
".DLL" extension. If set to NULL then the dialog
resource is contained in ERES.DLL.
OWNERTYPE (USHORT) The owner of the dialog. This can
__________
be set to one of four values:
o OT_DEFAULT - Checks the value of the active
edit window. If it is valid
make it the owner, else
make the handle to the applications
frame the owner.
o OT_ACTIVE_EDIT - Make the active edit window the
owner.
o OT_APP_FRAME - Make the applications frame the
owner.
o OT_DESKTOP - Make the desktop window the
owner.
GLOBDATA (GLOBDATA *) Application instance data.
_________
Returns
VOID
-----------------------------------------------------------------------------
ERES.DLL 95
Remarks
-----------------------------------------------------------------------------
96 Programmers Guide to the E Editor Toolkit. Version 2.0
ERESISANEDITWIN
_______________
-------------------
(IS AN EDIT WINDOW)
Purpose Test if a given window is an edit window.
Prototype: ERESISANEDITWIN
__________________
Parameters
HWND (HWND) Window handle of the window to test.
______
GLOBDATA (GLOBDATA *) Pointer to application
___________
instance data.
Returns RC(BOOL)
__
o TRUE - The window is an edit window.
o FLASE - The window is not an edit window.
Remarks
-----------------------------------------------------------------------------
ERES.DLL 97
ERESEWINDOWVALID
________________
-------------------------
(IS AN EDIT WINDOW VALID)
Purpose Tests whether the active edit window of the
application instance data is valid.
Prototype: ERESEWINDOWVALID
___________________
Parameters
GLOBDATA (GLOBDATA *) Pointer to application
__________
instance data.
Returns RC(BOOL)
__
o TRUE - The the active edit window handle is
valid.
o FLASE - The the active edit window handle is not
valid.
Remarks
-----------------------------------------------------------------------------
98 Programmers Guide to the E Editor Toolkit. Version 2.0
ERESSENDOPENMSGTOAPP
____________________
----------------------------------
(SEND OPEN MESSAGE TO APPLICATION)
Purpose Finds the handle of applications client
window, and posts it a message to open the files in
the shared message buffer of the application
instance data.
Prototype: ERESSENDOPENMSGTOAPP
_______________________
Parameters
ID (USHORT) Message response to sending the
____
EPM_BOOK_ID message to the applications window.
Returns
VOID
Remarks
This function traverses through all existing frame
windows searching for the applications window. The
Custom message EPM_BOOK_ID is used to test whether a
windows is that of the application. If a window
responds to an EPM_BOOK_ID message with ID then it
is the applications window. GlobData->ShrMsgBuff
contains the name of the file to open.
-----------------------------------------------------------------------------
ERES.DLL 99
ERESSHUTDOWN
____________
-----------
(SHUT DOWN)
Purpose Systematically closes all E-MLE's associated
with an application.
Prototype: ERESSHUTDOWN
_______________
Parameters
GLOBDATA (GLOBDATA *) Pointer to application
___________
instance data.
Returns RC(BOOL)
__
o TRUE - A given file in an edit window does not
wish to close down because
it has yet to be saved.
o FLASE - Shut down of all edit windows completed.
Remarks
-----------------------------------------------------------------------------
100 Programmers Guide to the E Editor Toolkit. Version 2.0
ERESINITERESSTRUCT
__________________
-------------------------------
(INITIALIZE THE ERES STRUCTURE)
Purpose Initializes the eres field of the GlobData
structure.
Prototype: ERESINITERESSTRUCT
_____________________
Parameters
HWND (HWND) The window handle of the applications
_____
client window.
GLOBDATA (GLOBDATA *) Pointer to applications
___________
instance data.
Returns
VOID
Remarks
The pointer to this structure is copied and used
internally in ERES.DLL.
-----------------------------------------------------------------------------
ERES.DLL 101
ERESCHECKVERSION
________________
------------------------
(CHECK ERES.DLL VERSION)
Purpose Compare the ERES.DLL's version number with
that of E.DLL .
Prototype: ERESCHECKVERSION
___________________
Parameters
No Parameters
Returns RC (BOOL)
___
o TRUE - The Version numbers are the same.
o FLASE - Version conflict exits.
-----------------------------------------------------------------------------
102 Programmers Guide to the E Editor Toolkit. Version 2.0
ERESPROCESSCOMMANDS
___________________
--------------------------
(PROCESS COMMAND MESSAGES)
Purpose Process WM_COMMAND messages sent to the
applications default window procedure.
Prototype: ERESPROCESSCOMMANDS
______________________
Parameters
MP1 (MPARAM) WM_COMMAND message parameter.
____
MP2 (MPARAM) Pointer to dialog input information.
____
GLOBDATA (GLOBDATA *) Pointer to application
__________
instance data.
Returns
VOID
Remarks
This functions is used when ERESCommonWndProc() is
the default window procedure of the application.
-----------------------------------------------------------------------------
ERES.DLL 103
ERESEDITWINDOWLIST
__________________
----------------------------------------
(SHOW LISTING OF AVAILABLE EDIT WINDOWS)
Purpose Create a Popup menu that contains the names
of the available edit windows which the user can
transfer control to.
Prototype: ERESEDITWINDOWLIST
_____________________
Parameters
GLOBDATA (GLOBDATA *) Pointer to application
___________
instance data.
Returns
VOID
Remarks
GlobData->EditWindowListStyle controls the posi-
tioning of the edit list window dialog relative to
the applications client window. (See Appendix F for
the available options)
-----------------------------------------------------------------------------
104 Programmers Guide to the E Editor Toolkit. Version 2.0
ERES.DLL - EXPORTED DIALOG BOX PROCEDURES
_________________________________________
The following dialog box procedures are exported by
ERES.DLL. In order to use any of these dialogs an
application must adhere to the required code out-
lined in the previous section.
o ERESOPENDLGPROC Open dialog procedure. Full file
_______________
selection dialog box includes fields specifying
drives, directories, files, path name, and a
file name entry field.
o ERESOPEN1DLGPROC Open dialog procedure. Contains
________________
a list of previously entered file names, and an
entry field.
o ERESCOMMANDDLGPROC Edit window command dialog
__________________
box.
o FINDCHANGEDLGPROC Allows find/change commands to
_________________
be enter from dialog box.
o CONFIGDLGPROC Configuration edit window dialog
_____________
procedure.
o ENTRYBOXDLGPROC General purpose entry dialog
_______________
box.
o LISTBOXDLGPROC List box dialog.
______________
o QUITBOXDLGPROC
______________
Quit box dialog.
-----------------------------------------------------------------------------
ERES.DLL - Exported Dialog Box Procedures 105
ERESOPEN1DLGPROC
________________
---------------------------
(OPEN DIALOG PROCEDURE ONE)
Purpose Open1 dialog box procedure.
Prototype: ERESOPEN1DLGPROC
___________________
Parameters
HWND (HWND)
_____
The handle to the dialog box.
MESSAGE (USHORT)
________
Window message.
LPARM1 (MPARAM)
_______
Message parameter one.
LPARM2 (MPARAM)
_______
Message parameter two.
Returns
VOID
Remarks
This dialog contains a list of previously entered
file names, and an entry field. This dialog can be
called using the WinDlgBox() function. For example:
WinDlgBox(Parent, Owner, DlgProc, Resource, Dlgid, CreatParam);
o Parent - Window handle of the parent of the
dialog
o Owner - Window handle of the owner of the
dialog
o DlgProc - Window procedure of the dialog
(ERESOpen1DlgProc)
o Resource - Where the dialog resource is
located (ERES)
o Dlgid - Dialog id (DLG_OPEN1)
o CreateParam - Dialog creation parameter. Must be
set to(&GlobData->eres).
-----------------------------------------------------------------------------
106 Programmers Guide to the E Editor Toolkit. Version 2.0
-----------------------------------------------------------------------------
ERES.DLL - Exported Dialog Box Procedures 107
ERESCOMMANDDLGPROC
__________________
--------------------------
(COMMAND DIALOG PROCEDURE)
Purpose Edit window command line dialog procedure.
Prototype: ERESCOMMANDDLGPROC
_____________________
Parameters
HWND (HWND)
_____
The handle to the dialog box.
MESSAGE (USHORT)
________
Window message.
LPARM1 (MPARAM)
_______
Message parameter one.
LPARM2 (MPARAM)
_______
Message parameter two.
Returns
VOID
Remarks
This is an edit window command line dialog box,
which includes an entry field and a scrollable list
of previous commands. This dialog can be called
using the WinDlgBox() function. For example:
WinDlgBox(Parent, Owner, DlgProc, Resource, Dlgid, CreatParam);
o Parent - Window handle of the parent of the
dialog
o Owner - Window handle of the owner of the
dialog
o DlgProc - Window procedure of the dialog
(ERESCommandDlgProc)
o Resource - Where the dialog resource is
located (ERES)
o Dlgid - Dialog id (IDM_COMMANDS)
-----------------------------------------------------------------------------
108 Programmers Guide to the E Editor Toolkit. Version 2.0
o CreateParam - Dialog creation parameter. Must be
set to(&GlobData->eres).
-----------------------------------------------------------------------------
ERES.DLL - Exported Dialog Box Procedures 109
ERESFINDCHANGEDLGPROC
_____________________
------------------------------
(FIND/CHANGE DIALOG PROCEDURE)
Purpose Find/Change commands dialog procedure.
Prototype: ERESFINDCHANGEDLGPROC
________________________
Parameters
HWND (HWND)
_____
The handle to the dialog box.
MESSAGE (USHORT)
________
Window message.
LPARM1 (MPARAM)
_______
Message parameter one.
LPARM2 (MPARAM)
_______
Message parameter two.
Returns
VOID
Remarks
This dialog allows find/change commands to be
entered directly from it. This dialog can be called
using the WinDlgBox() function. For example:
WinDlgBox(Parent, Owner, DlgProc, Resource, Dlgid, CreatParam);
o Parent - Window handle of the parent of the
dialog
o Owner - Window handle of the owner of the
dialog
o DlgProc - Window procedure of the dialog
(ERESFindChangeDlgProc)
o Resource - Where the dialog resource is
located (ERES)
o Dlgid - Dialog id (DLG_CHANGE).
o CreateParam - Dialog creation parameter. Must be
set to(&GlobData->eres).
-----------------------------------------------------------------------------
110 Programmers Guide to the E Editor Toolkit. Version 2.0
ERESCONFIGDLGPROC
_________________
-------------------------------
(CONFIGUATION DIALOG PROCEDURE)
Purpose Allow edit window options to be configured
from dialog box.
Prototype: ERESCONFIGDLGPROC
____________________
Parameters
HWND (HWND)
_____
The handle to the dialog box.
MESSAGE (USHORT)
________
Window message.
LPARM1 (MPARAM)
_______
Message parameter one.
LPARM2 (MPARAM)
_______
Message parameter two.
Returns
VOID
Remarks
This dialog allows configuration of edit window
options. These options include setting margins,
autosave level, tabs, colors, and paths. This
dialog can be called using the WinDlgBox() function.
For example:
WinDlgBox(Parent, Owner, DlgProc, Resource, Dlgid, CreatParam);
o Parent - Window handle of the parent of the
dialog
o Owner - Window handle of the owner of the
dialog
o DlgProc - Window procedure of the dialog
(ERESConfigDlgProc)
o Resource - Where the dialog resource is
located (ERES)
-----------------------------------------------------------------------------
ERES.DLL - Exported Dialog Box Procedures 111
o Dlgid - Dialog id (DLG_CONFIG)
o CreateParam - Dialog creation parameter. Must be
set to(&GlobData->eres).
-----------------------------------------------------------------------------
112 Programmers Guide to the E Editor Toolkit. Version 2.0
ENTRYBOXDLGPROC
_______________
----------------------------
(ENTRY DIALOG BOX PROCEDURE)
Purpose General purpose entry dialog box.
Prototype: ENTRYBOXDLGPROC
__________________
Parameters
HWND (HWND)
_____
The handle to the dialog box.
MESSAGE (USHORT)
________
Window message.
LPARM1 (MPARAM)
_______
Message parameter one.
LPARM2 (MPARAM)
_______
Message parameter two.
Returns
VOID
Remarks
This dialog can be called using the WinDlgBox()
function. For example:
WinDlgBox(Parent, Owner, DlgProc, Resource, Dlgid, CreatParam);
o Parent - Window handle of the parent of the
dialog
o Owner - Window handle of the owner of the
dialog
o DlgProc - Window procedure of the dialog
(EntryBoxDlgProc)
o Resource - Where the dialog resource is
located (ERES)
o Dlgid - Dialog id (IDD_ENTRYBOX)
o CreateParam - Dialog creation parameter. Must be
set to(PENTRYBOXINFO).
-----------------------------------------------------------------------------
ERES.DLL - Exported Dialog Box Procedures 113
Check eres.h for a desription
of the structure
ENTRYBOXINFO. A pointer to
this structure must be allocated
and passed into the dialog
procedure via this parameter.
-----------------------------------------------------------------------------
114 Programmers Guide to the E Editor Toolkit. Version 2.0
LISTBOXDLGPROC
______________
---------------------------
(LIST BOX DIALOG PROCEDURE)
Purpose General purpose list dialog procedure.
Prototype: LISTBOXDLGPROC
_________________
Parameters
HWND (HWND)
_____
The handle to the dialog box.
MESSAGE (USHORT)
________
Window message.
LPARM1 (MPARAM)
_______
Message parameter one.
LPARM2 (MPARAM)
_______
Message parameter two.
Returns
VOID
Remarks
This dialog can be called using the WinDlgBox()
function. For example:
WinDlgBox(Parent, Owner, DlgProc, Resource, Dlgid, CreatParam);
o Parent - Window handle of the parent of the
dialog
o Owner - Window handle of the owner of the
dialog
o DlgProc - Window procedure of the dialog
(ListBoxDlgProc)
o Resource - Where the dialog resource is
located (ERES)
o Dlgid - Dialog id (ID_LISTBOX)
o CreateParam - Dialog creation parameter. Must be
set to(PLISTBOXINFO).
-----------------------------------------------------------------------------
ERES.DLL - Exported Dialog Box Procedures 115
Check eres.h for a
description of the LISTBOXINFO
structure. A pointer to this
structure must be
allocated and passed into the
dialog procedure via this
parameter.
-----------------------------------------------------------------------------
116 Programmers Guide to the E Editor Toolkit. Version 2.0
QUITBOXDLGPROC
______________
---------------------------
(QUIT BOX DIALOG PROCEDURE)
Purpose Sample Quit box dialog which handles
EPM_EDIT_ASKTOxxx messages.
Prototype: QUITBOXDLGPROC
_________________
Parameters
HWND (HWND)
_____
The handle to the dialog box.
MESSAGE (USHORT)
________
Window message.
LPARM1 (MPARAM)
_______
Message parameter one.
LPARM2 (MPARAM)
_______
Message parameter two.
Returns
VOID
Remarks
This dialog informs the user that a file has been
modified. It includes an entry field to specify what
name the modifications should be saved as, and the
pushbuttons: Save , Discard, Cancel, and Help. This
dialog can be called using the WinDlgBox() function.
For example:
WinDlgBox(Parent, Owner, DlgProc, Resource, Dlgid, CreatParam);
o Parent - Window handle of the parent of the
dialog
o Owner - Window handle of the owner of the
dialog
o DlgProc - Window procedure of the dialog
(QuitBoxDlgProc)
-----------------------------------------------------------------------------
ERES.DLL - Exported Dialog Box Procedures 117
o Resource - Where the dialog resource is
located (ERES)
o Dlgid - Dialog id (IDD_QUITBOX)
o CreateParam - Dialog creation parameter. Must be
set to(PQUITBOXINFO).
See eres.h for a description
of the QUITBOXINFO
structure. A pointer to this
structure must be allocated
and passed into the dialog
via this parameter.
Returns
This dialog returns one of the following codes.
o ERES_SAVE - Save was selected. File name is
stored in QUITBOXINFO->filename
o ERES_CANCEL - Cancel was selected.
o ERES_DISCARD - Discard was selected.
-----------------------------------------------------------------------------
118 Programmers Guide to the E Editor Toolkit. Version 2.0
-----------------------------------------------------------------------------
ERES.DLL - Exported Dialog Box Procedures 119
-----------------------------------------------------------------------------
120 Programmers Guide to the E Editor Toolkit. Version 2.0
EXAMPLE E TOOLKIT APPLICATION
_____________________________
The following sample source code demonstrates how an
application can use various features of the E
Toolkit. The source files included are:
o Edllsamp.c - creates a sample edit window using
E.DLL
o edllsamp.e - macros defining the edit windows
profile
o eressamp.c - dialog resource management func-
tions
o sampdlg.c - sample dll which demonstrates two
types of PM dialogs.
o sampdlg.e - macros demonstrating how to invoke
the sampdlg.c dialogs.
-----------------------------------------------------------------------------
Example E Toolkit Application 121
-----------------------------------------------------------------------------
122 Programmers Guide to the E Editor Toolkit. Version 2.0
APPENDIX
________
APPENDIX A -
____________
---------------------------------------------------------
DESCRIPTION OF THE EDITOR INFORMATION STRUCTURE.
(EDITORINFO)
___________________________
.------------------------------------------------------------------------.
| Editor Information Structure defined in 'C' |
|------------------------------------------------------------------------|
| typedef struct EDIT_INFO_TYPE { |
| HAB hab; /* application anchor block */|
| HWND hwndparent; /* handle to parent of edit window */|
| HWND hwndowner; /* handle to owner of edit window */|
| PRECTL rect; /* positioning of edit window */|
| PSZ filename; /* file to be edited (with wildcard) */|
| HPOINTER hEditPtr; /* handle to editor pointer icon. */|
| HPOINTER hMarkPtr; /* handle to mark pointer icon. */|
| VOID FAR *hEditorIcon; /* editor ICON. */|
| ULONG editorstyle; /* internal editor options */|
| ULONG pmstyle; /* PM standard window styles (FCF_xxxx) */|
| USHORT font; /* TRUE = LARGE FONT, FALSE = SMALL FONT*/|
| PSZ exfile; /* pre-compiled macro code file (xxx.EX) */|
| PSZ *topmkr; /* top and bottom of file marker */|
| PSZ *botmkr; /* */|
| SHORT editid; /* unique window id specified for window |
| PSZ exsearchpath; /* environment varible-search for .ex files|
| SHORT reserved0; /* for future use. */|
| } EDITORINFO; |
| |
`------------------------------------------------------------------------'
hab Application Anchor Block. To obtain the appli-
cations anchor block use the WinInitialize function.
(example: hab = WinInitialize(NULL); )
-----------------------------------------------------------------------------
Appendix 123
hwndparent Window handle of the edit window parent.
Effects the positioning of the edit window. In
EPM, for example, the parent to the edit window is
the desk top window (HWND_DESKTOP). This is why
the edit windows created by EPM are free to roam the
entire desk top.
hwndowner Window handle of the edit window owner.
Determines which window receives messages from the
edit window. For example, if a command is send to
the edit window (via the EPM_EDIT_COMMAND message),
and the command generates some type of return code.
The return code is put into message form (via the
EPM_EDIT_RETCODE message), and passed to the edit
window owner.
rect Pointer to a PM rectangle structure. Deter-
mines the positioning of the edit window. The
'.xLeft' and '.yBottom' fields set the lower
lefthand corner of the edit window. The '.xRight'
and '.yTop' fields set the width and height of the
edit window. Since this is a pointer to a rec-
tangle structure, pass the address of a RECTL in the
following manner: epm.rect = ▭
filename Pointer to a Asciiz string that contains a
fully qualified path. If 'filename' is NULL then a
blank file will be edited. The blank file will be
named '.Unnamed file'. 'filename' can contain
wildcards. For example, if '*.dat' were specified,
all the files with the extension '.dat' will be
placed in the newly created edit window.
hEditPtr Handle to a pointer icon that will become
active when the mouse pointer is over the client
area of the edit window. Use
WinQueryPointer(HWND_DESKTOP); to use current mouse
pointer.
hMarkPtr Handle to a pointer that will be displayed
when editor is marking text.
-----------------------------------------------------------------------------
124 Programmers Guide to the E Editor Toolkit. Version 2.0
hEditIcon Handle to a icon that will be displayed
when the edit window is minimized.
editorstyle Internal Editor style flags. Logical
'OR' these flags together to form desired editor
configuration.
o EDIT_STYLE_BROWSE - browse file (view
file only)
o EDIT_STYLE_ACTIVEFOCUS - when edit window
becomes active it will
take focus.
o EDIT_STYLE_STATUSLINE - Create edit window
with status line
o EDIT_STYLE_MESSAGELINE - Create edut window
with message line
pmstyle
Standard PM window FCF_xxx styles. For example, if
you want to create a edit window with a Title Bar,
Vertical Scroll Bar, and Size Border, you would use
the following flags:
FCF_TITLEBAR | FCF_SIZEBORDER | FCF_VERTSCROLL
nt Flag that specifies the size font to use in the
edit window. If font is TRUE, the largest possible
system AVIO font will be used. If font is FALSE, the
smallest possible system AVIO font will be used.
exfile Pointer to a asciiz string containing the
name of a .EX file. A .EX file contains compiled
macro code. The file must be created using
ETPM.EXE. If this parameter is NULL, "EPM.EX" is
used.
topmkr Pointer to a asciiz string containing the
text that will be used to denote the top of file.
-----------------------------------------------------------------------------
Appendix 125
botmkr Pointer to a asciiz string containing the
text that will be used to denote the bottom of file.
editid A unique editor id number that is used to
identify edit windows created by a particular appli-
cation.
exsearchpath A pointer to a string that contains the
name of an environment variable. The internal
toolkit will use the paths associated with this
environment variable to search for .ex files speci-
fied during the life of an edit window. If this
field is NULL, EPMPATH is searched by default.
reserved0 Reserved for future enhancements.
-----------------------------------------------------------------------------
126 Programmers Guide to the E Editor Toolkit. Version 2.0
APPENDIX A1 -
_____________
---------------
FIELD CONSTANTS
Used by EtkSetFileField(...), EtkQueryFileField,
and EtkQueryFileFieldString.
ATTRIBUTE_SUPPORT_LEVEL - 0 = No Attributes supported
AUTOSAVE_FIELD - File Modifies Before Autosaving
CODEPAGE_FIELD - Code page
COL_FIELD - Column of Cursor.
CURSORX_FIELD - X Cursor Position in pels.
CURSORYG_FIELD -
CURSORY_FIELD - Y Cursor Position in pels.
CURSOR_COLUMN - column of the cursor
CURSOR_OFFSET -
DRAGCOLOR_FIELD - drag shadow
DRAGSTYLE_FIELD - drag type (linbe, block, character)
EA_AREA_FIELD - pointer to extended attribute area
FILENAME_FIELD - file name
FONTHEIGHT_FIELD - average font width
FONTWIDTH_FIELD - average font height
FONT_FIELD - internal font identifier string
KEYSET_FIELD - Key set name
LAST_FIELD - Number of last line in file. (absolute position)
LINEG_FIELD -
LINE_FIELD - Number of line where cursor is located. (absolute position)
LOCKHANDLE_FIELD - TRUE = File is locked
MARGINS_FIELD - Margin String. ( Left Right Paragraph )
MARKCOLOR_FIELD - Color of selected text
MODIFY_FIELD - number of file modifications
MOUSEX_FIELD - x position of mouse
MOUSEY_FIELD - y position of mouse
READONLY_FIELD - TRUE = BROWSE MODE
SCROLLX_FIELD - x scroll increment
SCROLLY_FIELD - y scroll increment
TABS_FIELD - Tab rack.
TEXTCOLOR_FIELD - forground and background text color
TITLETEXT_FIELD - text to be placed on title bar
USERSTRING_FIELD - string to be used by user
VISIBLE_FIELD - file visible flag (FALSE=NOT in ring)
WINDOWHEIGHTG_FIELD -
WINDOWHEIGHT_FIELD - height of window in pels
WINDOWWIDTHG_FIELD -
WINDOWWIDTH_FIELD - width of window in pels
WINDOWX_FIELD - starting x position of window
WINDOWY_FIELD - starting x position of window
-----------------------------------------------------------------------------
Appendix 127
APPENDIX B -
____________
----------------
EDITOR COMMANDS.
See EPM Users guide for a list of editor Command.
(EPM SCRIPT)
-----------------------------------------------------------------------------
128 Programmers Guide to the E Editor Toolkit. Version 2.0
APPENDIX C -
____________
-------------------
EDITOR RETURN CODES
-----------------------------------------------------------------------------
Appendix 129
.----------------------------------------------------------.
| Descriptor Constant | Return Code Value |
|----------------------------------------------------------|
| SEE_MESSAGE | 0 |
|----------------------------------------------------------|
| FILE_NOT_FOUND_RC | -2 |
|----------------------------------------------------------|
| PATH_NOT_FOUND_RC | -3 |
|----------------------------------------------------------|
| TOO_MANY_OPEN_FILES_RC | -4 |
|----------------------------------------------------------|
| ACCESS_DENIED_RC | -5 |
|----------------------------------------------------------|
| MEMORY_CONTROL_BLOCKS_RC | -7 |
|----------------------------------------------------------|
| INSUFFICIENT_MEMORY_RC | -8 |
|----------------------------------------------------------|
| INVALID_DRIVE_RC | -15 |
|----------------------------------------------------------|
| NO_MORE_FILES_RC | -18 |
|----------------------------------------------------------|
| NUMERIC_OVERFLOW_RC | -254 |
|----------------------------------------------------------|
| INVALID_NUMBER_ARGUMENT_RC | -255 |
|----------------------------------------------------------|
| RECURSION_TOO_DEEP_RC | -256 |
|----------------------------------------------------------|
| INVALID_NUMBER_OF_PARAMETERS_RC | -257 |
|----------------------------------------------------------|
| OUT_OF_STRING_SPACE_RC | -258 |
|----------------------------------------------------------|
| EXPRESSION_STACK_OVERFLOW_RC | -259 |
|----------------------------------------------------------|
| INVALID_FILEID_RC | -260 |
|----------------------------------------------------------|
| ILLEGAL_OPCODE_RC | -261 |
|----------------------------------------------------------|
| TOO_MANY_WINDOWS_RC | -262 |
|----------------------------------------------------------|
| INVALID_ARGUMENT_RC | -263 |
|----------------------------------------------------------|
| LOOP_STACK_OVERFLOW_RC | -264 |
|----------------------------------------------------------|
| DIVIDE_BY_ZERO_RC | -265 |
|----------------------------------------------------------|
| UNABLE_TO_SHRINK_RC | -266 |
|----------------------------------------------------------|
| INVALID_CALL_BY_REFERENCE_RC | -267 |
|----------------------------------------------------------|
| PROCEDURE_NEEDS_MORE_ARGUMENTS_ | -268 |
|----------------------------------------------------------|
| BREAK_KEY_PRESSED_RC | -269 |
|----------------------------------------------------------|
| NOT_ENOUGH_MEMORY_RC | -270 |
-----------------------------------------------------------------------------
130 Programmers Guide to the E Editor Toolkit. Version 2.0
+.---------------------------------------------------------+
-----------------------------------------------------------------------------
Appendix 131
+----------------------------------------------------------+
| ERROR_IN_MARGIN_SETTINGS_RC | -271 |
|----------------------------------------------------------|
| ERROR_IN_TAB_SETTINGS_RC | -272 |
|----------------------------------------------------------|
| STRING_NOT_FOUND_RC | -273 |
|----------------------------------------------------------|
| UNKNOWN_COMMAND_RC | -274 |
|----------------------------------------------------------|
| MISSING_FILENAME_RC | -275 |
|----------------------------------------------------------|
| LINE_TOO_LONG_TO_JOIN_RC | -276 |
|----------------------------------------------------------|
| TOO_MANY_FILES_RC | -277 |
|----------------------------------------------------------|
| LINES_TRUNCATED_RC | -278 |
|----------------------------------------------------------|
| TEXT_ALREADY_MARKED_RC | -279 |
|----------------------------------------------------------|
| TEXT_NOT_MARKED_RC | -280 |
|----------------------------------------------------------|
| SOURCE_DEST_CONFLICT_RC | -281 |
|----------------------------------------------------------|
| NEW_FILE_RC | -282 |
|----------------------------------------------------------|
| LINE_MARK_REQUIRED_RC | -283 |
|----------------------------------------------------------|
| ERROR_OPENING_FILE_RC | -284 |
|----------------------------------------------------------|
| ERROR_WRITING_FILE_RC | -285 |
|----------------------------------------------------------|
| ERROR_READING_FILE_RC | -286 |
|----------------------------------------------------------|
| INSUFFICIENT_DISK_SPACE_RC | -287 |
|----------------------------------------------------------|
| BLOCK_MARK_REQUIRED_RC | -288 |
|----------------------------------------------------------|
| TOO_MANY_RINGS_RC | -289 |
|----------------------------------------------------------|
| INCORRECT_VERSION_RC | -290 |
|----------------------------------------------------------|
| NO_MAIN_ENTRY_POINT_RC | -291 |
|----------------------------------------------------------|
| ERROR_CLOSING_FILE_RC | -292 |
|----------------------------------------------------------|
| CMDLINE_TOO_LONG_RC | -300 |
|----------------------------------------------------------|
| CANT_UNLINK_MOD_IN_USE_RC | -301 |
|----------------------------------------------------------|
| CANT_UNLINK_KEY_MOD_RC | -302 |
|----------------------------------------------------------|
| INTERNAL_INVALID_MOD_NBR_RC | -303 |
|----------------------------------------------------------|
| LINK_MODULE_ERROR_RC | -304 |
-----------------------------------------------------------------------------
132 Programmers Guide to the E Editor Toolkit. Version 2.0
+----------------------------------------------------------+
+----------------------------------------------------------+
| MAIN_NOT_FOUND_RC | -305 |
|----------------------------------------------------------|
| INIT_NOT_FOUND_RC | -306 |
|----------------------------------------------------------|
| LOADFILE_FINDFILE_RC | -307 |
|----------------------------------------------------------|
| LOADFILE_MAKEFILE_RC | -308 |
|----------------------------------------------------------|
| LOADFILE_ALREADYLINKED_RC | -309 |
|----------------------------------------------------------|
| UNLINK_UNKNOWN_MODULE_RC | -310 |
|----------------------------------------------------------|
| UNLINK_BAD_MODULE_FN_RC | -311 |
|----------------------------------------------------------|
| CALL_DUPLICATED_PROC_RC | -312 |
|----------------------------------------------------------|
| CALL_UNKNOWN_PROC_RC | -313 |
|----------------------------------------------------------|
| GREP_MEMORY_ERROR | -314 |
|----------------------------------------------------------|
| GREP_MISSING_BRACKET | -315 |
|----------------------------------------------------------|
| GREP_BAD_RANGE | -316 |
|----------------------------------------------------------|
| GREP_EMPTY_RANGE | -317 |
|----------------------------------------------------------|
| GREP_REGULAR_EXPRESSION_LONG | -318 |
|----------------------------------------------------------|
| DYNALINK_INCORRECT_PARAMETERS | -319 |
|----------------------------------------------------------|
| CANNOT_FIND_KEYSET | -321 |
|----------------------------------------------------------|
| BAD_LIBRARY_OR_PROC | -322 |
|----------------------------------------------------------|
| INVALID_LINE_NUMBER | -323 |
|----------------------------------------------------------|
| KBDSETSTATUS_FAILED | -324 |
|----------------------------------------------------------|
| BUFFER_CREATE_SIZE | -325 |
|----------------------------------------------------------|
| BAD_PROCEDURE | -326 |
`----------------------------------------------------------'
-----------------------------------------------------------------------------
Appendix 133
APPENDIX E -
____________
-----------------------------------------------------
DESCRIPTION OF THE GLOBAL DATA STRUCTURE.
(GLOBDATA)
_____________________
+------------------------------------------------------------------------+
| Global Data Structure defined in 'C' |
|------------------------------------------------------------------------|
| typedef struct { |
| HAB hAB; |
| EPMRES eres; |
| HMODULE eresModule; |
| HMQ hmq; |
| HDC hDCApp; |
| PFNWP DefFrameProc; |
| PSZ ShrMsgBuff; |
| RECTL rc; |
| USHORT stagcount; |
| CHAR LastCmdLine[256]; |
| CHAR EPMClass[32]; |
| CHAR AllowMultProcesses; |
| HWND hwndHelpInstance; |
| HELPINIT hmiHelpData; |
| CHAR IniApplicationName[20]; |
| PSZ ExSearchPath; |
| BOOL CountOnlyVisibleWindows; |
| USHORT ApplicationID; |
| CHAR ApplicationName[20]; |
| ULONG EditWindowListStyle; |
| } GLOBDATA; |
| |
+------------------------------------------------------------------------+
hAB The Application Anchor Block. To obtain the
applications anchor block use the WinInitialize
function. (example: hab = WinInitialize(NULL); )
eres Structure shared between applications and
ERES.DLL. The pointer to this structure is passed
into ERES.DLL where it is used internally. (See
Appendix G for a description of this structure)
eresModule Module handle of ERES.DLL. Optained with
the DosLoadModule function.
-----------------------------------------------------------------------------
134 Programmers Guide to the E Editor Toolkit. Version 2.0
hmq The handle to the applications message queue.
hDCApp The handle to the applications window device
context.
DefFrameProc Used internally.
ShrMsgBuff The pointer to the applications shared
message buffer.
rc Used in positioning editwindows.
stagcount Stagger window count.
LastCmdLine The last command line used to open an
edit window.
EPMClass Edit window class name. Used to identify
edit windows.
AllowMultProcesses Flag to allow multiple processes
hwndHelpInstance Window handle of the a help
instance of the information presentation facility
hmiHelpData Hook for the information presentation
facility.
IniApplicationName Name of the ini file to save and
retrieve internal data from.
-----------------------------------------------------------------------------
Appendix 135
ExSearchPath Ex file search path.
CountOnlyVisibleWindows When set this flag insures
that ERESCountEwindows returns only the number of
visible edit windows.
ApplicationID Unique window id specified for
editwindows.
ApplicationName Name of application.
EditWindowListStyle Edit window list dialog style
flag. The following flags can be used to position
the edit window list dialog.
o EWindow_List_Window_Middle - display in the
middle of the active window.
o EWindow_List_Window_Corner - display in the
lower right corner of the
active window.
-----------------------------------------------------------------------------
136 Programmers Guide to the E Editor Toolkit. Version 2.0
APPENDIX F -
____________
------------------------------------------------
DESCRIPTION OF THE ERES DATA STRUCTURE. (EPMRES)
_____________________
.------------------------------------------------------------------------.
| Eres Data Structure defined in 'C' |
|------------------------------------------------------------------------|
| typedef struct EPMRES_TYPE { |
| HAB hAB; |
| HWND hwndAppFrame; |
| HWND hwndAppClient; |
| HWND hwndActiveEdit; |
| HWND hwndActiveDlgBox; |
| HWND hwndSearchReplaceBox; |
| CHAR exfilename[MAXFILENAME]; |
| LISTDLG cmd; |
| LISTDLG msgbox; |
| LISTDLG open1; |
| BOOL skipopen1; |
| CHAR saveretpath[MAXFILENAME]; |
| PVOID dlgin; |
| PVOID internal; |
| } EPMRES; |
.------------------------------------------------------------------------.
hAB The Application Anchor Block. To obtain the
applications anchor block use the WinInitialize
function. (example: hab = WinInitialize(NULL); )
hwndAppFrame The applications frame window handle.
hwndAppClient The applications client window handle.
hwndActiveEdit The window handle of the active edit
window.
hwndActiveDlgBox The window handle of the active
dialog box.
-----------------------------------------------------------------------------
Appendix 137
hwndSearchReplaceBox The window handle of the Search
Replace dialog box.
exfilename String containing the name of the main ex
file.
cmd Structure used to store entries in the command
dialog box.
msgbox Structure used to store entries in the
Message box dialog.
open1 Structure containing previous entries in the
open dialog box.
skipopen1 When set skips the open1 dialog box and
presents the list dialog box.
saveretpath The name of the file containing retrieve
list data.
dlgin Pointer to dialog input information.
internal Used internally in ERES.DLL.
-----------------------------------------------------------------------------
138 Programmers Guide to the E Editor Toolkit. Version 2.0
APPENDIX G -
____________
-------------------------------------------------------
DESCRIPTION THE MESSAGES HANDLED BY
ERESCOMMONWNDPROC()
_____________________
The Following message are handled by
ERESCommonWndProc():
o WM_COMMAND
o EPM_EDIT_NEWFILE
o EPM_EDIT_HELPNOTIFY
o EPM_EDIT_RETCODE
o EPM_EDIT_DESTROYNOTIFY
o EPM_POPCMDLINE
o EPM_POPMSGBOX
o EPM_POPOPENDLG
o EPM_POPCHANGEDLG
o EPM_POPCONFIGDLG
o EPM_POPHELPBROWSER
o EPM_POPHELPMGRPANEL
o EPM_OPEN_EDITWINDOW
o EPM_SAVE_LISTS
o EPM_RETRIEVE_LISTS
o EPM_EDIT_ACTIVEHWND
WM_COMMAND
Process a message from the system menu bar. Message
parameter one is the id of the item selected.
EPM_EDIT_NEWFILE An existing edit window is
requesting to open up a new edit window.
ERESOpenEditWindow is called to handle it.
EPM_EDIT_HELPNOTIFY This message is in response to a
WM_HELP message that was received by an edit window.
It is handled by either creating a help manager
panel, or create a file with the help brower file.
EPM_EDIT_RETCODE
Used internally.
-----------------------------------------------------------------------------
Appendix 139
EPM_EDIT_DESTROYNOTIFY This message notifies EPM
that a edit window has been closed. If it was the
last edit window and the search replace dialog
exists, destroy that dialog.
EPM_POPCMDLINE This message is handled by poping the
command line dialog box.
EPM_POPMSGBOX This message is handled by poping the
message dialog box.
EPM_POPOPENDLG This message is handled by poping the
open1 dialog box.
EPM_POPCHANGEDLG This message is handled by poping
the find/change dialog box.
EPM_POPCONFIGDLG This message is handled by poping
the configuration dialog box.
EPM_POPHELPBROWSER This message is handled by poping
an edit window containing the help browser file.
EPM_POPHELPMGRPANEL This message pops a help manager
panel.
EPM_OPEN_EDITWINDOW Used internally by EPM
EPM_SAVE_LISTS Calls ERESSaveLists()
EPM_RETRIEVELIST Calls ERESRetrieveList()
-----------------------------------------------------------------------------
140 Programmers Guide to the E Editor Toolkit. Version 2.0
EPM_EDIT_ACTIVEHWND Used internally.
-----------------------------------------------------------------------------
Appendix 141