source: trunk/dll/instant.c@ 2

Last change on this file since 2 was 2, checked in by root, 23 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.3 KB
RevLine 
[2]1#define INCL_DOS
2#define INCL_WIN
3
4#include <os2.h>
5#include <stdlib.h>
6#include <stdio.h>
7#include <string.h>
8#include <ctype.h>
9#include "fm3dll.h"
10#include "fm3dlg.h"
11#include "fm3str.h"
12#include "mle.h"
13
14#pragma data_seg(DATA1)
15#pragma alloc_text(INSTANT,InstantDlgProc)
16
17#define hwndMLE WinWindowFromID(hwnd,BAT_MLE)
18
19static INT batches = 0;
20
21
22MRESULT EXPENTRY InstantDlgProc (HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2) {
23
24 CHAR *path;
25 APIRET temp;
26 static CHAR *bat = NULL;
27 static HWND myhwnd = (HWND)0;
28
29 switch(msg) {
30 case WM_INITDLG:
31 if(myhwnd) {
32 DosBeep(250,100);
33 WinSendMsg(myhwnd,WM_SYSCOMMAND,MPFROM2SHORT(SC_RESTORE,0),MPVOID);
34 WinSetActiveWindow(HWND_DESKTOP,myhwnd);
35 WinDismissDlg(hwnd,0);
36 break;
37 }
38 if(!mp2) {
39 DosBeep(50,100);
40 WinDismissDlg(hwnd,0);
41 break;
42 }
43 WinSetWindowPtr(hwnd,0,mp2);
44 path = (CHAR *)mp2;
45 {
46 CHAR s[CCHMAXPATH + 81];
47
48 sprintf(s,
49 GetPString(IDS_INSTANTTITLETEXT),
50 path);
51 WinSetWindowText(hwnd,s);
52 }
53 WinSendMsg(hwndMLE,
54 MLM_SETTEXTLIMIT,
55 MPFROMLONG((LONG)(10240L)),
56 MPVOID);
57 WinSendMsg(hwndMLE,
58 MLM_FORMAT,
59 MPFROM2SHORT(MLFIE_NOTRANS,0),
60 MPVOID);
61 if(bat) {
62
63 ULONG tlen = strlen(bat);
64 IPT iptOffset = 0L;
65
66 WinSendMsg(hwndMLE,MLM_SETIMPORTEXPORT,
67 MPFROMP(bat),
68 MPFROMLONG(12287L));
69 WinSendMsg(hwndMLE,MLM_IMPORT,MPFROMP(&iptOffset),MPFROMP(tlen));
70 DosFreeMem(bat);
71 bat = NULL;
72 }
73 break;
74
75 case WM_COMMAND:
76 switch(SHORT1FROMMP(mp1)) {
77 case DID_OK:
78 path = (CHAR *)WinQueryWindowPtr(hwnd,0);
79 {
80 CHAR s[CCHMAXPATH + 1];
81 FILE *fp;
82 IPT iptOffset = 0L;
83 LONG len,tlen,mem;
84 CHAR *rexx = "";
85
86 mem = MLEgetlen(hwndMLE);
87 if(mem) {
88 if(DosAllocMem((PVOID)&bat,mem,
89 PAG_COMMIT | PAG_READ | PAG_WRITE) ||
90 !bat) {
91 DosBeep(50,100);
92 WinDismissDlg(hwnd,0);
93 break;
94 }
95 tlen = (LONG)WinSendMsg(hwndMLE,MLM_QUERYTEXTLENGTH,MPVOID,MPVOID);
96 if(tlen) {
97 WinSendMsg(hwndMLE,MLM_SETIMPORTEXPORT,
98 MPFROMP(bat),
99 MPFROMLONG(mem));
100 len = (LONG)WinSendMsg(hwndMLE,MLM_EXPORT,
101 MPFROMP(&iptOffset),
102 MPFROMP(&tlen));
103 bat[len] = 0;
104 lstrip(bat);
105 while(strlen(bat) && bat[strlen(bat) - 1] == '\n' ||
106 bat[strlen(bat) - 1] == ' ') {
107 stripcr(bat);
108 rstrip(bat);
109 stripcr(bat);
110 rstrip(bat);
111 }
112 if(*bat) {
113 sprintf(s,"%s%sFMTMP%d.CMD",path,
114 (path[strlen(path) - 1] == '\\') ? "" : "\\",
115 batches++);
116 fp = fopen(s,"w");
117 if(fp) {
118 if(!strncmp(bat,"/*",2)) {
119 rexx = "'";
120 fprintf(fp,
121 "%s\n",
122 GetPString(IDS_REXXCOMMENT));
123 }
124 fprintf(fp,"%s%c:%s\n",rexx,toupper(*path),rexx);
125 fprintf(fp,"%sCD \"%s%s\"%s\n",rexx,path,
126 (strlen(path) < 3) ? "\\" : "",rexx);
127 fprintf(fp,"%s",bat);
128 fprintf(fp,"\n%sDEL \"%s\"%s\n",rexx,s,rexx);
129 fclose(fp);
130 runemf2(WINDOWED | SEPARATE,
131 hwnd,
132 path,
133 NULL,
134 "%s /C \"%s\"",
135 GetCmdSpec(FALSE),
136 s);
137 }
138 else
139 DosBeep(500,100);
140 }
141 else
142 DosBeep(50,100);
143 }
144 else
145 DosBeep(50,100);
146 }
147 }
148 WinDismissDlg(hwnd,0);
149 break;
150
151 case DID_CANCEL:
152 WinDismissDlg(hwnd,0);
153 break;
154
155 case IDM_HELP:
156 path = WinQueryWindowPtr(hwnd,0);
157 temp = saymsg(MB_YESNOCANCEL,
158 hwnd,
159 GetPString(IDS_INSTANTHELPTITLETEXT),
160 GetPString(IDS_INSTANTHELPTEXT),
161 path,(strlen(path) < 3) ? "\\" : "",path,
162 (path[strlen(path) - 1] == '\\') ? "" : "\\",
163 batches);
164 if(temp == MBID_YES)
165 runemf2(WINDOWED | INVISIBLE | BACKGROUND,
166 hwnd,
167 NULL,
168 NULL,
169 "%s /C HELP BATCH",
170 GetCmdSpec(FALSE));
171 else if(temp == MBID_CANCEL)
172 WinDismissDlg(hwnd,0);
173 break;
174 }
175 return 0;
176
177 case WM_CLOSE:
178 case WM_DESTROY:
179 myhwnd = (HWND)0;
180 break;
181 }
182 return WinDefDlgProc(hwnd,msg,mp1,mp2);
183}
184
Note: See TracBrowser for help on using the repository browser.