OSDN Git Service

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