OSDN Git Service

e577d191759d5d62006c15015c70ae656a3af1d0
[ffftp/ffftp.git] / option.c
1 /*=============================================================================\r
2 *\r
3 *                                                               \83I\83v\83V\83\87\83\93\90Ý\92è\r
4 *\r
5 ===============================================================================\r
6 / Copyright (C) 1997-2007 Sota. All rights reserved.\r
7 /\r
8 / Redistribution and use in source and binary forms, with or without \r
9 / modification, are permitted provided that the following conditions \r
10 / are met:\r
11 /\r
12 /  1. Redistributions of source code must retain the above copyright \r
13 /     notice, this list of conditions and the following disclaimer.\r
14 /  2. Redistributions in binary form must reproduce the above copyright \r
15 /     notice, this list of conditions and the following disclaimer in the \r
16 /     documentation and/or other materials provided with the distribution.\r
17 /\r
18 / THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR \r
19 / IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES \r
20 / OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \r
21 / IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, \r
22 / INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, \r
23 / BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF \r
24 / USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON \r
25 / ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT \r
26 / (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF \r
27 / THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
28 /============================================================================*/\r
29 \r
30 #define STRICT\r
31 #include <windows.h>\r
32 #include <stdio.h>\r
33 #include <stdlib.h>\r
34 #include <string.h>\r
35 #include <commctrl.h>\r
36 #include <windowsx.h>\r
37 \r
38 #include "common.h"\r
39 #include "resource.h"\r
40 \r
41 #include <htmlhelp.h>\r
42 #include "helpid.h"\r
43 \r
44 \r
45 /*===== \83v\83\8d\83g\83^\83C\83v =====*/\r
46 \r
47 static BOOL CALLBACK UserSettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
48 static BOOL CALLBACK Trmode1SettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
49 static BOOL CALLBACK Trmode2SettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
50 static BOOL CALLBACK Trmode3SettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
51 static BOOL CALLBACK DefAttrDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
52 static void AddFnameAttrToListView(HWND hDlg, char *Fname, char *Attr);\r
53 static void GetFnameAttrFromListView(HWND hDlg, char *Buf);\r
54 static BOOL CALLBACK MirrorSettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
55 static BOOL CALLBACK NotifySettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
56 static BOOL CALLBACK DispSettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
57 static int SelectListFont(HWND hWnd, LOGFONT *lFont);\r
58 static BOOL CALLBACK ConnectSettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
59 static BOOL CALLBACK FireSettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
60 static BOOL CALLBACK ToolSettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
61 static BOOL CALLBACK SoundSettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
62 static BOOL CALLBACK MiscSettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
63 static BOOL CALLBACK SortSettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
64 static int GetDecimalText(HWND hDlg, int Ctrl);\r
65 static void SetDecimalText(HWND hDlg, int Ctrl, int Num);\r
66 static void CheckRange2(int *Cur, int Max, int Min);\r
67 static void AddTextToListBox(HWND hDlg, char *Str, int CtrlList, int BufSize);\r
68 static void SetMultiTextToList(HWND hDlg, int CtrlList, char *Text);\r
69 static void GetMultiTextFromList(HWND hDlg, int CtrlList, char *Buf, int BufSize);\r
70 \r
71 \r
72 \r
73 typedef struct {\r
74         char Fname[FMAX_PATH+1];\r
75         char Attr[5];\r
76 } ATTRSET;\r
77 \r
78 \r
79 \r
80 \r
81 \r
82 /*===== \8aO\95\94\8eQ\8fÆ =====*/\r
83 \r
84 extern HWND hHelpWin;\r
85 \r
86 /* \90Ý\92è\92l */\r
87 extern char UserMailAdrs[USER_MAIL_LEN+1];\r
88 extern char ViewerName[VIEWERS][FMAX_PATH+1];\r
89 extern int ConnectOnStart;\r
90 extern int DebugConsole;\r
91 extern int SaveWinPos;\r
92 extern char AsciiExt[ASCII_EXT_LEN+1];\r
93 extern int RecvMode;\r
94 extern int SendMode;\r
95 extern int MoveMode;\r
96 extern int CacheEntry;\r
97 extern int CacheSave;\r
98 extern char FwallHost[HOST_ADRS_LEN+1];\r
99 extern char FwallUser[USER_NAME_LEN+1];\r
100 extern char FwallPass[PASSWORD_LEN+1];\r
101 extern int FwallPort;\r
102 extern int FwallType;\r
103 extern int FwallDefault;\r
104 extern int FwallSecurity;\r
105 extern int FwallResolv;\r
106 extern int FwallLower;\r
107 extern int FwallDelimiter;\r
108 extern int PasvDefault;\r
109 extern char DefaultLocalPath[FMAX_PATH+1];\r
110 extern int SaveTimeStamp;\r
111 extern int DclickOpen;\r
112 extern SOUNDFILE Sound[SOUND_TYPES];\r
113 extern int FnameCnv;\r
114 extern int ConnectAndSet;\r
115 extern int TimeOut;\r
116 extern int RmEOF;\r
117 extern int RegType;\r
118 extern char MirrorNoTrn[MIRROR_LEN+1];\r
119 extern char MirrorNoDel[MIRROR_LEN+1];\r
120 extern int MirrorFnameCnv;\r
121 extern int RasClose;\r
122 extern int RasCloseNotify;\r
123 extern int FileHist;\r
124 extern char DefAttrList[DEFATTRLIST_LEN+1];\r
125 extern char TmpPath[FMAX_PATH+1];\r
126 extern int QuickAnonymous;\r
127 extern int PassToHist;\r
128 extern int VaxSemicolon;\r
129 extern int SendQuit;\r
130 extern int NoRasControl;\r
131 extern int DispIgnoreHide;\r
132 extern int DispDrives;\r
133 extern HFONT ListFont;\r
134 extern LOGFONT ListLogFont;\r
135 extern int MirUpDelNotify;\r
136 extern int MirDownDelNotify;\r
137 extern int FolderAttr;\r
138 extern int FolderAttrNum;\r
139 \r
140 \r
141 /*----- \83I\83v\83V\83\87\83\93\82Ì\83v\83\8d\83p\83e\83B\83V\81[\83g ------------------------------------------\r
142 *\r
143 *       Parameter\r
144 *               \82È\82µ\r
145 *\r
146 *       Return Value\r
147 *               \82È\82µ\r
148 *----------------------------------------------------------------------------*/\r
149 \r
150 void SetOption(int Start)\r
151 {\r
152         PROPSHEETPAGE psp[12];\r
153         PROPSHEETHEADER psh;\r
154 \r
155         psp[0].dwSize = sizeof(PROPSHEETPAGE);\r
156         psp[0].dwFlags = PSP_USETITLE | PSP_HASHELP;\r
157         psp[0].hInstance = GetFtpInst();\r
158         psp[0].pszTemplate = MAKEINTRESOURCE(opt_user_dlg);\r
159         psp[0].pszIcon = NULL;\r
160         psp[0].pfnDlgProc = UserSettingProc;\r
161         psp[0].pszTitle = MSGJPN186;\r
162         psp[0].lParam = 0;\r
163         psp[0].pfnCallback = NULL;\r
164 \r
165         psp[1].dwSize = sizeof(PROPSHEETPAGE);\r
166         psp[1].dwFlags = PSP_USETITLE | PSP_HASHELP;\r
167         psp[1].hInstance = GetFtpInst();\r
168         psp[1].pszTemplate = MAKEINTRESOURCE(opt_trmode1_dlg);\r
169         psp[1].pszIcon = NULL;\r
170         psp[1].pfnDlgProc = Trmode1SettingProc;\r
171         psp[1].pszTitle = MSGJPN187;\r
172         psp[1].lParam = 0;\r
173         psp[1].pfnCallback = NULL;\r
174 \r
175         psp[2].dwSize = sizeof(PROPSHEETPAGE);\r
176         psp[2].dwFlags = PSP_USETITLE | PSP_HASHELP;\r
177         psp[2].hInstance = GetFtpInst();\r
178         psp[2].pszTemplate = MAKEINTRESOURCE(opt_trmode2_dlg);\r
179         psp[2].pszIcon = NULL;\r
180         psp[2].pfnDlgProc = Trmode2SettingProc;\r
181         psp[2].pszTitle = MSGJPN188;\r
182         psp[2].lParam = 0;\r
183         psp[2].pfnCallback = NULL;\r
184 \r
185         psp[3].dwSize = sizeof(PROPSHEETPAGE);\r
186         psp[3].dwFlags = PSP_USETITLE | PSP_HASHELP;\r
187         psp[3].hInstance = GetFtpInst();\r
188         psp[3].pszTemplate = MAKEINTRESOURCE(opt_trmode3_dlg);\r
189         psp[3].pszIcon = NULL;\r
190         psp[3].pfnDlgProc = Trmode3SettingProc;\r
191         psp[3].pszTitle = MSGJPN189;\r
192         psp[3].lParam = 0;\r
193         psp[3].pfnCallback = NULL;\r
194 \r
195         psp[4].dwSize = sizeof(PROPSHEETPAGE);\r
196         psp[4].dwFlags = PSP_USETITLE | PSP_HASHELP;\r
197         psp[4].hInstance = GetFtpInst();\r
198         psp[4].pszTemplate = MAKEINTRESOURCE(opt_mirror_dlg);\r
199         psp[4].pszIcon = NULL;\r
200         psp[4].pfnDlgProc = MirrorSettingProc;\r
201         psp[4].pszTitle = MSGJPN190;\r
202         psp[4].lParam = 0;\r
203         psp[4].pfnCallback = NULL;\r
204 \r
205         psp[5].dwSize = sizeof(PROPSHEETPAGE);\r
206         psp[5].dwFlags = PSP_USETITLE | PSP_HASHELP;\r
207         psp[5].hInstance = GetFtpInst();\r
208         psp[5].pszTemplate = MAKEINTRESOURCE(opt_notify_dlg);\r
209         psp[5].pszIcon = NULL;\r
210         psp[5].pfnDlgProc = NotifySettingProc;\r
211         psp[5].pszTitle = MSGJPN191;\r
212         psp[5].lParam = 0;\r
213         psp[5].pfnCallback = NULL;\r
214 \r
215         psp[6].dwSize = sizeof(PROPSHEETPAGE);\r
216         psp[6].dwFlags = PSP_USETITLE | PSP_HASHELP;\r
217         psp[6].hInstance = GetFtpInst();\r
218         psp[6].pszTemplate = MAKEINTRESOURCE(opt_disp_dlg);\r
219         psp[6].pszIcon = NULL;\r
220         psp[6].pfnDlgProc = DispSettingProc;\r
221         psp[6].pszTitle = MSGJPN192;\r
222         psp[6].lParam = 0;\r
223         psp[6].pfnCallback = NULL;\r
224 \r
225         psp[7].dwSize = sizeof(PROPSHEETPAGE);\r
226         psp[7].dwFlags = PSP_USETITLE | PSP_HASHELP;\r
227         psp[7].hInstance = GetFtpInst();\r
228         psp[7].pszTemplate = MAKEINTRESOURCE(opt_connect_dlg);\r
229         psp[7].pszIcon = NULL;\r
230         psp[7].pfnDlgProc = ConnectSettingProc;\r
231         psp[7].pszTitle = MSGJPN193;\r
232         psp[7].lParam = 0;\r
233         psp[7].pfnCallback = NULL;\r
234 \r
235         psp[8].dwSize = sizeof(PROPSHEETPAGE);\r
236         psp[8].dwFlags = PSP_USETITLE | PSP_HASHELP;\r
237         psp[8].hInstance = GetFtpInst();\r
238         psp[8].pszTemplate = MAKEINTRESOURCE(opt_fire_dlg);\r
239         psp[8].pszIcon = NULL;\r
240         psp[8].pfnDlgProc = FireSettingProc;\r
241         psp[8].pszTitle = MSGJPN194;\r
242         psp[8].lParam = 0;\r
243         psp[8].pfnCallback = NULL;\r
244 \r
245         psp[9].dwSize = sizeof(PROPSHEETPAGE);\r
246         psp[9].dwFlags = PSP_USETITLE | PSP_HASHELP;\r
247         psp[9].hInstance = GetFtpInst();\r
248         psp[9].pszTemplate = MAKEINTRESOURCE(opt_tool_dlg);\r
249         psp[9].pszIcon = NULL;\r
250         psp[9].pfnDlgProc = ToolSettingProc;\r
251         psp[9].pszTitle = MSGJPN195;\r
252         psp[9].lParam = 0;\r
253         psp[9].pfnCallback = NULL;\r
254 \r
255         psp[10].dwSize = sizeof(PROPSHEETPAGE);\r
256         psp[10].dwFlags = PSP_USETITLE | PSP_HASHELP;\r
257         psp[10].hInstance = GetFtpInst();\r
258         psp[10].pszTemplate = MAKEINTRESOURCE(opt_sound_dlg);\r
259         psp[10].pszIcon = NULL;\r
260         psp[10].pfnDlgProc = SoundSettingProc;\r
261         psp[10].pszTitle = MSGJPN196;\r
262         psp[10].lParam = 0;\r
263         psp[10].pfnCallback = NULL;\r
264 \r
265         psp[11].dwSize = sizeof(PROPSHEETPAGE);\r
266         psp[11].dwFlags = PSP_USETITLE | PSP_HASHELP;\r
267         psp[11].hInstance = GetFtpInst();\r
268         psp[11].pszTemplate = MAKEINTRESOURCE(opt_misc_dlg);\r
269         psp[11].pszIcon = NULL;\r
270         psp[11].pfnDlgProc = MiscSettingProc;\r
271         psp[11].pszTitle = MSGJPN197;\r
272         psp[11].lParam = 0;\r
273         psp[11].pfnCallback = NULL;\r
274 \r
275         psh.dwSize = sizeof(PROPSHEETHEADER);\r
276         psh.dwFlags = PSH_HASHELP | PSH_NOAPPLYNOW | PSH_PROPSHEETPAGE;\r
277         psh.hwndParent = GetMainHwnd();\r
278         psh.hInstance = GetFtpInst();\r
279         psh.pszIcon = NULL;\r
280         psh.pszCaption = MSGJPN198;\r
281         psh.nPages = sizeof(psp) / sizeof(PROPSHEETPAGE);\r
282         psh.nStartPage = Start;\r
283         psh.ppsp = (LPCPROPSHEETPAGE)&psp;\r
284         psh.pfnCallback = NULL;\r
285 \r
286         PropertySheet(&psh);\r
287         return;\r
288 }\r
289 \r
290 \r
291 /*----- \83\86\81[\83U\90Ý\92è\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ------------------------------------\r
292 *\r
293 *       Parameter\r
294 *               HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
295 *               UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
296 *               WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
297 *               LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
298 *\r
299 *       Return Value\r
300 *               BOOL TRUE/FALSE\r
301 *----------------------------------------------------------------------------*/\r
302 \r
303 static BOOL CALLBACK UserSettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
304 {\r
305         NMHDR *pnmhdr;\r
306 \r
307         switch (message)\r
308         {\r
309                 case WM_INITDIALOG :\r
310                         SendDlgItemMessage(hDlg, USER_ADRS, EM_LIMITTEXT, PASSWORD_LEN, 0);\r
311                         SendDlgItemMessage(hDlg, USER_ADRS, WM_SETTEXT, 0, (LPARAM)UserMailAdrs);\r
312                     return(TRUE);\r
313 \r
314                 case WM_NOTIFY:\r
315                         pnmhdr = (NMHDR FAR *)lParam;\r
316                         switch(pnmhdr->code)\r
317                         {\r
318                                 case PSN_APPLY :\r
319                                         SendDlgItemMessage(hDlg, USER_ADRS, WM_GETTEXT, USER_MAIL_LEN+1, (LPARAM)UserMailAdrs);\r
320                                         break;\r
321 \r
322                                 case PSN_RESET :\r
323                                         break;\r
324 \r
325                                 case PSN_HELP :\r
326                                         hHelpWin = HtmlHelp(NULL, AskHelpFilePath(), HH_HELP_CONTEXT, IDH_HELP_TOPIC_0000041);\r
327                                         break;\r
328                         }\r
329                         break;\r
330         }\r
331     return(FALSE);\r
332 }\r
333 \r
334 \r
335 /*----- \93]\91\97\90Ý\92è\82P\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ------------------------------------\r
336 *\r
337 *       Parameter\r
338 *               HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
339 *               UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
340 *               WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
341 *               LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
342 *\r
343 *       Return Value\r
344 *               BOOL TRUE/FALSE\r
345 *----------------------------------------------------------------------------*/\r
346 \r
347 static BOOL CALLBACK Trmode1SettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
348 {\r
349         NMHDR *pnmhdr;\r
350         int Num;\r
351         char Tmp[FMAX_PATH+1];\r
352         int Trash;\r
353 \r
354         static const RADIOBUTTON ModeButton[] = {\r
355                 { TRMODE_AUTO, TYPE_X },\r
356                 { TRMODE_ASCII, TYPE_A },\r
357                 { TRMODE_BIN, TYPE_I }\r
358         };\r
359         #define MODEBUTTONS     (sizeof(ModeButton)/sizeof(RADIOBUTTON))\r
360 \r
361         switch (message)\r
362         {\r
363                 case WM_INITDIALOG :\r
364                         SetMultiTextToList(hDlg, TRMODE_EXT_LIST, AsciiExt);\r
365                         SetRadioButtonByValue(hDlg, AskTransferType(), ModeButton, MODEBUTTONS);\r
366                         SendDlgItemMessage(hDlg, TRMODE_TIME, BM_SETCHECK, SaveTimeStamp, 0);\r
367                         SendDlgItemMessage(hDlg, TRMODE_EOF, BM_SETCHECK, RmEOF, 0);\r
368                         SendDlgItemMessage(hDlg, TRMODE_SEMICOLON, BM_SETCHECK, VaxSemicolon, 0);\r
369 \r
370                         SendMessage(hDlg, WM_COMMAND, MAKEWPARAM(TRMODE_EXT_LIST, 0), 0);\r
371 \r
372                     return(TRUE);\r
373 \r
374                 case WM_NOTIFY:\r
375                         pnmhdr = (NMHDR FAR *)lParam;\r
376                         switch(pnmhdr->code)\r
377                         {\r
378                                 case PSN_APPLY :\r
379                                         SetTransferTypeImm(AskRadioButtonValue(hDlg, ModeButton, MODEBUTTONS));\r
380                                         SaveTransferType();\r
381                                         GetMultiTextFromList(hDlg, TRMODE_EXT_LIST, AsciiExt, ASCII_EXT_LEN+1);\r
382                                         SaveTimeStamp = SendDlgItemMessage(hDlg, TRMODE_TIME, BM_GETCHECK, 0, 0);\r
383                                         RmEOF = SendDlgItemMessage(hDlg, TRMODE_EOF, BM_GETCHECK, 0, 0);\r
384                                         VaxSemicolon = SendDlgItemMessage(hDlg, TRMODE_SEMICOLON, BM_GETCHECK, 0, 0);\r
385                                         break;\r
386 \r
387                                 case PSN_RESET :\r
388                                         break;\r
389 \r
390                                 case PSN_HELP :\r
391                                         hHelpWin = HtmlHelp(NULL, AskHelpFilePath(), HH_HELP_CONTEXT, IDH_HELP_TOPIC_0000042);\r
392                                         break;\r
393                         }\r
394                         break;\r
395 \r
396                 case WM_COMMAND :\r
397                         switch(GET_WM_COMMAND_ID(wParam, lParam))\r
398                         {\r
399                                 case TRMODE_ASCII :\r
400                                 case TRMODE_BIN :\r
401                                         EnableWindow(GetDlgItem(hDlg, TRMODE_EXT_LIST), FALSE);\r
402                                         EnableWindow(GetDlgItem(hDlg, TRMODE_ADD), FALSE);\r
403                                         EnableWindow(GetDlgItem(hDlg, TRMODE_DEL), FALSE);\r
404                                         break;\r
405 \r
406                                 case TRMODE_AUTO :\r
407                                         EnableWindow(GetDlgItem(hDlg, TRMODE_EXT_LIST), TRUE);\r
408                                         EnableWindow(GetDlgItem(hDlg, TRMODE_ADD), TRUE);\r
409                                         EnableWindow(GetDlgItem(hDlg, TRMODE_DEL), TRUE);\r
410                                         break;\r
411 \r
412                                 case TRMODE_ADD :\r
413                                         strcpy(Tmp, "");\r
414                                         if(InputDialogBox(fname_in_dlg, hDlg, MSGJPN199, Tmp, FMAX_PATH, &Trash, IDH_HELP_TOPIC_0000001) == YES)\r
415                                                 AddTextToListBox(hDlg, Tmp,  TRMODE_EXT_LIST, ASCII_EXT_LEN+1);\r
416                                         break;\r
417 \r
418                                 case TRMODE_DEL :\r
419                                         if((Num = SendDlgItemMessage(hDlg, TRMODE_EXT_LIST, LB_GETCURSEL, 0, 0)) != LB_ERR)\r
420                                                 SendDlgItemMessage(hDlg, TRMODE_EXT_LIST, LB_DELETESTRING, Num, 0);\r
421                                         break;\r
422                         }\r
423                         return(TRUE);\r
424         }\r
425     return(FALSE);\r
426 }\r
427 \r
428 \r
429 /*----- \93]\91\97\90Ý\92è\82Q\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ------------------------------------\r
430 *\r
431 *       Parameter\r
432 *               HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
433 *               UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
434 *               WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
435 *               LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
436 *\r
437 *       Return Value\r
438 *               BOOL TRUE/FALSE\r
439 *----------------------------------------------------------------------------*/\r
440 \r
441 static BOOL CALLBACK Trmode2SettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
442 {\r
443         NMHDR *pnmhdr;\r
444         char Tmp[FMAX_PATH+1];\r
445 \r
446         static const RADIOBUTTON CnvButton[] = {\r
447                 { TRMODE2_NOCNV, FNAME_NOCNV },\r
448                 { TRMODE2_LOWER, FNAME_LOWER },\r
449                 { TRMODE2_UPPER, FNAME_UPPER }\r
450         };\r
451         #define CNVBUTTONS      (sizeof(CnvButton)/sizeof(RADIOBUTTON))\r
452 \r
453         switch (message)\r
454         {\r
455                 case WM_INITDIALOG :\r
456                         SendDlgItemMessage(hDlg, TRMODE2_LOCAL, EM_LIMITTEXT, FMAX_PATH, 0);\r
457                         SendDlgItemMessage(hDlg, TRMODE2_LOCAL, WM_SETTEXT, 0, (LPARAM)DefaultLocalPath);\r
458 \r
459                         SetRadioButtonByValue(hDlg, FnameCnv, CnvButton, CNVBUTTONS);\r
460 \r
461                         SendDlgItemMessage(hDlg, TRMODE2_TIMEOUT, EM_LIMITTEXT, (WPARAM)5, 0);\r
462                         sprintf(Tmp, "%d", TimeOut);\r
463                         SendDlgItemMessage(hDlg, TRMODE2_TIMEOUT, WM_SETTEXT, 0, (LPARAM)Tmp);\r
464                         SendDlgItemMessage(hDlg, TRMODE2_TIMEOUT_SPN, UDM_SETRANGE, 0, MAKELONG(300, 0));\r
465                     return(TRUE);\r
466 \r
467                 case WM_NOTIFY:\r
468                         pnmhdr = (NMHDR FAR *)lParam;\r
469                         switch(pnmhdr->code)\r
470                         {\r
471                                 case PSN_APPLY :\r
472                                         SendDlgItemMessage(hDlg, TRMODE2_LOCAL, WM_GETTEXT, FMAX_PATH+1, (LPARAM)DefaultLocalPath);\r
473 \r
474                                         FnameCnv = AskRadioButtonValue(hDlg, CnvButton, CNVBUTTONS);\r
475 \r
476                                         SendDlgItemMessage(hDlg, TRMODE2_TIMEOUT, WM_GETTEXT, 5+1, (LPARAM)Tmp);\r
477                                         TimeOut = atoi(Tmp);\r
478                                         CheckRange2(&TimeOut, 300, 0);\r
479                                         break;\r
480 \r
481                                 case PSN_RESET :\r
482                                         break;\r
483 \r
484                                 case PSN_HELP :\r
485                                         hHelpWin = HtmlHelp(NULL, AskHelpFilePath(), HH_HELP_CONTEXT, IDH_HELP_TOPIC_0000043);\r
486                                         break;\r
487                         }\r
488                         break;\r
489 \r
490                 case WM_COMMAND :\r
491                         switch(GET_WM_COMMAND_ID(wParam, lParam))\r
492                         {\r
493                                 case TRMODE2_LOCAL_BR :\r
494                                         if(SelectDir(hDlg, Tmp, FMAX_PATH) == TRUE)\r
495                                                 SendDlgItemMessage(hDlg, TRMODE2_LOCAL, WM_SETTEXT, 0, (LPARAM)Tmp);\r
496                                         break;\r
497                         }\r
498                         return(TRUE);\r
499         }\r
500     return(FALSE);\r
501 }\r
502 \r
503 \r
504 /*----- \93]\91\97\90Ý\92è\82R\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ------------------------------------\r
505 *\r
506 *       Parameter\r
507 *               HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
508 *               UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
509 *               WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
510 *               LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
511 *\r
512 *       Return Value\r
513 *               BOOL TRUE/FALSE\r
514 *----------------------------------------------------------------------------*/\r
515 \r
516 static BOOL CALLBACK Trmode3SettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
517 {\r
518         NMHDR *pnmhdr;\r
519         LV_COLUMN LvCol;\r
520         long Tmp;\r
521         RECT Rect;\r
522         ATTRSET AttrSet;\r
523         char *Fname;\r
524         char *Attr;\r
525         char TmpStr[10];\r
526 \r
527         switch (message)\r
528         {\r
529                 case WM_INITDIALOG :\r
530                     Tmp = SendDlgItemMessage(hDlg, TRMODE3_LIST, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);\r
531                     Tmp |= LVS_EX_FULLROWSELECT;\r
532                 SendDlgItemMessage(hDlg, TRMODE3_LIST, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, (LPARAM)Tmp);\r
533 \r
534                         GetClientRect(GetDlgItem(hDlg, TRMODE3_LIST), &Rect);\r
535 \r
536                         LvCol.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM;\r
537                         LvCol.cx = (Rect.right / 3) * 2;\r
538                         LvCol.pszText = MSGJPN200;\r
539                         LvCol.iSubItem = 0;\r
540                         SendDlgItemMessage(hDlg, TRMODE3_LIST, LVM_INSERTCOLUMN, 0, (LPARAM)&LvCol);\r
541 \r
542                         LvCol.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM;\r
543                         LvCol.cx = Rect.right - LvCol.cx;\r
544                         LvCol.pszText = MSGJPN201;\r
545                         LvCol.iSubItem = 1;\r
546                         SendDlgItemMessage(hDlg, TRMODE3_LIST, LVM_INSERTCOLUMN, 1, (LPARAM)&LvCol);\r
547 \r
548                         Fname = DefAttrList;\r
549                         while(*Fname != NUL)\r
550                         {\r
551                                 Attr = strchr(Fname, NUL) + 1;\r
552                                 if(*Attr != NUL)\r
553                                         AddFnameAttrToListView(hDlg, Fname, Attr);\r
554                                 Fname = strchr(Attr, NUL) + 1;\r
555                         }\r
556 \r
557                         SendDlgItemMessage(hDlg, TRMODE3_FOLDER, BM_SETCHECK, FolderAttr, 0);\r
558                         if(FolderAttr == NO)\r
559                                 EnableWindow(GetDlgItem(hDlg, TRMODE3_FOLDER_ATTR), FALSE);\r
560 \r
561                         SendDlgItemMessage(hDlg, TRMODE3_FOLDER_ATTR, EM_LIMITTEXT, (WPARAM)5, 0);\r
562                         sprintf(TmpStr, "%03d", FolderAttrNum);\r
563                         SendDlgItemMessage(hDlg, TRMODE3_FOLDER_ATTR, WM_SETTEXT, 0, (LPARAM)TmpStr);\r
564                     return(TRUE);\r
565 \r
566                 case WM_NOTIFY:\r
567                         pnmhdr = (NMHDR FAR *)lParam;\r
568                         switch(pnmhdr->code)\r
569                         {\r
570                                 case PSN_APPLY :\r
571                                         GetFnameAttrFromListView(hDlg, DefAttrList);\r
572                                         SendDlgItemMessage(hDlg, TRMODE3_FOLDER_ATTR, WM_GETTEXT, 5+1, (LPARAM)TmpStr);\r
573                                         FolderAttrNum = atoi(TmpStr);\r
574                                         FolderAttr = SendDlgItemMessage(hDlg, TRMODE3_FOLDER, BM_GETCHECK, 0, 0);\r
575                                         break;\r
576 \r
577                                 case PSN_RESET :\r
578                                         break;\r
579 \r
580                                 case PSN_HELP :\r
581                                         hHelpWin = HtmlHelp(NULL, AskHelpFilePath(), HH_HELP_CONTEXT, IDH_HELP_TOPIC_0000044);\r
582                                         break;\r
583                         }\r
584                         break;\r
585 \r
586                 case WM_COMMAND :\r
587                         switch(GET_WM_COMMAND_ID(wParam, lParam))\r
588                         {\r
589                                 case TRMODE3_ADD :\r
590                                         if(DialogBoxParam(GetFtpInst(), MAKEINTRESOURCE(def_attr_dlg), hDlg, DefAttrDlgProc, (LPARAM)&AttrSet) == YES)\r
591                                         {\r
592                                                 if((strlen(AttrSet.Fname) > 0) && (strlen(AttrSet.Attr) > 0))\r
593                                                         AddFnameAttrToListView(hDlg, AttrSet.Fname, AttrSet.Attr);\r
594                                         }\r
595                                         break;\r
596 \r
597                                 case TRMODE3_DEL :\r
598                                         if((Tmp = SendDlgItemMessage(hDlg, TRMODE3_LIST, LVM_GETNEXTITEM, -1, MAKELPARAM(LVNI_ALL | LVNI_SELECTED, 0))) != -1)\r
599                                                 SendDlgItemMessage(hDlg, TRMODE3_LIST, LVM_DELETEITEM, Tmp, 0);\r
600                                         break;\r
601 \r
602                                 case TRMODE3_FOLDER :\r
603                                         if(SendDlgItemMessage(hDlg, TRMODE3_FOLDER, BM_GETCHECK, 0, 0) == 1)\r
604                                                 EnableWindow(GetDlgItem(hDlg, TRMODE3_FOLDER_ATTR), TRUE);\r
605                                         else\r
606                                                 EnableWindow(GetDlgItem(hDlg, TRMODE3_FOLDER_ATTR), FALSE);\r
607                                         break;\r
608                         }\r
609                         return(TRUE);\r
610         }\r
611     return(FALSE);\r
612 }\r
613 \r
614 \r
615 /*----- \83t\83@\83C\83\8b\91®\90«\90Ý\92è\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ------------------------------\r
616 *\r
617 *       Parameter\r
618 *               HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
619 *               UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
620 *               WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
621 *               LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
622 *\r
623 *       Return Value\r
624 *               BOOL TRUE/FALSE\r
625 *----------------------------------------------------------------------------*/\r
626 \r
627 static BOOL CALLBACK DefAttrDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
628 {\r
629         static ATTRSET *AttrSet;\r
630         char Tmp[5];\r
631 \r
632         switch (message)\r
633         {\r
634                 case WM_INITDIALOG :\r
635                         AttrSet = (ATTRSET *)lParam;\r
636                         SendDlgItemMessage(hDlg, DEFATTR_FNAME, EM_LIMITTEXT, (WPARAM)FMAX_PATH, 0);\r
637                         SendDlgItemMessage(hDlg, DEFATTR_ATTR, EM_LIMITTEXT, (WPARAM)4, 0);\r
638                     return(TRUE);\r
639 \r
640                 case WM_COMMAND :\r
641                         switch(GET_WM_COMMAND_ID(wParam, lParam))\r
642                         {\r
643                                 case IDOK :\r
644                                         SendDlgItemMessage(hDlg, DEFATTR_FNAME, WM_GETTEXT, (WPARAM)FMAX_PATH+1, (LPARAM)AttrSet->Fname);\r
645                                         SendDlgItemMessage(hDlg, DEFATTR_ATTR, WM_GETTEXT, (WPARAM)4+1, (LPARAM)AttrSet->Attr);\r
646                                         EndDialog(hDlg, YES);\r
647                                         break;\r
648 \r
649                                 case IDCANCEL :\r
650                                         EndDialog(hDlg, NO);\r
651                                         break;\r
652 \r
653                                 case DEFATTR_ATTR_BR :\r
654                                         SendDlgItemMessage(hDlg, DEFATTR_ATTR, WM_GETTEXT, (WPARAM)4+1, (LPARAM)Tmp);\r
655                                         if(DialogBoxParam(GetFtpInst(), MAKEINTRESOURCE(chmod_dlg), GetMainHwnd(), ChmodDialogCallBack, (LPARAM)Tmp) == YES)\r
656                                                 SendDlgItemMessage(hDlg, DEFATTR_ATTR, WM_SETTEXT, 0, (LPARAM)Tmp);\r
657                                         break;\r
658                         }\r
659                         return(TRUE);\r
660         }\r
661     return(FALSE);\r
662 }\r
663 \r
664 \r
665 /*----- \83t\83@\83C\83\8b\96¼\82Æ\91®\90«\82ð\83\8a\83X\83g\83r\83\85\81[\82É\92Ç\89Á ----------------------------------\r
666 *\r
667 *       Parameter\r
668 *               HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
669 *               char *Fname : \83t\83@\83C\83\8b\96¼\r
670 *               char *Attr : \91®\90«\r
671 *\r
672 *       Return Value\r
673 *               \82È\82µ\r
674 *----------------------------------------------------------------------------*/\r
675 \r
676 static void AddFnameAttrToListView(HWND hDlg, char *Fname, char *Attr)\r
677 {\r
678         int Num;\r
679         LV_ITEM LvItem;\r
680         char Buf[DEFATTRLIST_LEN+1];\r
681 \r
682         GetFnameAttrFromListView(hDlg, Buf);\r
683         if(StrMultiLen(Buf) + strlen(Fname) + strlen(Attr) + 2 <= DEFATTRLIST_LEN)\r
684         {\r
685                 Num = SendDlgItemMessage(hDlg, TRMODE3_LIST, LVM_GETITEMCOUNT, 0, 0);\r
686 \r
687                 LvItem.mask = LVIF_TEXT;\r
688                 LvItem.iItem = Num;\r
689                 LvItem.iSubItem = 0;\r
690                 LvItem.pszText = Fname;\r
691                 SendDlgItemMessage(hDlg, TRMODE3_LIST, LVM_INSERTITEM, 0, (LPARAM)&LvItem);\r
692 \r
693                 LvItem.mask = LVIF_TEXT;\r
694                 LvItem.iItem = Num;\r
695                 LvItem.iSubItem = 1;\r
696                 LvItem.pszText = Attr;\r
697                 SendDlgItemMessage(hDlg, TRMODE3_LIST, LVM_SETITEM, 0, (LPARAM)&LvItem);\r
698         }\r
699         else\r
700                 MessageBeep(-1);\r
701 \r
702         return;\r
703 }\r
704 \r
705 \r
706 /*----- \83\8a\83X\83g\83r\83\85\81[\82Ì\93à\97e\82ð\83}\83\8b\83`\95\8e\9a\97ñ\82É\82·\82é --------------------------------\r
707 *\r
708 *       Parameter\r
709 *               HWND hDlg : \83_\83C\83A\83\8d\83O\83{\83b\83N\83X\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
710 *               int CtrlList : \83\8a\83X\83g\83{\83b\83N\83X\82ÌID\r
711 *               char *Buf : \95\8e\9a\97ñ\82ð\83Z\83b\83g\82·\82é\83o\83b\83t\83@\r
712 *               int BufSize : \83o\83b\83t\83@\82Ì\83T\83C\83Y\r
713 *\r
714 *       Return Value\r
715 *               \82È\82µ\r
716 *----------------------------------------------------------------------------*/\r
717 \r
718 static void GetFnameAttrFromListView(HWND hDlg, char *Buf)\r
719 {\r
720         int Num;\r
721         int i;\r
722         LV_ITEM LvItem;\r
723 \r
724         Num = SendDlgItemMessage(hDlg, TRMODE3_LIST, LVM_GETITEMCOUNT, 0, 0);\r
725         for(i = 0; i < Num; i++)\r
726         {\r
727                 LvItem.mask = LVIF_TEXT;\r
728                 LvItem.iItem = i;\r
729                 LvItem.iSubItem = 0;\r
730                 LvItem.pszText = Buf;\r
731                 LvItem.cchTextMax = FMAX_PATH;\r
732                 SendDlgItemMessage(hDlg, TRMODE3_LIST, LVM_GETITEM, 0, (LPARAM)&LvItem);\r
733                 Buf = strchr(Buf, NUL) + 1;\r
734 \r
735                 LvItem.mask = LVIF_TEXT;\r
736                 LvItem.iItem = i;\r
737                 LvItem.iSubItem = 1;\r
738                 LvItem.pszText = Buf;\r
739                 LvItem.cchTextMax = FMAX_PATH;\r
740                 SendDlgItemMessage(hDlg, TRMODE3_LIST, LVM_GETITEM, 0, (LPARAM)&LvItem);\r
741                 Buf = strchr(Buf, NUL) + 1;\r
742         }\r
743         *Buf = NUL;\r
744 \r
745         return;\r
746 }\r
747 \r
748 \r
749 /*----- \83~\83\89\81[\83\8a\83\93\83O\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ----------------------------------\r
750 *\r
751 *       Parameter\r
752 *               HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
753 *               UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
754 *               WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
755 *               LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
756 *\r
757 *       Return Value\r
758 *               BOOL TRUE/FALSE\r
759 *----------------------------------------------------------------------------*/\r
760 \r
761 static BOOL CALLBACK MirrorSettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
762 {\r
763         NMHDR *pnmhdr;\r
764         int Num;\r
765         char Tmp[FMAX_PATH+1];\r
766         int Trash;\r
767 \r
768         switch (message)\r
769         {\r
770                 case WM_INITDIALOG :\r
771                         SetMultiTextToList(hDlg, MIRROR_NOTRN_LIST, MirrorNoTrn);\r
772                         SetMultiTextToList(hDlg, MIRROR_NODEL_LIST, MirrorNoDel);\r
773                         SendDlgItemMessage(hDlg, MIRROR_LOW, BM_SETCHECK, MirrorFnameCnv, 0);\r
774                         SendDlgItemMessage(hDlg, MIRROR_UPDEL_NOTIFY, BM_SETCHECK, MirUpDelNotify, 0);\r
775                         SendDlgItemMessage(hDlg, MIRROR_DOWNDEL_NOTIFY, BM_SETCHECK, MirDownDelNotify, 0);\r
776                     return(TRUE);\r
777 \r
778                 case WM_NOTIFY:\r
779                         pnmhdr = (NMHDR FAR *)lParam;\r
780                         switch(pnmhdr->code)\r
781                         {\r
782                                 case PSN_APPLY :\r
783                                         GetMultiTextFromList(hDlg, MIRROR_NOTRN_LIST, MirrorNoTrn, MIRROR_LEN+1);\r
784                                         GetMultiTextFromList(hDlg, MIRROR_NODEL_LIST, MirrorNoDel, MIRROR_LEN+1);\r
785                                         MirrorFnameCnv = SendDlgItemMessage(hDlg, MIRROR_LOW, BM_GETCHECK, 0, 0);\r
786                                         MirUpDelNotify = SendDlgItemMessage(hDlg, MIRROR_UPDEL_NOTIFY, BM_GETCHECK, 0, 0);\r
787                                         MirDownDelNotify = SendDlgItemMessage(hDlg, MIRROR_DOWNDEL_NOTIFY, BM_GETCHECK, 0, 0);\r
788                                         break;\r
789 \r
790                                 case PSN_RESET :\r
791                                         break;\r
792 \r
793                                 case PSN_HELP :\r
794                                         hHelpWin = HtmlHelp(NULL, AskHelpFilePath(), HH_HELP_CONTEXT, IDH_HELP_TOPIC_0000045);\r
795                                         break;\r
796                         }\r
797                         break;\r
798 \r
799                 case WM_COMMAND :\r
800                         switch(GET_WM_COMMAND_ID(wParam, lParam))\r
801                         {\r
802                                 case MIRROR_NOTRN_ADD :\r
803                                         strcpy(Tmp, "");\r
804                                         if(InputDialogBox(fname_in_dlg, hDlg, MSGJPN202, Tmp, FMAX_PATH, &Trash, IDH_HELP_TOPIC_0000001) == YES)\r
805                                                 AddTextToListBox(hDlg, Tmp, MIRROR_NOTRN_LIST, MIRROR_LEN+1);\r
806                                         break;\r
807 \r
808                                 case MIRROR_NODEL_ADD :\r
809                                         strcpy(Tmp, "");\r
810                                         if(InputDialogBox(fname_in_dlg, hDlg, MSGJPN203, Tmp, FMAX_PATH, &Trash, IDH_HELP_TOPIC_0000001) == YES)\r
811                                                 AddTextToListBox(hDlg, Tmp, MIRROR_NODEL_LIST, MIRROR_LEN+1);\r
812                                         break;\r
813 \r
814                                 case MIRROR_NOTRN_DEL :\r
815                                         if((Num = SendDlgItemMessage(hDlg, MIRROR_NOTRN_LIST, LB_GETCURSEL, 0, 0)) != LB_ERR)\r
816                                                 SendDlgItemMessage(hDlg, MIRROR_NOTRN_LIST, LB_DELETESTRING, Num, 0);\r
817                                         break;\r
818 \r
819                                 case MIRROR_NODEL_DEL :\r
820                                         if((Num = SendDlgItemMessage(hDlg, MIRROR_NODEL_LIST, LB_GETCURSEL, 0, 0)) != LB_ERR)\r
821                                                 SendDlgItemMessage(hDlg, MIRROR_NODEL_LIST, LB_DELETESTRING, Num, 0);\r
822                                         break;\r
823                         }\r
824                         return(TRUE);\r
825         }\r
826     return(FALSE);\r
827 }\r
828 \r
829 \r
830 /*----- \91\80\8dì\90Ý\92è\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N --------------------------------------\r
831 *\r
832 *       Parameter\r
833 *               HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
834 *               UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
835 *               WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
836 *               LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
837 *\r
838 *       Return Value\r
839 *               BOOL TRUE/FALSE\r
840 *----------------------------------------------------------------------------*/\r
841 \r
842 static BOOL CALLBACK NotifySettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
843 {\r
844         NMHDR *pnmhdr;\r
845 \r
846         static const RADIOBUTTON DownButton[] = {\r
847                 { NOTIFY_D_DLG, TRANS_DLG },\r
848                 { NOTIFY_D_OVW, TRANS_OVW }\r
849         };\r
850         #define DOWNBUTTONS     (sizeof(DownButton)/sizeof(RADIOBUTTON))\r
851 \r
852         static const RADIOBUTTON UpButton[] = {\r
853                 { NOTIFY_U_DLG, TRANS_DLG },\r
854                 { NOTIFY_U_OVW, TRANS_OVW }\r
855         };\r
856         #define UPBUTTONS       (sizeof(UpButton)/sizeof(RADIOBUTTON))\r
857 \r
858         static const RADIOBUTTON DclickButton[] = {\r
859                 { NOTIFY_OPEN,     YES },\r
860                 { NOTIFY_DOWNLOAD, NO }\r
861         };\r
862         #define DCLICKBUTTONS   (sizeof(DclickButton)/sizeof(RADIOBUTTON))\r
863 \r
864         static const RADIOBUTTON MoveButton[] = {\r
865                 { NOTIFY_M_NODLG,   MOVE_NODLG },\r
866                 { NOTIFY_M_DLG,     MOVE_DLG },\r
867                 { NOTIFY_M_DISABLE, MOVE_DISABLE }\r
868         };\r
869         #define MOVEBUTTONS     (sizeof(MoveButton)/sizeof(RADIOBUTTON))\r
870 \r
871         switch (message)\r
872         {\r
873                 case WM_INITDIALOG :\r
874                         SetRadioButtonByValue(hDlg, RecvMode,   DownButton,   DOWNBUTTONS);\r
875                         SetRadioButtonByValue(hDlg, SendMode,   UpButton,     UPBUTTONS);\r
876                         SetRadioButtonByValue(hDlg, DclickOpen, DclickButton, DCLICKBUTTONS);\r
877                         SetRadioButtonByValue(hDlg, MoveMode,   MoveButton,   MOVEBUTTONS);\r
878                     return(TRUE);\r
879 \r
880                 case WM_NOTIFY:\r
881                         pnmhdr = (NMHDR FAR *)lParam;\r
882                         switch(pnmhdr->code)\r
883                         {\r
884                                 case PSN_APPLY :\r
885                                         RecvMode   = AskRadioButtonValue(hDlg, DownButton,   DOWNBUTTONS);\r
886                                         SendMode   = AskRadioButtonValue(hDlg, UpButton,     UPBUTTONS);\r
887                                         DclickOpen = AskRadioButtonValue(hDlg, DclickButton, DCLICKBUTTONS);\r
888                                         MoveMode   = AskRadioButtonValue(hDlg, MoveButton,   MOVEBUTTONS);\r
889                                         break;\r
890 \r
891                                 case PSN_RESET :\r
892                                         break;\r
893 \r
894                                 case PSN_HELP :\r
895                                         hHelpWin = HtmlHelp(NULL, AskHelpFilePath(), HH_HELP_CONTEXT, IDH_HELP_TOPIC_0000046);\r
896                                         break;\r
897                         }\r
898                         break;\r
899         }\r
900     return(FALSE);\r
901 }\r
902 \r
903 \r
904 /*----- \95\\8e¦\90Ý\92è\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N --------------------------------------\r
905 *\r
906 *       Parameter\r
907 *               HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
908 *               UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
909 *               WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
910 *               LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
911 *\r
912 *       Return Value\r
913 *               BOOL TRUE/FALSE\r
914 *----------------------------------------------------------------------------*/\r
915 \r
916 static BOOL CALLBACK DispSettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
917 {\r
918         NMHDR *pnmhdr;\r
919         static LOGFONT TmpFont;\r
920 \r
921         switch (message)\r
922         {\r
923                 case WM_INITDIALOG :\r
924                         memcpy(&TmpFont, &ListLogFont, sizeof(LOGFONT));\r
925                         if(ListFont != NULL)\r
926                                 SendDlgItemMessage(hDlg, DISP_FONT, WM_SETTEXT, 0, (LPARAM)TmpFont.lfFaceName);\r
927                         SendDlgItemMessage(hDlg, DISP_HIDE, BM_SETCHECK, DispIgnoreHide, 0);\r
928                         SendDlgItemMessage(hDlg, DISP_DRIVE, BM_SETCHECK, DispDrives, 0);\r
929                     return(TRUE);\r
930 \r
931                 case WM_NOTIFY:\r
932                         pnmhdr = (NMHDR FAR *)lParam;\r
933                         switch(pnmhdr->code)\r
934                         {\r
935                                 case PSN_APPLY :\r
936                                         DispIgnoreHide = SendDlgItemMessage(hDlg, DISP_HIDE, BM_GETCHECK, 0, 0);\r
937                                         DispDrives = SendDlgItemMessage(hDlg, DISP_DRIVE, BM_GETCHECK, 0, 0);\r
938                                         if(strlen(TmpFont.lfFaceName) > 0)\r
939                                         {\r
940                                                 memcpy(&ListLogFont, &TmpFont, sizeof(LOGFONT));\r
941                                                 ListFont = CreateFontIndirect(&ListLogFont);\r
942                                         }\r
943                                         break;\r
944 \r
945                                 case PSN_RESET :\r
946                                         break;\r
947 \r
948                                 case PSN_HELP :\r
949                                         hHelpWin = HtmlHelp(NULL, AskHelpFilePath(), HH_HELP_CONTEXT, IDH_HELP_TOPIC_0000047);\r
950                                         break;\r
951                         }\r
952                         break;\r
953 \r
954                 case WM_COMMAND :\r
955                         switch(GET_WM_COMMAND_ID(wParam, lParam))\r
956                         {\r
957                                 case DISP_FONT_BR :\r
958                                         if(SelectListFont(hDlg, &TmpFont) == YES)\r
959                                                 SendDlgItemMessage(hDlg, DISP_FONT, WM_SETTEXT, 0, (LPARAM)TmpFont.lfFaceName);\r
960                                         break;\r
961                         }\r
962                         return(TRUE);\r
963         }\r
964     return(FALSE);\r
965 }\r
966 \r
967 \r
968 /*----- \83t\83H\83\93\83g\82ð\91I\82Ô --------------------------------------------------------\r
969 *\r
970 *       Parameter\r
971 *               HWND hWnd : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
972 *               LOGFONT *lFont : \83t\83H\83\93\83g\8fî\95ñ\r
973 *\r
974 *       Return Value\r
975 *               \82È\82µ\r
976 *\r
977 *       Parameter change\r
978 *               HFONT *hFont : \83t\83H\83\93\83g\82Ì\83n\83\93\83h\83\8b\r
979 *               LOGFONT *lFont : \83t\83H\83\93\83g\8fî\95ñ\r
980 *----------------------------------------------------------------------------*/\r
981 \r
982 static int SelectListFont(HWND hWnd, LOGFONT *lFont)\r
983 {\r
984         static CHOOSEFONT cFont;\r
985         int Sts;\r
986 \r
987         cFont.lStructSize = sizeof(CHOOSEFONT);\r
988         cFont.hwndOwner = hWnd;\r
989         cFont.hDC = 0;\r
990         cFont.lpLogFont = lFont;\r
991         cFont.Flags = CF_FORCEFONTEXIST | CF_SCREENFONTS | CF_INITTOLOGFONTSTRUCT;\r
992         cFont.nFontType = SCREEN_FONTTYPE;\r
993 \r
994         Sts = NO;\r
995         if(ChooseFont(&cFont) == TRUE)\r
996                 Sts = YES;\r
997 \r
998         return(Sts);\r
999 }\r
1000 \r
1001 \r
1002 /*----- \90Ú\91±\81^\90Ø\92f\90Ý\92è\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N --------------------------------\r
1003 *\r
1004 *       Parameter\r
1005 *               HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
1006 *               UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
1007 *               WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
1008 *               LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
1009 *\r
1010 *       Return Value\r
1011 *               BOOL TRUE/FALSE\r
1012 *----------------------------------------------------------------------------*/\r
1013 \r
1014 static BOOL CALLBACK ConnectSettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
1015 {\r
1016         NMHDR *pnmhdr;\r
1017 \r
1018         switch (message)\r
1019         {\r
1020                 case WM_INITDIALOG :\r
1021                         SendDlgItemMessage(hDlg, CONNECT_CONNECT, BM_SETCHECK, ConnectOnStart, 0);\r
1022                         SendDlgItemMessage(hDlg, CONNECT_OLDDLG, BM_SETCHECK, ConnectAndSet, 0);\r
1023                         SendDlgItemMessage(hDlg, CONNECT_RASCLOSE, BM_SETCHECK, RasClose, 0);\r
1024                         if(AskRasUsable() == NO)\r
1025                                 EnableWindow(GetDlgItem(hDlg, CONNECT_RASCLOSE), FALSE);\r
1026                         SendDlgItemMessage(hDlg, CONNECT_CLOSE_NOTIFY, BM_SETCHECK, RasCloseNotify, 0);\r
1027                         if((RasClose == NO) || (AskRasUsable() == NO))\r
1028                                 EnableWindow(GetDlgItem(hDlg, CONNECT_CLOSE_NOTIFY), FALSE);\r
1029                         SendDlgItemMessage(hDlg, CONNECT_HIST, EM_LIMITTEXT, (WPARAM)2, 0);\r
1030                         SetDecimalText(hDlg, CONNECT_HIST, FileHist);\r
1031                         SendDlgItemMessage(hDlg, CONNECT_HIST_SPN, UDM_SETRANGE, 0, (LPARAM)MAKELONG(HISTORY_MAX, 0));\r
1032                         SendDlgItemMessage(hDlg, CONNECT_QUICK_ANONY, BM_SETCHECK, QuickAnonymous, 0);\r
1033                         SendDlgItemMessage(hDlg, CONNECT_HIST_PASS, BM_SETCHECK, PassToHist, 0);\r
1034                         SendDlgItemMessage(hDlg, CONNECT_SENDQUIT, BM_SETCHECK, SendQuit, 0);\r
1035                         SendDlgItemMessage(hDlg, CONNECT_NORAS, BM_SETCHECK, NoRasControl, 0);\r
1036                     return(TRUE);\r
1037 \r
1038                 case WM_NOTIFY:\r
1039                         pnmhdr = (NMHDR FAR *)lParam;\r
1040                         switch(pnmhdr->code)\r
1041                         {\r
1042                                 case PSN_APPLY :\r
1043                                         ConnectOnStart = SendDlgItemMessage(hDlg, MISC_CONNECT, BM_GETCHECK, 0, 0);\r
1044                                         ConnectAndSet = SendDlgItemMessage(hDlg, MISC_OLDDLG, BM_GETCHECK, 0, 0);\r
1045                                         RasClose = SendDlgItemMessage(hDlg, CONNECT_RASCLOSE, BM_GETCHECK, 0, 0);\r
1046                                         RasCloseNotify = SendDlgItemMessage(hDlg, CONNECT_CLOSE_NOTIFY, BM_GETCHECK, 0, 0);\r
1047                                         FileHist = GetDecimalText(hDlg, CONNECT_HIST);\r
1048                                         CheckRange2(&FileHist, HISTORY_MAX, 0);\r
1049                                         QuickAnonymous = SendDlgItemMessage(hDlg, CONNECT_QUICK_ANONY, BM_GETCHECK, 0, 0);\r
1050                                         PassToHist = SendDlgItemMessage(hDlg, CONNECT_HIST_PASS, BM_GETCHECK, 0, 0);\r
1051                                         SendQuit = SendDlgItemMessage(hDlg, CONNECT_SENDQUIT, BM_GETCHECK, 0, 0);\r
1052                                         NoRasControl = SendDlgItemMessage(hDlg, CONNECT_NORAS, BM_GETCHECK, 0, 0);\r
1053                                         break;\r
1054 \r
1055                                 case PSN_RESET :\r
1056                                         break;\r
1057 \r
1058                                 case PSN_HELP :\r
1059                                         hHelpWin = HtmlHelp(NULL, AskHelpFilePath(), HH_HELP_CONTEXT, IDH_HELP_TOPIC_0000048);\r
1060                                         break;\r
1061                         }\r
1062                         break;\r
1063 \r
1064                 case WM_COMMAND :\r
1065                         switch(GET_WM_COMMAND_ID(wParam, lParam))\r
1066                         {\r
1067                                 case CONNECT_RASCLOSE :\r
1068                                         if(SendDlgItemMessage(hDlg, CONNECT_RASCLOSE, BM_GETCHECK, 0, 0) == 1)\r
1069                                                 EnableWindow(GetDlgItem(hDlg, CONNECT_CLOSE_NOTIFY), TRUE);\r
1070                                         else\r
1071                                                 EnableWindow(GetDlgItem(hDlg, CONNECT_CLOSE_NOTIFY), FALSE);\r
1072                                         break;\r
1073                         }\r
1074                         return(TRUE);\r
1075         }\r
1076     return(FALSE);\r
1077 }\r
1078 \r
1079 \r
1080 /*----- FireWall\90Ý\92è\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ----------------------------------\r
1081 *\r
1082 *       Parameter\r
1083 *               HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
1084 *               UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
1085 *               WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
1086 *               LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
1087 *\r
1088 *       Return Value\r
1089 *               BOOL TRUE/FALSE\r
1090 *----------------------------------------------------------------------------*/\r
1091 \r
1092 static BOOL CALLBACK FireSettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
1093 {\r
1094         NMHDR *pnmhdr;\r
1095         char Tmp[10];\r
1096         int Num;\r
1097         static int Type;\r
1098         static const INTCONVTBL TypeTbl[] = {\r
1099                 { 0, 0 }, { 1, 1 }, { 2, 2 }, { 3, 8 }, \r
1100                 { 4, 3 }, { 5, 4 }, { 6, 5 }, { 7, 6 }, \r
1101                 { 8, 7 }, { 9, 9 }\r
1102         };\r
1103 \r
1104         static const int HideTbl[9][6] = {\r
1105                 { TRUE,  TRUE,  TRUE,  FALSE, TRUE,  FALSE },\r
1106                 { TRUE,  TRUE,  TRUE,  FALSE, FALSE, TRUE  },\r
1107                 { TRUE,  TRUE,  TRUE,  FALSE, FALSE, FALSE },\r
1108                 { FALSE, FALSE, FALSE, FALSE, FALSE, TRUE  },\r
1109                 { FALSE, FALSE, FALSE, FALSE, TRUE,  FALSE },\r
1110                 { TRUE,  FALSE, FALSE, FALSE, FALSE, FALSE },\r
1111                 { FALSE, FALSE, FALSE, TRUE,  FALSE, FALSE },\r
1112                 { TRUE,  TRUE,  FALSE, TRUE,  FALSE, FALSE },\r
1113                 { TRUE,  TRUE,  FALSE, FALSE, TRUE,  TRUE  }\r
1114         };\r
1115 \r
1116         switch (message)\r
1117         {\r
1118                 case WM_INITDIALOG :\r
1119                         Type = ConvertNum(FwallType, 1, TypeTbl, sizeof(TypeTbl)/sizeof(INTCONVTBL));\r
1120                         SendDlgItemMessage(hDlg, FIRE_TYPE, CB_ADDSTRING, 0, (LPARAM)MSGJPN204);\r
1121                         SendDlgItemMessage(hDlg, FIRE_TYPE, CB_ADDSTRING, 0, (LPARAM)MSGJPN205);\r
1122                         SendDlgItemMessage(hDlg, FIRE_TYPE, CB_ADDSTRING, 0, (LPARAM)MSGJPN206);\r
1123                         SendDlgItemMessage(hDlg, FIRE_TYPE, CB_ADDSTRING, 0, (LPARAM)MSGJPN207);\r
1124                         SendDlgItemMessage(hDlg, FIRE_TYPE, CB_ADDSTRING, 0, (LPARAM)MSGJPN208);\r
1125                         SendDlgItemMessage(hDlg, FIRE_TYPE, CB_ADDSTRING, 0, (LPARAM)MSGJPN209);\r
1126                         SendDlgItemMessage(hDlg, FIRE_TYPE, CB_ADDSTRING, 0, (LPARAM)MSGJPN210);\r
1127                         SendDlgItemMessage(hDlg, FIRE_TYPE, CB_ADDSTRING, 0, (LPARAM)MSGJPN211);\r
1128                         SendDlgItemMessage(hDlg, FIRE_TYPE, CB_ADDSTRING, 0, (LPARAM)MSGJPN294);\r
1129                         SendDlgItemMessage(hDlg, FIRE_TYPE, CB_SETCURSEL, Type-1, 0);\r
1130 \r
1131                         SendDlgItemMessage(hDlg, FIRE_HOST, EM_LIMITTEXT, HOST_ADRS_LEN, 0);\r
1132                         SendDlgItemMessage(hDlg, FIRE_USER, EM_LIMITTEXT, USER_NAME_LEN, 0);\r
1133                         SendDlgItemMessage(hDlg, FIRE_PASS, EM_LIMITTEXT, PASSWORD_LEN, 0);\r
1134                         SendDlgItemMessage(hDlg, FIRE_PORT, EM_LIMITTEXT, 5, 0);\r
1135                         SendDlgItemMessage(hDlg, FIRE_DELIMIT, EM_LIMITTEXT, 1, 0);\r
1136 \r
1137                         SendDlgItemMessage(hDlg, FIRE_HOST, WM_SETTEXT, 0, (LPARAM)FwallHost);\r
1138                         SendDlgItemMessage(hDlg, FIRE_USER, WM_SETTEXT, 0, (LPARAM)FwallUser);\r
1139                         SendDlgItemMessage(hDlg, FIRE_PASS, WM_SETTEXT, 0, (LPARAM)FwallPass);\r
1140                         sprintf(Tmp, "%d", FwallPort);\r
1141                         SendDlgItemMessage(hDlg, FIRE_PORT, WM_SETTEXT, 0, (LPARAM)Tmp);\r
1142                         sprintf(Tmp, "%c", FwallDelimiter);\r
1143                         SendDlgItemMessage(hDlg, FIRE_DELIMIT, WM_SETTEXT, 0, (LPARAM)Tmp);\r
1144 \r
1145                         SendDlgItemMessage(hDlg, FIRE_USEIT, BM_SETCHECK, FwallDefault, 0);\r
1146                         SendDlgItemMessage(hDlg, FIRE_PASV, BM_SETCHECK, PasvDefault, 0);\r
1147                         SendDlgItemMessage(hDlg, FIRE_RESOLV, BM_SETCHECK, FwallResolv, 0);\r
1148                         SendDlgItemMessage(hDlg, FIRE_LOWER, BM_SETCHECK, FwallLower, 0);\r
1149 \r
1150                         SendDlgItemMessage(hDlg, FIRE_SECURITY, CB_ADDSTRING, 0, (LPARAM)MSGJPN212);\r
1151                         SendDlgItemMessage(hDlg, FIRE_SECURITY, CB_ADDSTRING, 0, (LPARAM)MSGJPN213);\r
1152                         SendDlgItemMessage(hDlg, FIRE_SECURITY, CB_ADDSTRING, 0, (LPARAM)MSGJPN214);\r
1153                         SendDlgItemMessage(hDlg, FIRE_SECURITY, CB_ADDSTRING, 0, (LPARAM)MSGJPN215);\r
1154                         SendDlgItemMessage(hDlg, FIRE_SECURITY, CB_ADDSTRING, 0, (LPARAM)MSGJPN216);\r
1155                         SendDlgItemMessage(hDlg, FIRE_SECURITY, CB_SETCURSEL, FwallSecurity, 0);\r
1156                     return(TRUE);\r
1157 \r
1158                 case WM_NOTIFY:\r
1159                         pnmhdr = (NMHDR FAR *)lParam;\r
1160                         switch(pnmhdr->code)\r
1161                         {\r
1162                                 case PSN_APPLY :\r
1163                                         Type = SendDlgItemMessage(hDlg, FIRE_TYPE, CB_GETCURSEL, 0, 0) + 1;\r
1164                                         FwallType = ConvertNum(Type, 0, TypeTbl, sizeof(TypeTbl)/sizeof(INTCONVTBL));\r
1165                                         SendDlgItemMessage(hDlg, FIRE_HOST, WM_GETTEXT, HOST_ADRS_LEN+1, (LPARAM)FwallHost);\r
1166                                         SendDlgItemMessage(hDlg, FIRE_USER, WM_GETTEXT, USER_NAME_LEN+1, (LPARAM)FwallUser);\r
1167                                         SendDlgItemMessage(hDlg, FIRE_PASS, WM_GETTEXT, PASSWORD_LEN, (LPARAM)FwallPass);\r
1168                                         SendDlgItemMessage(hDlg, FIRE_PORT, WM_GETTEXT, 5+1, (LPARAM)Tmp);\r
1169                                         FwallPort = atoi(Tmp);\r
1170                                         SendDlgItemMessage(hDlg, FIRE_DELIMIT, WM_GETTEXT, 5, (LPARAM)Tmp);\r
1171                                         FwallDelimiter = Tmp[0];\r
1172                                         FwallDefault = SendDlgItemMessage(hDlg, FIRE_USEIT, BM_GETCHECK, 0, 0);\r
1173                                         PasvDefault = SendDlgItemMessage(hDlg, FIRE_PASV, BM_GETCHECK, 0, 0);\r
1174                                         FwallResolv = SendDlgItemMessage(hDlg, FIRE_RESOLV, BM_GETCHECK, 0, 0);\r
1175                                         FwallLower = SendDlgItemMessage(hDlg, FIRE_LOWER, BM_GETCHECK, 0, 0);\r
1176                                         FwallSecurity = SendDlgItemMessage(hDlg, FIRE_SECURITY, CB_GETCURSEL, 0, 0);\r
1177                                         break;\r
1178 \r
1179                                 case PSN_RESET :\r
1180                                         break;\r
1181 \r
1182                                 case PSN_HELP :\r
1183                                         hHelpWin = HtmlHelp(NULL, AskHelpFilePath(), HH_HELP_CONTEXT, IDH_HELP_TOPIC_0000049);\r
1184                                         break;\r
1185                         }\r
1186                         break;\r
1187 \r
1188                 case WM_COMMAND :\r
1189                         switch(GET_WM_COMMAND_ID(wParam, lParam))\r
1190                         {\r
1191                                 case FIRE_TYPE :\r
1192                                         Num = SendDlgItemMessage(hDlg, FIRE_TYPE, CB_GETCURSEL, 0, 0);\r
1193                                         EnableWindow(GetDlgItem(hDlg, FIRE_USER), HideTbl[Num][0]);\r
1194                                         EnableWindow(GetDlgItem(hDlg, FIRE_PASS), HideTbl[Num][1]);\r
1195                                         EnableWindow(GetDlgItem(hDlg, FIRE_SECURITY), HideTbl[Num][2]);\r
1196                                         EnableWindow(GetDlgItem(hDlg, FIRE_RESOLV), HideTbl[Num][3]);\r
1197                                         EnableWindow(GetDlgItem(hDlg, FIRE_LOWER), HideTbl[Num][4]);\r
1198                                         EnableWindow(GetDlgItem(hDlg, FIRE_DELIMIT), HideTbl[Num][5]);\r
1199                                         break;\r
1200                         }\r
1201                         return(TRUE);\r
1202         }\r
1203     return(FALSE);\r
1204 }\r
1205 \r
1206 \r
1207 /*----- \83c\81[\83\8b\90Ý\92è\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ------------------------------------\r
1208 *\r
1209 *       Parameter\r
1210 *               HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
1211 *               UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
1212 *               WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
1213 *               LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
1214 *\r
1215 *       Return Value\r
1216 *               BOOL TRUE/FALSE\r
1217 *----------------------------------------------------------------------------*/\r
1218 \r
1219 static BOOL CALLBACK ToolSettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
1220 {\r
1221         NMHDR *pnmhdr;\r
1222         char Tmp[FMAX_PATH+1];\r
1223 \r
1224         switch (message)\r
1225         {\r
1226                 case WM_INITDIALOG :\r
1227                         SendDlgItemMessage(hDlg, TOOL_EDITOR1, EM_LIMITTEXT, FMAX_PATH, 0);\r
1228                         SendDlgItemMessage(hDlg, TOOL_EDITOR2, EM_LIMITTEXT, FMAX_PATH, 0);\r
1229                         SendDlgItemMessage(hDlg, TOOL_EDITOR3, EM_LIMITTEXT, FMAX_PATH, 0);\r
1230                         SendDlgItemMessage(hDlg, TOOL_EDITOR1, WM_SETTEXT, 0, (LPARAM)ViewerName[0]);\r
1231                         SendDlgItemMessage(hDlg, TOOL_EDITOR2, WM_SETTEXT, 0, (LPARAM)ViewerName[1]);\r
1232                         SendDlgItemMessage(hDlg, TOOL_EDITOR3, WM_SETTEXT, 0, (LPARAM)ViewerName[2]);\r
1233                     return(TRUE);\r
1234 \r
1235                 case WM_NOTIFY:\r
1236                         pnmhdr = (NMHDR FAR *)lParam;\r
1237                         switch(pnmhdr->code)\r
1238                         {\r
1239                                 case PSN_APPLY :\r
1240                                         SendDlgItemMessage(hDlg, TOOL_EDITOR1, WM_GETTEXT, FMAX_PATH+1, (LPARAM)ViewerName[0]);\r
1241                                         SendDlgItemMessage(hDlg, TOOL_EDITOR2, WM_GETTEXT, FMAX_PATH+1, (LPARAM)ViewerName[1]);\r
1242                                         SendDlgItemMessage(hDlg, TOOL_EDITOR3, WM_GETTEXT, FMAX_PATH+1, (LPARAM)ViewerName[2]);\r
1243                                         break;\r
1244 \r
1245                                 case PSN_RESET :\r
1246                                         break;\r
1247 \r
1248                                 case PSN_HELP :\r
1249                                         hHelpWin = HtmlHelp(NULL, AskHelpFilePath(), HH_HELP_CONTEXT, IDH_HELP_TOPIC_0000050);\r
1250                                         break;\r
1251                         }\r
1252                         break;\r
1253 \r
1254                 case WM_COMMAND :\r
1255                         switch(GET_WM_COMMAND_ID(wParam, lParam))\r
1256                         {\r
1257                                 case TOOL_EDITOR1_BR :\r
1258                                 case TOOL_EDITOR2_BR :\r
1259                                 case TOOL_EDITOR3_BR :\r
1260                                         strcpy(Tmp, "");\r
1261                                         if(SelectFile(hDlg, Tmp, MSGJPN217, MSGJPN218, NULL, OFN_FILEMUSTEXIST, 0) == TRUE)\r
1262                                         {\r
1263                                                 switch(GET_WM_COMMAND_ID(wParam, lParam))\r
1264                                                 {\r
1265                                                         case TOOL_EDITOR1_BR :\r
1266                                                                 SendDlgItemMessage(hDlg, TOOL_EDITOR1, WM_SETTEXT, 0, (LPARAM)Tmp);\r
1267                                                                 break;\r
1268 \r
1269                                                         case TOOL_EDITOR2_BR :\r
1270                                                                 SendDlgItemMessage(hDlg, TOOL_EDITOR2, WM_SETTEXT, 0, (LPARAM)Tmp);\r
1271                                                                 break;\r
1272 \r
1273                                                         case TOOL_EDITOR3_BR :\r
1274                                                                 SendDlgItemMessage(hDlg, TOOL_EDITOR3, WM_SETTEXT, 0, (LPARAM)Tmp);\r
1275                                                                 break;\r
1276                                                 }\r
1277                                         }\r
1278                                         break;\r
1279                         }\r
1280                         return(TRUE);\r
1281         }\r
1282     return(FALSE);\r
1283 }\r
1284 \r
1285 \r
1286 /*----- \83T\83E\83\93\83h\90Ý\92è\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ----------------------------------\r
1287 *\r
1288 *       Parameter\r
1289 *               HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
1290 *               UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
1291 *               WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
1292 *               LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
1293 *\r
1294 *       Return Value\r
1295 *               BOOL TRUE/FALSE\r
1296 *----------------------------------------------------------------------------*/\r
1297 \r
1298 static BOOL CALLBACK SoundSettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
1299 {\r
1300         NMHDR *pnmhdr;\r
1301         char Tmp[FMAX_PATH+1];\r
1302 \r
1303         switch (message)\r
1304         {\r
1305                 case WM_INITDIALOG :\r
1306                         SendDlgItemMessage(hDlg, SOUND_CONNECT, BM_SETCHECK, Sound[SND_CONNECT].On, 0);\r
1307                         SendDlgItemMessage(hDlg, SOUND_TRANS, BM_SETCHECK, Sound[SND_TRANS].On, 0);\r
1308                         SendDlgItemMessage(hDlg, SOUND_ERROR, BM_SETCHECK, Sound[SND_ERROR].On, 0);\r
1309 \r
1310                         SendDlgItemMessage(hDlg, SOUND_CONNECT_WAV, EM_LIMITTEXT, (WPARAM)FMAX_PATH, 0);\r
1311                         SendDlgItemMessage(hDlg, SOUND_TRANS_WAV, EM_LIMITTEXT, (WPARAM)FMAX_PATH, 0);\r
1312                         SendDlgItemMessage(hDlg, SOUND_ERROR_WAV, EM_LIMITTEXT, (WPARAM)FMAX_PATH, 0);\r
1313                         SendDlgItemMessage(hDlg, SOUND_CONNECT_WAV, WM_SETTEXT, 0, (LPARAM)Sound[SND_CONNECT].Fname);\r
1314                         SendDlgItemMessage(hDlg, SOUND_TRANS_WAV, WM_SETTEXT, 0, (LPARAM)Sound[SND_TRANS].Fname);\r
1315                         SendDlgItemMessage(hDlg, SOUND_ERROR_WAV, WM_SETTEXT, 0, (LPARAM)Sound[SND_ERROR].Fname);\r
1316                     return(TRUE);\r
1317 \r
1318                 case WM_NOTIFY:\r
1319                         pnmhdr = (NMHDR FAR *)lParam;\r
1320                         switch(pnmhdr->code)\r
1321                         {\r
1322                                 case PSN_APPLY :\r
1323                                         Sound[SND_CONNECT].On = SendDlgItemMessage(hDlg, SOUND_CONNECT, BM_GETCHECK, 0, 0);\r
1324                                         Sound[SND_TRANS].On = SendDlgItemMessage(hDlg, SOUND_TRANS, BM_GETCHECK, 0, 0);\r
1325                                         Sound[SND_ERROR].On = SendDlgItemMessage(hDlg, SOUND_ERROR, BM_GETCHECK, 0, 0);\r
1326                                         SendDlgItemMessage(hDlg, SOUND_CONNECT_WAV, WM_GETTEXT, FMAX_PATH+1, (LPARAM)Sound[SND_CONNECT].Fname);\r
1327                                         SendDlgItemMessage(hDlg, SOUND_TRANS_WAV, WM_GETTEXT, FMAX_PATH+1, (LPARAM)Sound[SND_TRANS].Fname);\r
1328                                         SendDlgItemMessage(hDlg, SOUND_ERROR_WAV, WM_GETTEXT, FMAX_PATH+1, (LPARAM)Sound[SND_ERROR].Fname);\r
1329                                         break;\r
1330 \r
1331                                 case PSN_RESET :\r
1332                                         break;\r
1333 \r
1334                                 case PSN_HELP :\r
1335                                         hHelpWin = HtmlHelp(NULL, AskHelpFilePath(), HH_HELP_CONTEXT, IDH_HELP_TOPIC_0000051);\r
1336                                         break;\r
1337                         }\r
1338                         break;\r
1339 \r
1340                 case WM_COMMAND :\r
1341                         switch(GET_WM_COMMAND_ID(wParam, lParam))\r
1342                         {\r
1343                                 case SOUND_CONNECT_BR :\r
1344                                 case SOUND_TRANS_BR :\r
1345                                 case SOUND_ERROR_BR :\r
1346                                         strcpy(Tmp, "");\r
1347                                         if(SelectFile(hDlg, Tmp, MSGJPN219, MSGJPN277, NULL, OFN_FILEMUSTEXIST, 0) == TRUE)\r
1348                                         {\r
1349                                                 switch(GET_WM_COMMAND_ID(wParam, lParam))\r
1350                                                 {\r
1351                                                         case SOUND_CONNECT_BR :\r
1352                                                                 SendDlgItemMessage(hDlg, SOUND_CONNECT_WAV, WM_SETTEXT, 0, (LPARAM)Tmp);\r
1353                                                                 break;\r
1354 \r
1355                                                         case SOUND_TRANS_BR :\r
1356                                                                 SendDlgItemMessage(hDlg, SOUND_TRANS_WAV, WM_SETTEXT, 0, (LPARAM)Tmp);\r
1357                                                                 break;\r
1358 \r
1359                                                         case SOUND_ERROR_BR :\r
1360                                                                 SendDlgItemMessage(hDlg, SOUND_ERROR_WAV, WM_SETTEXT, 0, (LPARAM)Tmp);\r
1361                                                                 break;\r
1362                                                 }\r
1363                                         }\r
1364                                         break;\r
1365 \r
1366                                 case SOUND_CONNECT_TEST :\r
1367                                         SendDlgItemMessage(hDlg, SOUND_CONNECT_WAV, WM_GETTEXT, FMAX_PATH+1, (LPARAM)Tmp);\r
1368                                         sndPlaySound(Tmp, SND_ASYNC | SND_NODEFAULT);\r
1369                                         break;\r
1370 \r
1371                                 case SOUND_TRANS_TEST :\r
1372                                         SendDlgItemMessage(hDlg, SOUND_TRANS_WAV, WM_GETTEXT, FMAX_PATH+1, (LPARAM)Tmp);\r
1373                                         sndPlaySound(Tmp, SND_ASYNC | SND_NODEFAULT);\r
1374                                         break;\r
1375 \r
1376                                 case SOUND_ERROR_TEST :\r
1377                                         SendDlgItemMessage(hDlg, SOUND_ERROR_WAV, WM_GETTEXT, FMAX_PATH+1, (LPARAM)Tmp);\r
1378                                         sndPlaySound(Tmp, SND_ASYNC | SND_NODEFAULT);\r
1379                                         break;\r
1380                         }\r
1381                         return(TRUE);\r
1382         }\r
1383     return(FALSE);\r
1384 }\r
1385 \r
1386 \r
1387 /*----- \82»\82Ì\91¼\82Ì\90Ý\92è\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ----------------------------------\r
1388 *\r
1389 *       Parameter\r
1390 *               HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
1391 *               UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
1392 *               WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
1393 *               LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
1394 *\r
1395 *       Return Value\r
1396 *               BOOL TRUE/FALSE\r
1397 *----------------------------------------------------------------------------*/\r
1398 \r
1399 static BOOL CALLBACK MiscSettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
1400 {\r
1401         NMHDR *pnmhdr;\r
1402         char Tmp[FMAX_PATH+1];\r
1403 \r
1404         switch (message)\r
1405         {\r
1406                 case WM_INITDIALOG :\r
1407                         SendDlgItemMessage(hDlg, MISC_WINPOS, BM_SETCHECK, SaveWinPos, 0);\r
1408                         SendDlgItemMessage(hDlg, MISC_DEBUG, BM_SETCHECK, DebugConsole, 0);\r
1409                         SendDlgItemMessage(hDlg, MISC_REGTYPE, BM_SETCHECK, RegType, 0);\r
1410 \r
1411                         SendDlgItemMessage(hDlg, MISC_CACHE_SAVE, BM_SETCHECK, CacheSave, 0);\r
1412                         SendDlgItemMessage(hDlg, MISC_BUFNUM, EM_LIMITTEXT, (WPARAM)2, 0);\r
1413                         SetDecimalText(hDlg, MISC_BUFNUM, abs(CacheEntry));\r
1414                         SendDlgItemMessage(hDlg, MISC_BUFNUM_SPIN, UDM_SETRANGE, 0, (LPARAM)MAKELONG(99, 1));\r
1415                         if(CacheEntry > 0)\r
1416                         {\r
1417                                 SendDlgItemMessage(hDlg, MISC_CACHE, BM_SETCHECK, 1, 0);\r
1418                                 EnableWindow(GetDlgItem(hDlg, MISC_BUFNUM), TRUE);\r
1419                                 EnableWindow(GetDlgItem(hDlg, MISC_CACHE_SAVE), TRUE);\r
1420                         }\r
1421                         else\r
1422                         {\r
1423                                 SendDlgItemMessage(hDlg, MISC_CACHE, BM_SETCHECK, 0, 0);\r
1424                                 EnableWindow(GetDlgItem(hDlg, MISC_BUFNUM), FALSE);\r
1425                                 EnableWindow(GetDlgItem(hDlg, MISC_CACHE_SAVE), FALSE);\r
1426                         }\r
1427 \r
1428                         SendDlgItemMessage(hDlg, MISC_CACHEDIR, EM_LIMITTEXT, (WPARAM)FMAX_PATH, 0);\r
1429                         SendDlgItemMessage(hDlg, MISC_CACHEDIR, WM_SETTEXT, 0, (LPARAM)TmpPath);\r
1430                     return(TRUE);\r
1431 \r
1432                 case WM_NOTIFY:\r
1433                         pnmhdr = (NMHDR FAR *)lParam;\r
1434                         switch(pnmhdr->code)\r
1435                         {\r
1436                                 case PSN_APPLY :\r
1437                                         SaveWinPos = SendDlgItemMessage(hDlg, MISC_WINPOS, BM_GETCHECK, 0, 0);\r
1438                                         DebugConsole = SendDlgItemMessage(hDlg, MISC_DEBUG, BM_GETCHECK, 0, 0);\r
1439                                         RegType = SendDlgItemMessage(hDlg, MISC_REGTYPE, BM_GETCHECK, 0, 0);\r
1440 \r
1441                                         CacheSave = SendDlgItemMessage(hDlg, MISC_CACHE_SAVE, BM_GETCHECK, 0, 0);\r
1442                                         CacheEntry = GetDecimalText(hDlg, MISC_BUFNUM);\r
1443                                         if(SendDlgItemMessage(hDlg, MISC_CACHE, BM_GETCHECK, 0, 0) == 0)\r
1444                                                 CacheEntry = -CacheEntry;\r
1445 \r
1446                                         SendDlgItemMessage(hDlg, MISC_CACHEDIR, WM_GETTEXT, FMAX_PATH+1, (LPARAM)TmpPath);\r
1447                                         break;\r
1448 \r
1449                                 case PSN_RESET :\r
1450                                         break;\r
1451 \r
1452                                 case PSN_HELP :\r
1453                                         hHelpWin = HtmlHelp(NULL, AskHelpFilePath(), HH_HELP_CONTEXT, IDH_HELP_TOPIC_0000052);\r
1454                                         break;\r
1455                         }\r
1456                         break;\r
1457 \r
1458                 case WM_COMMAND :\r
1459                         switch(GET_WM_COMMAND_ID(wParam, lParam))\r
1460                         {\r
1461                                 case MISC_CACHE :\r
1462                                         if(SendDlgItemMessage(hDlg, MISC_CACHE, BM_GETCHECK, 0, 0) == 1)\r
1463                                         {\r
1464                                                 EnableWindow(GetDlgItem(hDlg, TRMODE_EXT), TRUE);\r
1465                                                 EnableWindow(GetDlgItem(hDlg, MISC_CACHE_SAVE), TRUE);\r
1466                                         }\r
1467                                         else\r
1468                                         {\r
1469                                                 EnableWindow(GetDlgItem(hDlg, TRMODE_EXT), FALSE);\r
1470                                                 EnableWindow(GetDlgItem(hDlg, MISC_CACHE_SAVE), FALSE);\r
1471                                         }\r
1472                                         break;\r
1473 \r
1474                                 case MISC_CACHEDIR_BR :\r
1475                                         if(SelectDir(hDlg, Tmp, FMAX_PATH) == TRUE)\r
1476                                                 SendDlgItemMessage(hDlg, MISC_CACHEDIR, WM_SETTEXT, 0, (LPARAM)Tmp);\r
1477                                         break;\r
1478 \r
1479                                 case MISC_CACHEDIR_DEF :\r
1480                                         GetTempPath(FMAX_PATH, Tmp);\r
1481                                         SendDlgItemMessage(hDlg, MISC_CACHEDIR, WM_SETTEXT, 0, (LPARAM)Tmp);\r
1482                                         break;\r
1483                         }\r
1484                         return(TRUE);\r
1485         }\r
1486     return(FALSE);\r
1487 }\r
1488 \r
1489 \r
1490 /*----- \83\\81[\83g\90Ý\92è\83E\83C\83\93\83h\83E --------------------------------------------------\r
1491 *\r
1492 *       Parameter\r
1493 *               \82È\82µ\r
1494 *\r
1495 *       Return Value\r
1496 *               int \83X\83e\81[\83^\83X (YES=\8eÀ\8ds/NO=\8eæ\8fÁ)\r
1497 *----------------------------------------------------------------------------*/\r
1498 \r
1499 int SortSetting(void)\r
1500 {\r
1501         int Sts;\r
1502 \r
1503         Sts = DialogBox(GetFtpInst(), MAKEINTRESOURCE(sort_dlg), GetMainHwnd(), SortSettingProc);\r
1504         return(Sts);\r
1505 }\r
1506 \r
1507 \r
1508 /*----- \83\\81[\83g\90Ý\92è\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ------------------------------------\r
1509 *\r
1510 *       Parameter\r
1511 *               HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
1512 *               UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
1513 *               WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
1514 *               LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
1515 *\r
1516 *       Return Value\r
1517 *               BOOL TRUE/FALSE\r
1518 *----------------------------------------------------------------------------*/\r
1519 \r
1520 static BOOL CALLBACK SortSettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
1521 {\r
1522         int LFsort;\r
1523         int LDsort;\r
1524         int RFsort;\r
1525         int RDsort;\r
1526 \r
1527         static const RADIOBUTTON LsortOrdButton[] = {\r
1528                 { SORT_LFILE_NAME, SORT_NAME },\r
1529                 { SORT_LFILE_EXT, SORT_EXT },\r
1530                 { SORT_LFILE_SIZE, SORT_SIZE },\r
1531                 { SORT_LFILE_DATE, SORT_DATE }\r
1532         };\r
1533         #define LSORTORDBUTTONS (sizeof(LsortOrdButton)/sizeof(RADIOBUTTON))\r
1534 \r
1535         static const RADIOBUTTON LDirsortOrdButton[] = {\r
1536                 { SORT_LDIR_NAME, SORT_NAME },\r
1537                 { SORT_LDIR_DATE, SORT_DATE }\r
1538         };\r
1539         #define LDIRSORTORDBUTTONS      (sizeof(LDirsortOrdButton)/sizeof(RADIOBUTTON))\r
1540 \r
1541         static const RADIOBUTTON RsortOrdButton[] = {\r
1542                 { SORT_RFILE_NAME, SORT_NAME },\r
1543                 { SORT_RFILE_EXT, SORT_EXT },\r
1544                 { SORT_RFILE_SIZE, SORT_SIZE },\r
1545                 { SORT_RFILE_DATE, SORT_DATE }\r
1546         };\r
1547         #define RSORTORDBUTTONS (sizeof(RsortOrdButton)/sizeof(RADIOBUTTON))\r
1548 \r
1549         static const RADIOBUTTON RDirsortOrdButton[] = {\r
1550                 { SORT_RDIR_NAME, SORT_NAME },\r
1551                 { SORT_RDIR_DATE, SORT_DATE }\r
1552         };\r
1553         #define RDIRSORTORDBUTTONS      (sizeof(RDirsortOrdButton)/sizeof(RADIOBUTTON))\r
1554 \r
1555         switch (message)\r
1556         {\r
1557                 case WM_INITDIALOG :\r
1558 \r
1559                         SetRadioButtonByValue(hDlg, AskSortType(ITEM_LFILE) & SORT_MASK_ORD, LsortOrdButton, LSORTORDBUTTONS);\r
1560 \r
1561                         if((AskSortType(ITEM_LFILE) & SORT_GET_ORD) == SORT_ASCENT)\r
1562                                 SendDlgItemMessage(hDlg, SORT_LFILE_REV, BM_SETCHECK, 0, 0);\r
1563                         else\r
1564                                 SendDlgItemMessage(hDlg, SORT_LFILE_REV, BM_SETCHECK, 1, 0);\r
1565 \r
1566                         SetRadioButtonByValue(hDlg, AskSortType(ITEM_LDIR) & SORT_MASK_ORD, LDirsortOrdButton, LDIRSORTORDBUTTONS);\r
1567 \r
1568                         if((AskSortType(ITEM_LDIR) & SORT_GET_ORD) == SORT_ASCENT)\r
1569                                 SendDlgItemMessage(hDlg, SORT_LDIR_REV, BM_SETCHECK, 0, 0);\r
1570                         else\r
1571                                 SendDlgItemMessage(hDlg, SORT_LDIR_REV, BM_SETCHECK, 1, 0);\r
1572 \r
1573                         SetRadioButtonByValue(hDlg, AskSortType(ITEM_RFILE) & SORT_MASK_ORD, RsortOrdButton, RSORTORDBUTTONS);\r
1574 \r
1575                         if((AskSortType(ITEM_RFILE) & SORT_GET_ORD) == SORT_ASCENT)\r
1576                                 SendDlgItemMessage(hDlg, SORT_RFILE_REV, BM_SETCHECK, 0, 0);\r
1577                         else\r
1578                                 SendDlgItemMessage(hDlg, SORT_RFILE_REV, BM_SETCHECK, 1, 0);\r
1579 \r
1580                         SetRadioButtonByValue(hDlg, AskSortType(ITEM_RDIR) & SORT_MASK_ORD, RDirsortOrdButton, RDIRSORTORDBUTTONS);\r
1581 \r
1582                         if((AskSortType(ITEM_RDIR) & SORT_GET_ORD) == SORT_ASCENT)\r
1583                                 SendDlgItemMessage(hDlg, SORT_RDIR_REV, BM_SETCHECK, 0, 0);\r
1584                         else\r
1585                                 SendDlgItemMessage(hDlg, SORT_RDIR_REV, BM_SETCHECK, 1, 0);\r
1586 \r
1587                         SendDlgItemMessage(hDlg, SORT_SAVEHOST, BM_SETCHECK, AskSaveSortToHost(), 0);\r
1588 \r
1589                     return(TRUE);\r
1590 \r
1591                 case WM_COMMAND :\r
1592                         switch(GET_WM_COMMAND_ID(wParam, lParam))\r
1593                         {\r
1594                                 case IDOK :\r
1595                                         LFsort = AskRadioButtonValue(hDlg, LsortOrdButton, LSORTORDBUTTONS);\r
1596 \r
1597                                         if(SendDlgItemMessage(hDlg, SORT_LFILE_REV, BM_GETCHECK, 0, 0) == 1)\r
1598                                                 LFsort |= SORT_DESCENT;\r
1599 \r
1600                                         LDsort = AskRadioButtonValue(hDlg, LDirsortOrdButton, LDIRSORTORDBUTTONS);\r
1601 \r
1602                                         if(SendDlgItemMessage(hDlg, SORT_LDIR_REV, BM_GETCHECK, 0, 0) == 1)\r
1603                                                 LDsort |= SORT_DESCENT;\r
1604 \r
1605                                         RFsort = AskRadioButtonValue(hDlg, RsortOrdButton, RSORTORDBUTTONS);\r
1606 \r
1607                                         if(SendDlgItemMessage(hDlg, SORT_RFILE_REV, BM_GETCHECK, 0, 0) == 1)\r
1608                                                 RFsort |= SORT_DESCENT;\r
1609 \r
1610                                         RDsort = AskRadioButtonValue(hDlg, RDirsortOrdButton, RDIRSORTORDBUTTONS);\r
1611 \r
1612                                         if(SendDlgItemMessage(hDlg, SORT_RDIR_REV, BM_GETCHECK, 0, 0) == 1)\r
1613                                                 RDsort |= SORT_DESCENT;\r
1614 \r
1615                                         SetSortTypeImm(LFsort, LDsort, RFsort, RDsort);\r
1616 \r
1617                                         SetSaveSortToHost(SendDlgItemMessage(hDlg, SORT_SAVEHOST, BM_GETCHECK, 0, 0));\r
1618 \r
1619                                         EndDialog(hDlg, YES);\r
1620                                         break;\r
1621 \r
1622                                 case IDCANCEL :\r
1623                                         EndDialog(hDlg, NO);\r
1624                                         break;\r
1625         \r
1626                                 case IDHELP :\r
1627                                         hHelpWin = HtmlHelp(NULL, AskHelpFilePath(), HH_HELP_CONTEXT, IDH_HELP_TOPIC_0000001);\r
1628                                         break;\r
1629                 }\r
1630                         return(TRUE);\r
1631         }\r
1632     return(FALSE);\r
1633 }\r
1634 \r
1635 \r
1636 /*----- \83_\83C\83A\83\8d\83O\82Ì\83R\83\93\83g\83\8d\81[\83\8b\82©\82ç\82P\82O\90i\90\94\82ð\8eæ\93¾ ----------------------------\r
1637 *\r
1638 *       Parameter\r
1639 *               HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
1640 *               int Ctrl : \83R\83\93\83g\83\8d\81[\83\8b\82ÌID\r
1641 *\r
1642 *       Return Value\r
1643 *               \82È\82µ\r
1644 *----------------------------------------------------------------------------*/\r
1645 \r
1646 static int GetDecimalText(HWND hDlg, int Ctrl)\r
1647 {\r
1648         char Tmp[40];\r
1649 \r
1650         SendDlgItemMessage(hDlg, Ctrl, WM_GETTEXT, (WPARAM)39, (LPARAM)Tmp);\r
1651         return(atoi(Tmp));\r
1652 }\r
1653 \r
1654 \r
1655 /*----- \83_\83C\83A\83\8d\83O\82Ì\83R\83\93\83g\83\8d\81[\83\8b\82É\82P\82O\90i\90\94\82ð\83Z\83b\83g ----------------------------\r
1656 *\r
1657 *       Parameter\r
1658 *               HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
1659 *               int Ctrl : \83R\83\93\83g\83\8d\81[\83\8b\82ÌID\r
1660 *               int Num : \90\94\92l\r
1661 *\r
1662 *       Return Value\r
1663 *               \82È\82µ\r
1664 *----------------------------------------------------------------------------*/\r
1665 \r
1666 static void SetDecimalText(HWND hDlg, int Ctrl, int Num)\r
1667 {\r
1668         char Tmp[40];\r
1669 \r
1670         sprintf(Tmp, "%d", Num);\r
1671         SendDlgItemMessage(hDlg, Ctrl, WM_SETTEXT, 0, (LPARAM)Tmp);\r
1672         return;\r
1673 }\r
1674 \r
1675 \r
1676 /*----- \90Ý\92è\92l\82Ì\94Í\88Í\83`\83F\83b\83N --------------------------------------------------\r
1677 *\r
1678 *       Parameter\r
1679 *               int *Cur : \90Ý\92è\92l\r
1680 *               int Max : \8dÅ\91å\92l\r
1681 *               int Min : \8dÅ\8f¬\92l\r
1682 *\r
1683 *       Return Value\r
1684 *               \82È\82µ\r
1685 *\r
1686 *       Parameter change\r
1687 *               int *Cur : \90Ý\92è\92l\r
1688 *----------------------------------------------------------------------------*/\r
1689 \r
1690 static void CheckRange2(int *Cur, int Max, int Min)\r
1691 {\r
1692         if(*Cur < Min)\r
1693                 *Cur = Min;\r
1694         if(*Cur > Max)\r
1695                 *Cur = Max;\r
1696         return;\r
1697 }\r
1698 \r
1699 \r
1700 /*----- \95\8e\9a\97ñ\82ð\83\8a\83X\83g\83{\83b\83N\83X\82É\92Ç\89Á ------------------------------------------\r
1701 *\r
1702 *       Parameter\r
1703 *               HWND hDlg : \83_\83C\83A\83\8d\83O\83{\83b\83N\83X\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
1704 *               char *Str : \95\8e\9a\97ñ\r
1705 *               int CtrlList : \83\8a\83X\83g\83{\83b\83N\83X\82ÌID\r
1706 *               int BufSize : \83o\83b\83t\83@\83T\83C\83Y\r
1707 *\r
1708 *       Return Value\r
1709 *               \82È\82µ\r
1710 *----------------------------------------------------------------------------*/\r
1711 \r
1712 static void AddTextToListBox(HWND hDlg, char *Str, int CtrlList, int BufSize)\r
1713 {\r
1714         char Tmp[FMAX_PATH+1];\r
1715         int Num;\r
1716         int i;\r
1717         int Len;\r
1718 \r
1719         Len = strlen(Str);\r
1720         if(Len > 0)\r
1721         {\r
1722                 Len++;\r
1723                 Num = SendDlgItemMessage(hDlg, CtrlList, LB_GETCOUNT, 0, 0);\r
1724                 for(i = 0; i < Num; i++)\r
1725                 {\r
1726                         SendDlgItemMessage(hDlg, CtrlList, LB_GETTEXT, i, (LPARAM)Tmp);\r
1727                         Len += strlen(Tmp) + 1;\r
1728                 }\r
1729 \r
1730                 if(Len > (BufSize-1))\r
1731                         MessageBeep(-1);\r
1732                 else\r
1733                         SendDlgItemMessage(hDlg, CtrlList, LB_ADDSTRING, 0, (LPARAM)Str);\r
1734         }\r
1735         return;\r
1736 }\r
1737 \r
1738 \r
1739 /*----- \83}\83\8b\83`\95\8e\9a\97ñ\82ð\83\8a\83X\83g\83{\83b\83N\83X\82É\83Z\83b\83g ----------------------------------\r
1740 *\r
1741 *       Parameter\r
1742 *               HWND hDlg : \83_\83C\83A\83\8d\83O\83{\83b\83N\83X\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
1743 *               int CtrlList : \83\8a\83X\83g\83{\83b\83N\83X\82ÌID\r
1744 *               char *Text : \95\8e\9a\97ñ\r
1745 *\r
1746 *       Return Value\r
1747 *               \82È\82µ\r
1748 *----------------------------------------------------------------------------*/\r
1749 \r
1750 static void SetMultiTextToList(HWND hDlg, int CtrlList, char *Text)\r
1751 {\r
1752         char *Pos;\r
1753 \r
1754         Pos = Text;\r
1755         while(*Pos != NUL)\r
1756         {\r
1757                 SendDlgItemMessage(hDlg, CtrlList, LB_ADDSTRING, 0, (LPARAM)Pos);\r
1758                 Pos += strlen(Pos) + 1;\r
1759         }\r
1760         return;\r
1761 }\r
1762 \r
1763 \r
1764 /*----- \83\8a\83X\83g\83{\83b\83N\83X\82Ì\93à\97e\82ð\83}\83\8b\83`\95\8e\9a\97ñ\82É\82·\82é ------------------------------\r
1765 *\r
1766 *       Parameter\r
1767 *               HWND hDlg : \83_\83C\83A\83\8d\83O\83{\83b\83N\83X\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
1768 *               int CtrlList : \83\8a\83X\83g\83{\83b\83N\83X\82ÌID\r
1769 *               char *Buf : \95\8e\9a\97ñ\82ð\83Z\83b\83g\82·\82é\83o\83b\83t\83@\r
1770 *               int BufSize : \83o\83b\83t\83@\82Ì\83T\83C\83Y\r
1771 *\r
1772 *       Return Value\r
1773 *               \82È\82µ\r
1774 *----------------------------------------------------------------------------*/\r
1775 \r
1776 static void GetMultiTextFromList(HWND hDlg, int CtrlList, char *Buf, int BufSize)\r
1777 {\r
1778         char Tmp[FMAX_PATH+1];\r
1779         int Num;\r
1780         int i;\r
1781 \r
1782         memset(Buf, NUL, BufSize);\r
1783         Num = SendDlgItemMessage(hDlg, CtrlList, LB_GETCOUNT, 0, 0);\r
1784         for(i = 0; i < Num; i++)\r
1785         {\r
1786                 SendDlgItemMessage(hDlg, CtrlList, LB_GETTEXT, i, (LPARAM)Tmp);\r
1787                 strcpy(Buf + StrMultiLen(Buf), Tmp);\r
1788         }\r
1789         return;\r
1790 }\r
1791 \r
1792 \r