Since there were a few requests, here are the changes I made to get the ESIMPLE example from the EPM Toolkit to work with the C-Set++ compiler. The ETK DLLs are 16-bit and need to be thunked to be called from a 32-bit app. Since I was playing around, some of the changes were not necessary to get the program to run. Changes are in DIFF format.
**** Changes to EDLL.H **** 254a255 > #pragma pack(2) 259,263c260,264 < PSWP pswp; // positioning of edit window < PSZ filename; // file to be edited (with wildcard) < PVOID hEditPtr; // handle to editor pointer icon. < PVOID hMarkPtr; // handle to mark pointer icon. < PVOID hEditorIcon; // editor ICON. > PSWP _Seg16 pswp; // positioning of edit window > PSZ _Seg16 filename; // file to be edited (with wildcard) > HPOINTER hEditPtr; // handle to editor pointer icon. > HPOINTER hMarkPtr; // handle to mark pointer icon. > PVOID _Seg16 hEditorIcon; // editor ICON. 267,269c268,270 < PSZ exfile; // pre-compiled macro code file (EPM.EX) < PSZ topmkr; // top and bottom of file marker < PSZ botmkr; // --- > PSZ _Seg16 exfile; // pre-compiled macro code file (EPM.EX) > PSZ _Seg16 topmkr; // top and bottom of file marker > PSZ _Seg16 botmkr; // 271,272c272,273 < PSZ exsearchpath; // a set of paths to search for ex's files < PSZ exe_path; // path where the application started --- > PSZ _Seg16 exsearchpath; // a set of paths to search for ex's files > PSZ _Seg16 exe_path; // path where the application started 275c276,277 < typedef EDITORINFO far *PEDITORINFO; --- > typedef EDITORINFO * PEDITORINFO; > #pragma pack() 280c282 < #define ETKENTRY _loadds --- > #define ETKENTRY CDECL16 285,286c287,288 < PSZ ETKENTRY EtkRegister( HAB hab, ULONG class_style ); < USHORT ETKENTRY EtkCreate( PEDITORINFO epm_p, PHWND hEwnd_p); --- > PSZ _Seg16 ETKENTRY EtkRegister( HAB hab, ULONG class_style ); > USHORT ETKENTRY EtkCreate( PEDITORINFO _Seg16 epm_p, PHWND _Seg16 hEwnd_p); 304c306,307 < SHORT ETKENTRY EtkSetSelection( HWND hwndClient, LINE_INDEX_G firstline, --- > SHORT ETKENTRY EtkSetSelection( HWND hwndClient, LINE_INDEX_G firstline, > FIDType fileid); **** Changes to ESIMPLE.C **** 28a29,30 > > #include "thunk.h" 47a50 > HWND hwndEditFrame; 52c55 < --- > swp.fl = SWP_MOVE | SWP_SIZE; 58c61 < epm.filename = (PSZ)Fname; // file to be edited (with wildca --- > epm.filename = Fname; // file to be > edited (with wildca 64,65c67,70 < epm.editorstyle = EDIT_STYLE_ACTIVATEFOCUS | EDIT_STYLE_DISABLEOWNERAFFECT < EDIT_STYLE_CURSORON; --- > epm.editorstyle = EDIT_STYLE_ACTIVATEFOCUS | > EDIT_STYLE_CURSORON | > EDIT_STYLE_STATUSLINE | > EDIT_STYLE_MESSAGELINE; 67,68c72,73 < epm.pmstyle = FCF_TITLEBAR | FCF_SIZEBORDER | FCF_VERTSCROLL; < --- > epm.pmstyle = FCF_TITLEBAR | FCF_SIZEBORDER | > FCF_VERTSCROLL | FCF_MIN > epm.font = TRUE; // large font 70,71c75,76 < epm.topmkr = // top and bottom file indicator < epm.botmkr = (PSZ)" ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈"; --- > epm.topmkr = (PSZ)"<Top>"; > // top and bottom fi > epm.botmkr = (PSZ)"<Bottom>"; 75c80 < --- > epm.hini = NULLHANDLE; 77,79c82,86 < EtkCreate( (EDITORINFO far *)&epm, (PHWND)&hwndEdit ); < < return( (HWND)hwndEdit ); --- > EtkCreate( &epm, &hwndEdit ); > hwndEditFrame = WinQueryWindow(hwndEdit, QW_PARENT); > WinSetWindowPos(hwndEditFrame, NULLHANDLE, swp.x, swp.y, > swp.cx, swp.cy, SWP_MOVE | SWP_SIZE); > return( hwndEdit ); 95c102 < MRESULT FAR PASCAL TestWndProc( HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2 --- > MRESULT EXPENTRY TestWndProc( HWND hwnd, USHORT msg, > MPARAM mp1, MPARAM mp2 ) 144,146c151,155 < case EPM_EDIT_ACTIVEHWND: < WinSetActiveWindow(HWND_DESKTOP,(HWND)mp1 ); < break; --- > case EPM_EDIT_ACTIVEHWND: > { > WinSetActiveWindow(HWND_DESKTOP,(HWND)mp1 ); > } > break; 160c169 < (PSZ)mp1, --- > (PSZ)_DosSelToFlat(mp1), 162c171 < NULL, --- > NULLHANDLE, 235c244 < hab = WinInitialize(NULL); // Initialize app as a PM app --- > hab = WinInitialize(NULLHANDLE); // Initialize app as a PM app 247c256 <
Credit: Mat Kramer