OSDN Git Service

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