home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ETKEXP.ZIP / EDLL.H < prev    next >
C/C++ Source or Header  |  1993-02-24  |  17KB  |  324 lines

  1. /*═══════════════════════════════════════════════════════════════════════════╗
  2. ║ What's it called : EDLL.H                                                  ║
  3. ║                                                                            ║
  4. ║ What does it do  : Defines function prototypes of entry functions to E.DLL ║
  5. ║                    Defines E window information and structures.            ║
  6. ║                                                                            ║
  7. ║ Who and when     : Gennaro (Jerry) Cuomo                          9-88     ║
  8. ║                                                                            ║
  9. ╚═══════════════════════════════════════════════════════════════════════════*/
  10.  
  11. /*═══════════════════════════════════════════════════════════════════════════╗
  12. ║ EPM version Length String.                                         GC 7-88 ║
  13. ╚═══════════════════════════════════════════════════════════════════════════*/
  14.  
  15. //#define EVERSION "5.50"         // version number asciiz string.
  16.                                   // name of E dynalink library.
  17.  
  18. #define EDLLINCLUDE_INCLUDED
  19.  
  20. #define MAXFILENAME 260
  21.  
  22. /*═══════════════════════════════════════════════════════════════════════════╗
  23. ║ EPM related Window Messages                                        GC 7-88 ║
  24. ╚═══════════════════════════════════════════════════════════════════════════*/
  25. /* Sent to pass a command to the interpreter (defcmd). */
  26. #define EPM_EDIT_MSGID          WM_USER        +  0x500   // This evaluates to EPM_EDIT_MSGID = 5376
  27. #define EPM_EDIT_COMMAND        EPM_EDIT_MSGID +  1
  28. #define EPM_EDIT_RETCODE        EPM_EDIT_MSGID +  2
  29. #define EPM_EDIT_SAYERROR       EPM_EDIT_MSGID +  3
  30. #define EPM_EDIT_CURSORMOVE     EPM_EDIT_MSGID +  4
  31. #define EPM_EDIT_CHANGEFONT     EPM_EDIT_MSGID +  5
  32. #define EPM_EDIT_ACTIVEHWND     EPM_EDIT_MSGID +  6
  33. #define EPM_EDIT_OPTION         EPM_EDIT_MSGID +  7
  34. #define EPM_EDIT_ID             EPM_EDIT_MSGID +  8
  35. #define EPM_EDIT_SHOW           EPM_EDIT_MSGID +  9
  36. #define EPM_EDIT_NEWFILE        EPM_EDIT_MSGID +  10
  37. #define EPM_EDIT_DESTROYNOTIFY  EPM_EDIT_MSGID +  11
  38. #define EPM_EDIT_CONTROLTOGGLE  EPM_EDIT_MSGID +  12
  39. #define EPM_EDIT_MOUSEMGR       EPM_EDIT_MSGID +  13
  40. #define EPM_EDIT_RECORDKEY      EPM_EDIT_MSGID +  14
  41. #define EPM_EDIT_PLAYKEY        EPM_EDIT_MSGID +  15
  42. #define EPM_EDIT_ENDRECORDKEY   EPM_EDIT_MSGID +  16
  43. #define EPM_EDIT_QUERYRECORDKEY EPM_EDIT_MSGID +  17
  44. #define EPM_EDIT_CHAR           EPM_EDIT_MSGID +  18
  45. #define EPM_EDIT_DESTROY        EPM_EDIT_MSGID +  19
  46. #define EPM_EDIT_DESTROYRC      EPM_EDIT_MSGID +  20
  47. #define EPM_EDIT_HELPNOTIFY     EPM_EDIT_MSGID +  21
  48. #define EPM_EDIT_ASKTOQUIT      EPM_EDIT_MSGID +  22
  49. #define EPM_EDIT_ASKTOCLOSE     EPM_EDIT_MSGID +  23
  50. #define EPM_EDIT_ASKTODONE      EPM_EDIT_MSGID +  24
  51. #define EPM_EDIT_ASKTOFAILED    EPM_EDIT_MSGID +  25
  52.  
  53. #define EPM_EDIT_UPDATE_EDITLIST_ITEM EPM_EDIT_MSGID + 26
  54. #define EPM_EDIT_DOC2WIN              EPM_EDIT_MSGID + 27
  55. #define EPM_EDIT_WIN2DOC              EPM_EDIT_MSGID + 28
  56. #define EPM_EDIT_MINMAXFRAME          EPM_EDIT_MSGID + 29
  57. #define EPM_EDIT_EXEC_PROC            EPM_EDIT_MSGID + 30
  58. #define EPM_EDIT_EXEC_DYNALINK        EPM_EDIT_MSGID + 31
  59. #define EPM_EDIT_TURN_OFF_HIGHLIGHT   EPM_EDIT_MSGID + 32
  60. #define EPM_EDIT_SETTIMER             EPM_EDIT_MSGID + 33
  61. #define EPM_EDIT_POSTEDMSG1           EPM_EDIT_MSGID + 34
  62. #define EPM_EDIT_POSTEDMSG2           EPM_EDIT_MSGID + 35
  63. #define EPM_EDIT_POSTEDMSG3           EPM_EDIT_MSGID + 36  // future use
  64. #define EPM_EDIT_POSTDONE             EPM_EDIT_MSGID + 37
  65. #define EPM_EDIT_COMMAND2             EPM_EDIT_MSGID + 38
  66. #define EPM_EDIT_GETMEM               EPM_EDIT_MSGID + 39
  67. #define EPM_EDIT_VERSION              EPM_EDIT_MSGID + 40
  68. #define EPM_EDIT_MEMNOTIFY            EPM_EDIT_MSGID + 41
  69. #define EPM_EDIT_EXEC_DYNALINK2       EPM_EDIT_MSGID + 42
  70.  
  71. #define EPM_EXTRAWINDOW_REFRESH       EPM_EDIT_MSGID + 50
  72. #define EPM_EDIT_GETPROFILE           EPM_EDIT_MSGID + 51
  73. #define EPM_EDIT_ACTIVATEFILEID       EPM_EDIT_MSGID + 52
  74. #define EPM_EDIT_QUERY_HELP_INSTANCE  EPM_EDIT_MSGID + 53
  75. #define EPM_FRAME_STATUSLINE          EPM_EDIT_MSGID + 55
  76. #define EPM_FRAME_MESSAGELINE         EPM_EDIT_MSGID + 56
  77. #define EPM_FRAME_ROTATEICONS         EPM_EDIT_MSGID + 57
  78. #define EPM_DRAGDROP_DIRECTTEXTMINIP  EPM_EDIT_MSGID + 58
  79. #define EPM_EDIT_WINDOWCREATED        EPM_EDIT_MSGID + 59
  80. #define EPM_CREATE_DDE_LINK           EPM_EDIT_MSGID + 60
  81. #define EPM_DRAGDROP_DRAGTARGET       EPM_EDIT_MSGID + 61
  82. #define EPM_PRINT_RENDERPAGE          EPM_EDIT_MSGID + 62
  83. #define EPM_PRINT_RENDERPAGERC        EPM_EDIT_MSGID + 63
  84. #define EPM_QHELP_TABLE               EPM_EDIT_MSGID + 64
  85. #define EPM_EDIT_CLIPBOARDCOPY        EPM_EDIT_MSGID + 65
  86. #define EPM_EDIT_CLIPBOARDPASTE       EPM_EDIT_MSGID + 66
  87. #define EPM_BROADCASTHELP             EPM_EDIT_MSGID + 67
  88. #define EPM_GET_ERROR_MESSAGE         EPM_EDIT_MSGID + 68
  89. #define EPM_SEND_MACROS_ERRORS        EPM_EDIT_MSGID + 69
  90. #define EPM_QUERY_GLOBDATA            EPM_EDIT_MSGID + 70
  91. #define EPM_IS_HELP_LOADED            EPM_EDIT_MSGID + 71
  92. #define EPM_EDIT_TASKLIST             EPM_EDIT_MSGID + 72
  93. #define EPM_EDIT_DELETEFILE           EPM_EDIT_MSGID + 73
  94. #define EPM_DRAGDROP_RENDERCOMPLETE   EPM_EDIT_MSGID + 74
  95. #define BUGFIX00143
  96. #ifdef BUGFIX00143
  97.    #define EPM_EDIT_SAYERROR2            EPM_EDIT_MSGID + 75
  98. #endif
  99. #define EPM_EDIT_LOGERROR             EPM_EDIT_MSGID + 76
  100. #define EPM_EDIT_LOGAPPEND            EPM_EDIT_MSGID + 77
  101.  
  102. // Return codes sent by the EPM_EDIT_DESTROYRC message
  103. #define EPM_RC_DESTROYOK       0
  104. #define EPM_RC_DESTROYTIMEOUT  1
  105. #define EPM_RC_DESTROYCANCEL   2
  106. #define EPM_RC_DESTROYNOFREE   3
  107.  
  108. // Return codes sent by the EPM_EDIT_ASKTOQUITDONE message
  109. #define ERES_CANCEL             0
  110. #define ERES_DISCARD            1
  111. #define ERES_SAVE               2
  112.  
  113. /*═══════════════════════════════════════════════════════════════════════════╗
  114. ║ Editor Styles                                                      GC 7-88 ║
  115. ╚═══════════════════════════════════════════════════════════════════════════*/
  116. #define EDIT_STYLE_BROWSE               0x00000001L
  117. #define EDIT_STYLE_ACTIVATEFOCUS        0x00000004L
  118. #define EDIT_STYLE_STATUSLINE           0x00000008L
  119. #define EDIT_STYLE_MESSAGELINE          0x00000010L
  120. #define EDIT_STYLE_FILEICON             0x00000040L
  121. #define EDIT_STYLE_MOVECURSORACTIVATE   0x00000080L
  122. #define EDIT_STYLE_DISABLEOWNERAFFECTS  0x00000100L
  123. #define EDIT_STYLE_ROTATEBUTTONS        0x00000400L
  124. #define EDIT_STYLE_DMTITLEBAR           0x00000800L
  125. #define EDIT_STYLE_CURSORON             0x00001000L
  126. #define EDIT_STYLE_VSCROLL              0x00010000L
  127. #define EDIT_STYLE_HSCROLL              0x00040000L
  128. #define EDIT_STYLE_STATUSONTOP          0x00080000L
  129. #define EDIT_STYLE_STREAMEDIT           0x00100000L
  130. #define EDIT_STYLE_CUAMARKING           0x00200000L
  131. #define EDIT_STYLE_TASKLISTENTRY        0x00400000L
  132. #define EDIT_STYLE_USEDEFAULTARROWKEYS  0x00800000L
  133. #define EDIT_STYLE_COMMANDMSGTOMACROS   0x01000000L
  134. #define EDIT_STYLE_DISPLAYERRORRETRY    0x02000000L
  135.  
  136. /*═══════════════════════════════════════════════════════════════════════════╗
  137. ║ Editor Command Message Parameter Styles (mp2 of EPM_EDIT_COMMAND)  GC 7-88 ║
  138. ╚═══════════════════════════════════════════════════════════════════════════*/
  139. #define COMMAND_FREESEL    0x00000001L
  140. #define COMMAND_SYNC       0x00000004L
  141. #define COMMAND_GETABLE    0x00000008L
  142.  
  143. /*═══════════════════════════════════════════════════════════════════════════╗
  144. ║ Editor Options (Used with EPM_EDIT_OPTION message)                 GC 7-88 ║
  145. ╚═══════════════════════════════════════════════════════════════════════════*/
  146. #define OPTIONS_MARGINS          1
  147. #define OPTIONS_LINE             2
  148. #define OPTIONS_COLUMN           3
  149. #define OPTIONS_INSERT           4
  150. #define OPTIONS_AUTOSAVE         5
  151. #define OPTIONS_NTABS            6
  152. #define OPTIONS_NROWS            7
  153. #define OPTIONS_NCOLS            8
  154. #define OPTIONS_MODIFY           9
  155. #define OPTIONS_TAB              10
  156. #define OPTIONS_SEARCH           11
  157. #define OPTIONS_GETTEXT          12
  158. #define OPTIONS_NAME             13
  159. #define OPTIONS_HWNDEXTRA        14
  160. #define OPTIONS_HWNDEIOBJECT     15
  161. #define OPTIONS_TEXTCOLOR        16
  162. #define OPTIONS_RING             17
  163. #define OPTIONS_FILEID           18
  164. #define OPTIONS_QSELECTION       19
  165.  
  166.  
  167. //     In EPM the field variables are:
  168. //
  169.   #define  AUTOSAVE_FIELD                      0L
  170.   #define  COL_FIELD                           1L
  171.   #define  CURSORX_FIELD                       2L
  172.   #define  CURSORY_FIELD                       3L
  173.   #define  KEYSET_FIELD                        4L
  174.   #define  LAST_FIELD                          5L
  175.   #define  LINE_FIELD                          6L
  176.   #define  MARGINS_FIELD                       7L
  177.   #define  MARKCOLOR_FIELD                     8L
  178.   #define  MODIFY_FIELD                        9L
  179. //#define  STATUSCOLOR_FIELD                  10L
  180.   #define  TABS_FIELD                         11L
  181.   #define  WINDOWHEIGHT_FIELD                 12L
  182.   #define  WINDOWWIDTH_FIELD                  13L
  183.   #define  WINDOWX_FIELD                      14L
  184.   #define  WINDOWY_FIELD                      15L
  185.   #define  FILENAME_FIELD                     16L
  186.   #define  USERSTRING_FIELD                   17L
  187.   #define  MOUSEX_FIELD                       18L
  188.   #define  MOUSEY_FIELD                       19L
  189.   #define  TEXTCOLOR_FIELD                    20L
  190.   #define  VISIBLE_FIELD                      21L
  191. //#define  MESSAGECOLOR_FIELD                 22L
  192.   #define  DRAGCOLOR_FIELD                    23L
  193.   #define  DRAGSTYLE_FIELD                    24L
  194.   #define  FONTWIDTH_FIELD                    25L
  195.   #define  FONTHEIGHT_FIELD                   26L
  196. //#define  MESSAGELINE_FIELD                  27L
  197. //#define  STATUSLINE_FIELD                   28L
  198.   #define  LOCKHANDLE_FIELD                   29L
  199. //#define  DRAGTHRESHHOLDX_FIELD              30L
  200. //#define  DRAGTHRESHHOLDY_FIELD              31L
  201.   #define  EA_AREA_FIELD                      32L
  202.   #define  ATTRIBUTE_SUPPORT_LEVEL            33L
  203.   #define  CURSOR_OFFSET                      34L
  204. //#define  TABMODE_FIELD                      35L
  205.   #define  AUTOSHELL_FIELD                    35L
  206.   #define  TITLETEXT_FIELD                    36L
  207.   #define  CURSOR_COLUMN                      37L
  208.   #define  FONT_FIELD                         38L
  209.   #define  SCROLLX_FIELD                      39L
  210.   #define  SCROLLY_FIELD                      40L
  211.   #define  CURSORYG_FIELD                     41L
  212.   #define  LINEG_FIELD                        42L
  213.   #define  WINDOWWIDTHG_FIELD                 43L
  214.   #define  WINDOWHEIGHTG_FIELD                44L
  215.   #define  READONLY_FIELD                     45L
  216.   #define  CODEPAGE_FIELD                     46L
  217.  
  218. // Constants to be used with EtkProcessEditKey().
  219.   #define ADJUST_BLOCK     2
  220.   #define BACKTAB         10
  221.   #define BACKTAB_WORD    11
  222.   #define BEGIN_LINE      12
  223.   #define BOTTOM          13
  224.   #define COPY_MARK       21
  225.   #define DELETE_CHAR     23
  226.   #define DELETE_LINE     24
  227.   #define DELETE_MARK     25
  228.   #define DOWN            29
  229.   #define END_LINE        36
  230.   #define ERASE_END_LINE  40
  231.   #define INSERT_LINE     62
  232.   #define INSERT_TOGGLE   64
  233.   #define JOIN            69
  234.   #define LEFT            77
  235.   #define MOVE_MARK       93
  236.   #define NEXT_FILE       98
  237.   #define OVERLAY_BLOCK  105
  238.   #define PAGE_DOWN      107
  239.   #define PAGE_UP        108
  240.   #define PREVFILE_OP    118
  241.   #define REFLOW         126
  242.   #define REPEAT_FIND    129
  243.   #define RIGHT          139
  244.   #define RUBOUT         140
  245.   #define SHIFT_LEFT     150
  246.   #define SHIFT_RIGHT    151
  247.   #define SPLIT          153
  248.   #define TAB            162
  249.   #define TAB_WORD       161
  250.   #define TOP            162
  251.   #define UNDO_LINE      163
  252.   #define UNMARK         165
  253.   #define UP             167
  254.  
  255. /*═══════════════════════════════════════════════════════════════════════════╗
  256. ║ Application structure passed to editor                             GC 7-88 ║
  257. ╚═══════════════════════════════════════════════════════════════════════════*/
  258. typedef struct _EDITORINFO {
  259.    HAB    hab;          // application anchor block
  260.    HWND   hwndparent;   // handle to parent of edit window
  261.    HWND   hwndowner;    // handle to owner of edit window
  262.    PSWP   pswp;         // positioning of edit window
  263.    PSZ    filename;     // file to be edited (with wildcard)
  264.    PVOID  hEditPtr;     // handle to editor pointer icon.
  265.    PVOID  hMarkPtr;     // handle to mark pointer icon.
  266.    PVOID  hEditorIcon;  // editor ICON.
  267.    ULONG  editorstyle;  // internal editor options
  268.    ULONG  pmstyle;      // PM standard window styles (FCF_xxxx)
  269.    USHORT font;         // TRUE = LARGE FONT,  FALSE = SMALL FONT
  270.    PSZ    exfile;       // pre-compiled macro code file (EPM.EX)
  271.    PSZ    topmkr;       // top and bottom of file marker
  272.    PSZ    botmkr;       //
  273.    USHORT editid;       // unique window id specified for edit wind
  274.    PSZ    exsearchpath; // a set of paths to search for ex's files
  275.    PSZ    exe_path;     // path where the application started
  276.    HINI   hini;         // handle to an opened ini profile
  277. } EDITORINFO;
  278. typedef EDITORINFO far *PEDITORINFO;
  279.  
  280. /*═══════════════════════════════════════════════════════════════════════════╗
  281. ║ Function Prototypes                                                        ║
  282. ╚═══════════════════════════════════════════════════════════════════════════*/
  283. #define BUGFIX00174
  284. #ifdef BUGFIX00174
  285.    #define ETKENTRY _loadds _cdecl
  286. #else
  287.    #define ETKENTRY _loadds
  288. #endif
  289.  
  290. #include <mainx.h>
  291. #include <attr.h>
  292.  
  293. // Register/Create/Destroy Functions.
  294. PSZ    ETKENTRY EtkRegister( HAB hab, ULONG class_style );
  295. USHORT ETKENTRY EtkCreate( PEDITORINFO epm_p, PHWND hEwnd_p);
  296. USHORT ETKENTRY EtkDestroy( HAB hab, HWND hwnd, HWND hwndef);
  297. VOID   ETKENTRY EtkVersion( PSZ strbuffer );
  298. VOID   ETKENTRY EtkGetProcAddrs(PFN * fptr);
  299.  
  300. // Window Procedure
  301. PVOID  EXPENTRY EtkWndProc(HWND hwnd, USHORT message, MPARAM lParam1, MPARAM lParam2 );
  302.  
  303. // Special Access Functions.
  304. USHORT ETKENTRY EtkRegisterFont( HWND  hwndClient, PSZ fontname, USHORT  fontsize, USHORT  fontsel);
  305. USHORT ETKENTRY EtkRegisterFont2(HWND  hwndClient, PSZ fontname, USHORT  fontsize, USHORT  fontheight, USHORT  fontwidth, USHORT  fontsel);
  306. SHORT  ETKENTRY EtkProcessEditKey( HWND  hwndClient, SHORT  key);
  307. SHORT  ETKENTRY EtkQueryFileID( HWND hwndClient, PULONG  fileid);
  308. SHORT  ETKENTRY EtkDeleteText( HWND  hwndClient, ULONG  thefileid, ULONG  y, ULONG  number_oflines);
  309. SHORT  ETKENTRY EtkReplaceText( HWND  hwndClient, FIDType  repFileid, LINE_INDEX_FR  repLocLinenum, attrstring_ftpp  repLineString);
  310. SHORT  ETKENTRY EtkInsertText( HWND  hwndClient, FIDType  insFileid, LINE_INDEX  insLocLinenum, attrstring_ftpp  insLineString);
  311. SHORT  ETKENTRY EtkQueryText(HWND hwndClient, ULONG getFileid, ULONG getLocLinenum, PSZ  *getText, AttribRecType far * far * getAttrs, AttribRecType far * far * getALAttr);
  312. SHORT  ETKENTRY EtkFindAttribute( HWND hwndClient, FIDType fileid, LINE_INDEX_FR TheLineNm, SHORT TheColm, SHORT TheOfst, AttribRecType ** TheAttribute, PBOOL Found);
  313. SHORT  ETKENTRY EtkSetSelection( HWND  hwndClient, LINE_INDEX_G  firstline,  LINE_INDEX_G  lastline, USHORT firstcol, USHORT lastcol, SHORT  firstoff, SHORT  lastoff, USHORT marktype, FIDType fileid);
  314. SHORT  ETKENTRY EtkQuerySelection(HWND hwndClient, PULONG firstline, PULONG lastline, PUSHORT firstcol, PUSHORT lastcol, PULONG markfileid, USHORT respectattributes, USHORT relative2file);
  315. SHORT  ETKENTRY EtkQuerySelectionType(HWND hwndClient, PUSHORT marktype);
  316. SHORT  ETKENTRY EtkSetFileField(HWND hwndClient, ULONG field, FIDType fileid,  PVOID indata);
  317. SHORT  ETKENTRY EtkExecuteCommand(HWND hwndClient, PSZ command);
  318. SHORT  ETKENTRY EtkQueryFileField( HWND hwndClient, ULONG field, ULONG fileid, PLONG retdata);
  319. SHORT  ETKENTRY EtkQueryFileFieldString(HWND hwndClient, ULONG field, ULONG getFileid, PSZ getText);
  320. SHORT  ETKENTRY EtkInvalidateText( HWND  hwndClient, LINE_INDEX_FR firstline, LINE_INDEX_FR lastline);
  321. ULONG  ETKENTRY EtkInsertTextBuffer( HWND  hwndClient, LINE_INDEX_FR line, ULONG LenText, PSZ buffer);
  322. ULONG  ETKENTRY EtkQueryTextBuffer( HWND  hwndClient, LINE_INDEX_FR startline, LINE_INDEX_FR lastline, ULONG TotalLen, PSZ buffer);
  323. SHORT  ETKENTRY EtkAccessLowLevelData( HWND  hwndClient, FIDType  getFileid, PVOID far *  getSubLineArray);
  324.