Open-Source-Software-Entwicklung und Downloads

Browse Subversion Repository

Contents of /trunk/teraterm/ttpmacro/ttmdlg.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3227 - (show annotations) (download) (as text)
Tue Mar 24 15:10:33 2009 UTC (15 years, 2 months ago) by maya
File MIME type: text/x-c++src
File size: 6543 byte(s)
CVS から SVN へ移行: 改行コードを LF から CR+LF へ変換
1 /* Tera Term
2 Copyright(C) 1994-1998 T. Teranishi
3 All rights reserved. */
4
5 /* TTMACRO.EXE, dialog boxes */
6
7 #include "stdafx.h"
8 #include "teraterm.h"
9 #include <direct.h>
10 #include "ttm_res.h"
11 #include "tttypes.h"
12 #include "ttlib.h"
13 #include <commdlg.h>
14 #include "errdlg.h"
15 #include "inpdlg.h"
16 #include "msgdlg.h"
17 #include "statdlg.h"
18 #include "ttmlib.h"
19
20 #define MaxStrLen 256
21
22 extern "C" {
23 char HomeDir[MAXPATHLEN];
24 char FileName[MAXPATHLEN];
25 char TopicName[11];
26 char ShortName[MAXPATHLEN];
27 char Param2[MAXPATHLEN];
28 char Param3[MAXPATHLEN];
29 char Param4[MAXPATHLEN];
30 char Param5[MAXPATHLEN];
31 char Param6[MAXPATHLEN];
32 char Param7[MAXPATHLEN];
33 char Param8[MAXPATHLEN];
34 char Param9[MAXPATHLEN];
35 BOOL SleepFlag;
36 }
37
38 static int DlgPosX = -1000;
39 static int DlgPosY = 0;
40
41 static PStatDlg StatDlg = NULL;
42
43 extern "C" {
44 BOOL NextParam(PCHAR Param, int *i, PCHAR Buff, int BuffSize)
45 {
46 int j;
47 char c, q;
48 BOOL Quoted;
49
50 if ( *i >= (int)strlen(Param)) {
51 return FALSE;
52 }
53 j = 0;
54
55 while (Param[*i]==' ') {
56 (*i)++;
57 }
58
59 c = Param[*i];
60 Quoted = ((c=='"') || (c=='\''));
61 q = 0;
62 if (Quoted) {
63 q = c;
64 (*i)++;
65 c = Param[*i];
66 }
67 (*i)++;
68 while ((c!=0) && (c!=q) && (Quoted || (c!=' ')) &&
69 (Quoted || (c!=';')) && (j<BuffSize-1)) {
70 Buff[j] = c;
71 j++;
72 c = Param[*i];
73 (*i)++;
74 }
75 if (! Quoted && (c==';')) {
76 (*i)--;
77 }
78
79 Buff[j] = 0;
80 return (strlen(Buff)>0);
81 }
82 }
83
84 extern "C" {
85 void ParseParam(PBOOL IOption, PBOOL VOption)
86 {
87 int i, j, k;
88 char *Param;
89 char Temp[MAXPATHLEN];
90
91 // Get home directory
92 GetModuleFileName(AfxGetInstanceHandle(),FileName,sizeof(FileName));
93 ExtractDirName(FileName,HomeDir);
94 _chdir(HomeDir);
95
96 // Get command line parameters
97 FileName[0] = 0;
98 TopicName[0] = 0;
99 Param2[0] = 0;
100 Param3[0] = 0;
101 Param4[0] = 0;
102 Param5[0] = 0;
103 Param6[0] = 0;
104 Param7[0] = 0;
105 Param8[0] = 0;
106 Param9[0] = 0;
107 SleepFlag = FALSE;
108 *IOption = FALSE;
109 *VOption = FALSE;
110 // 256�o�C�g�������R�}���h���C���p�����[�^�w�����������ABOF(Buffer Over Flow)��
111 // �������o�O���C���B(2007.5.25 yutaka)
112 Param = GetCommandLine();
113 i = 0;
114 // the first term shuld be executable filename of TTMACRO
115 NextParam(Param, &i, Temp, sizeof(Temp));
116 j = 0;
117
118 while (NextParam(Param, &i, Temp, sizeof(Temp))) {
119 if (_strnicmp(Temp,"/D=",3)==0) { // DDE option
120 strncpy_s(TopicName, sizeof(TopicName), &Temp[3], _TRUNCATE); // BOF����
121 }
122 else if (_strnicmp(Temp,"/I",2)==0) {
123 *IOption = TRUE;
124 }
125 else if (_strnicmp(Temp,"/S",2)==0) {
126 SleepFlag = TRUE;
127 }
128 else if (_strnicmp(Temp,"/V",2)==0) {
129 *VOption = TRUE;
130 }
131 else {
132 j++;
133 if (j==1) {
134 strncpy_s(FileName, sizeof(FileName),Temp, _TRUNCATE);
135 }
136 else if (j==2) {
137 strncpy_s(Param2, sizeof(Param2),Temp, _TRUNCATE);
138 }
139 else if (j==3) {
140 strncpy_s(Param3, sizeof(Param3),Temp, _TRUNCATE);
141 }
142 else if (j==4) {
143 strncpy_s(Param4, sizeof(Param4),Temp, _TRUNCATE);
144 }
145 else if (j==5) {
146 strncpy_s(Param5, sizeof(Param5),Temp, _TRUNCATE);
147 }
148 else if (j==6) {
149 strncpy_s(Param6, sizeof(Param6),Temp, _TRUNCATE);
150 }
151 else if (j==7) {
152 strncpy_s(Param7, sizeof(Param7),Temp, _TRUNCATE);
153 }
154 else if (j==8) {
155 strncpy_s(Param8, sizeof(Param8),Temp, _TRUNCATE);
156 }
157 else if (j==9) {
158 strncpy_s(Param9, sizeof(Param9),Temp, _TRUNCATE);
159 }
160 }
161 }
162
163 if (FileName[0]=='*') {
164 FileName[0] = 0;
165 }
166 else if (FileName[0]!=0) {
167 if (GetFileNamePos(FileName,&j,&k)) {
168 FitFileName(&FileName[k],sizeof(FileName)-k,".TTL");
169 strncpy_s(ShortName, sizeof(ShortName),&FileName[k], _TRUNCATE);
170 if (j==0) {
171 strncpy_s(FileName, sizeof(FileName),HomeDir, _TRUNCATE);
172 AppendSlash(FileName,sizeof(FileName));
173 strncat_s(FileName,sizeof(FileName),ShortName,_TRUNCATE);
174 }
175 }
176 else {
177 FileName[0] = 0;
178 }
179 }
180 }
181 }
182
183 extern "C" {
184 BOOL GetFileName(HWND HWin)
185 {
186 char FNFilter[31];
187 OPENFILENAME FNameRec;
188 char uimsg[MAX_UIMSG], uimsg2[MAX_UIMSG];
189
190 if (FileName[0]!=0) {
191 return FALSE;
192 }
193
194 memset(FNFilter, 0, sizeof(FNFilter));
195 memset(&FNameRec, 0, sizeof(OPENFILENAME));
196 get_lang_msg("FILEDLG_OPEN_MACRO_FILTER", uimsg, sizeof(uimsg), "Macro files (*.ttl)\\0*.ttl\\0\\0", UILanguageFile);
197 memcpy(FNFilter, uimsg, sizeof(FNFilter));
198
199 // sizeof(OPENFILENAME) ���� Windows98/NT ���I���������������� (2006.8.14 maya)
200 FNameRec.lStructSize = get_OPENFILENAME_SIZE();
201 FNameRec.hwndOwner = HWin;
202 FNameRec.lpstrFilter = FNFilter;
203 FNameRec.nFilterIndex = 1;
204 FNameRec.lpstrFile = FileName;
205 FNameRec.nMaxFile = sizeof(FileName);
206 // ���O���������� .ttl �t�@�C�����p�X���L���������������A�����f�B���N�g�����������������B
207 // (2008.4.7 yutaka)
208 #if 0
209 FNameRec.lpstrInitialDir = HomeDir;
210 #endif
211 FNameRec.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
212 FNameRec.lpstrDefExt = "TTL";
213 get_lang_msg("FILEDLG_OPEN_MACRO_TITLE", uimsg2, sizeof(uimsg2), "MACRO: Open macro", UILanguageFile);
214 FNameRec.lpstrTitle = uimsg2;
215 if (GetOpenFileName(&FNameRec)) {
216 strncpy_s(ShortName, sizeof(ShortName), &(FileName[FNameRec.nFileOffset]), _TRUNCATE);
217 }
218 else {
219 FileName[0] = 0;
220 }
221
222 if (FileName[0]==0) {
223 ShortName[0] = 0;
224 return FALSE;
225 }
226 else {
227 return TRUE;
228 }
229 }
230 }
231
232 extern "C" {
233 void SetDlgPos(int x, int y)
234 {
235 DlgPosX = x;
236 DlgPosY = y;
237 if (StatDlg!=NULL) { // update status box position
238 StatDlg->Update(NULL,NULL,TRUE,DlgPosX,DlgPosY);
239 }
240 }
241 }
242
243 extern "C" {
244 void OpenInpDlg(PCHAR Buff, PCHAR Text, PCHAR Caption,
245 PCHAR Default, BOOL Paswd, BOOL SPECIAL)
246 {
247 CInpDlg InpDlg(Buff,Text,Caption,Default,Paswd,SPECIAL,DlgPosX,DlgPosY);
248 InpDlg.DoModal();
249 }
250 }
251
252 extern "C" {
253 int OpenErrDlg(PCHAR Msg, PCHAR Line)
254 {
255 CErrDlg ErrDlg(Msg,Line,DlgPosX,DlgPosY);
256 return ErrDlg.DoModal();
257 }
258 }
259
260 extern "C" {
261 int OpenMsgDlg(PCHAR Text, PCHAR Caption, BOOL YesNo, BOOL SPECIAL)
262 {
263 CMsgDlg MsgDlg(Text,Caption,YesNo,SPECIAL,DlgPosX,DlgPosY);
264 return MsgDlg.DoModal();
265 }
266 }
267
268 extern "C" {
269 void OpenStatDlg(PCHAR Text, PCHAR Caption, BOOL SPECIAL)
270 {
271 if (StatDlg==NULL) {
272 StatDlg = new CStatDlg();
273 StatDlg->Create(Text,Caption,SPECIAL,DlgPosX,DlgPosY);
274 }
275 else {// if status box already exists,
276 // update text and caption only.
277 StatDlg->Update(Text,Caption,SPECIAL,32767,0);
278 }
279 }
280 }
281
282 extern "C" {
283 void CloseStatDlg()
284 {
285 if (StatDlg==NULL) {
286 return;
287 }
288 StatDlg->DestroyWindow();
289 StatDlg = NULL;
290 }
291 }

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26