OSDN Git Service

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