OSDN Git Service

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