OSDN Git Service

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