• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
Aucun tag

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

FFFTPのソースコードです。


Commit MetaInfo

Révision791b047f2c0c10f5d5cc09db8d642191c5c23a83 (tree)
l'heure2011-09-09 00:05:08
Auteurs_kawamoto <s_kawamoto@user...>
Commiters_kawamoto

Message de Log

Add UTF-8 to UTF-16 API bridge.
Change internal chars to UTF-8.
Add support for UTF-8 to text transfer mode.
Add support for UTF-8 filenames (some buggy).
Add UIs for UTF-8.

Change Summary

Modification

Binary files a/FFFTP.exe and b/FFFTP.exe differ
--- a/FFFTP.vc90.vcproj
+++ b/FFFTP.vc90.vcproj
@@ -283,6 +283,10 @@
283283 >
284284 </File>
285285 <File
286+ RelativePath=".\mbswrapper.c"
287+ >
288+ </File>
289+ <File
286290 RelativePath=".\md4.c"
287291 >
288292 </File>
@@ -364,6 +368,10 @@
364368 >
365369 </File>
366370 <File
371+ RelativePath=".\mbswrapper.h"
372+ >
373+ </File>
374+ <File
367375 RelativePath=".\Resource\resource.h"
368376 >
369377 </File>
--- a/FFFTP_English.vc90.vcproj
+++ b/FFFTP_English.vc90.vcproj
@@ -283,6 +283,10 @@
283283 >
284284 </File>
285285 <File
286+ RelativePath=".\mbswrapper.c"
287+ >
288+ </File>
289+ <File
286290 RelativePath=".\md4.c"
287291 >
288292 </File>
@@ -364,6 +368,10 @@
364368 >
365369 </File>
366370 <File
371+ RelativePath=".\mbswrapper.h"
372+ >
373+ </File>
374+ <File
367375 RelativePath=".\Resource_eng\resource.h"
368376 >
369377 </File>
Binary files a/Resource/FFFTP.APS and b/Resource/FFFTP.APS differ
--- a/Resource/FFFTP.rc
+++ b/Resource/FFFTP.rc
@@ -725,19 +725,22 @@ hset_code_dlg DIALOGEX 0, 0, 207, 139
725725 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
726726 FONT 9, "MS Pゴシック", 0, 0, 0x0
727727 BEGIN
728- GROUPBOX "ホストの漢字コード(&K)",-1,7,7,98,70,WS_GROUP
729- CONTROL "無変換 (SHIFT-JIS)",HSET_NO_CNV,"Button",BS_AUTORADIOBUTTON | WS_GROUP,12,21,81,10
730- CONTROL "JIS",HSET_JIS_CNV,"Button",BS_AUTORADIOBUTTON,12,33,41,10
731- CONTROL "EUC",HSET_EUC_CNV,"Button",BS_AUTORADIOBUTTON,12,45,41,10
732- CONTROL "半角カナを全角に変換",HSET_HANCNV,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,12,62,87,10
733- GROUPBOX "ファイル名の漢字コード(&N)",-1,110,7,90,103,WS_GROUP
734- CONTROL "SHIFT-JIS",HSET_FN_NO_CNV,"Button",BS_AUTORADIOBUTTON | WS_GROUP,114,21,65,10
735- CONTROL "JIS",HSET_FN_JIS_CNV,"Button",BS_AUTORADIOBUTTON,114,33,70,10
736- CONTROL "EUC",HSET_FN_EUC_CNV,"Button",BS_AUTORADIOBUTTON,114,45,41,10
737- CONTROL "Samba-HEX",HSET_FN_SMH_CNV,"Button",BS_AUTORADIOBUTTON,114,57,66,10
738- CONTROL "Samba-CAP",HSET_FN_SMC_CNV,"Button",BS_AUTORADIOBUTTON,114,69,64,10
739- CONTROL "UTF-8N",HSET_FN_UTF8N_CNV,"Button",BS_AUTORADIOBUTTON,114,81,41,10
740- CONTROL "半角カナを全角に変換",HSET_FN_HANCNV,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,114,95,81,10
728+ GROUPBOX "ホストの漢字コード(&K)",-1,7,7,98,94,WS_GROUP
729+ CONTROL "無変換",HSET_NO_CNV,"Button",BS_AUTORADIOBUTTON | WS_GROUP,12,21,81,10
730+ CONTROL "Shift_JIS",HSET_SJIS_CNV,"Button",BS_AUTORADIOBUTTON,12,33,81,10
731+ CONTROL "JIS",HSET_JIS_CNV,"Button",BS_AUTORADIOBUTTON,12,45,41,10
732+ CONTROL "EUC",HSET_EUC_CNV,"Button",BS_AUTORADIOBUTTON,12,57,41,10
733+ CONTROL "UTF-8N",HSET_UTF8N_CNV,"Button",BS_AUTORADIOBUTTON,12,69,41,10
734+ CONTROL "半角カナを全角に変換",HSET_HANCNV,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,12,86,87,10
735+ GROUPBOX "ファイル名の漢字コード(&N)",-1,110,7,90,115,WS_GROUP
736+ CONTROL "自動",HSET_FN_AUTO_CNV,"Button",BS_AUTORADIOBUTTON | WS_GROUP,114,21,65,10
737+ CONTROL "Shift_JIS",HSET_FN_SJIS_CNV,"Button",BS_AUTORADIOBUTTON,114,33,65,10
738+ CONTROL "JIS",HSET_FN_JIS_CNV,"Button",BS_AUTORADIOBUTTON,114,45,70,10
739+ CONTROL "EUC",HSET_FN_EUC_CNV,"Button",BS_AUTORADIOBUTTON,114,57,41,10
740+ CONTROL "Samba-HEX",HSET_FN_SMH_CNV,"Button",BS_AUTORADIOBUTTON,114,69,66,10
741+ CONTROL "Samba-CAP",HSET_FN_SMC_CNV,"Button",BS_AUTORADIOBUTTON,114,81,64,10
742+ CONTROL "UTF-8N",HSET_FN_UTF8N_CNV,"Button",BS_AUTORADIOBUTTON,114,93,41,10
743+ CONTROL "半角カナを全角に変換",HSET_FN_HANCNV,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,114,107,81,10
741744 END
742745
743746 opt_trmode1_dlg DIALOG 0, 0, 211, 139
@@ -2076,6 +2079,8 @@ BEGIN
20762079 BUTTON ID_BUTTON40122
20772080 BUTTON ID_BUTTON40125
20782081 BUTTON ID_BUTTON40156
2082+ BUTTON ID_BUTTON40173
2083+ BUTTON ID_BUTTON40174
20792084 END
20802085
20812086 remote_toolbar_bmp TOOLBAR 16, 16
--- a/Resource/resource.h
+++ b/Resource/resource.h
@@ -1,6 +1,6 @@
11 //{{NO_DEPENDENCIES}}
22 // Microsoft Visual C++ generated include file.
3-// Used by FFFTP.rc
3+// Used by ffftp.rc
44 //
55 #define DELETE_ALL 3
66 #define DELETE_NO 4
@@ -272,7 +272,7 @@
272272 #define HSET_FIREWAL 1061
273273 #define HSET_FIREWALL 1061
274274 #define FIRE_TYPE1 1062
275-#define HSET_FN_NO_CNV 1062
275+#define HSET_FN_AUTO_CNV 1062
276276 #define FIRE_TYPE4 1063
277277 #define HSET_FN_JIS_CNV 1063
278278 #define FIRE_TYPE3 1064
@@ -416,6 +416,9 @@
416416 #define IDC_EDIT1 1191
417417 #define MOVE_NOTIFY_TEXT 1194
418418 #define COMMON_TEXT 1194
419+#define HSET_SJIS_CNV 1195
420+#define HSET_UTF8N_CNV 1196
421+#define HSET_FN_SJIS_CNV 1197
419422 #define MENU_END 40001
420423 #define MENU_EXIT 40001
421424 #define MENU_CONNECT 40003
@@ -467,19 +470,23 @@
467470 #define MENU_HELP 40040
468471 #define MENU_BMARK_ADD 40041
469472 #define MENU_BMARK_EDIT 40042
470-#define MENU_KNJ_EUC 40043
471-#define MENU_KNJ_JIS 40044
472-#define MENU_KNJ_NONE 40045
473-#define MENU_UPDIR 40046
474-#define MENU_DCLICK 40047
475-#define MENU_SELECT 40049
476-#define MENU_SELECT_ALL 40050
477-#define MENU_FIND 40051
478-#define MENU_FINDNEXT 40052
479-#define MENU_DOTFILE 40054
480-#define MENU_IMPORT_WS 40056
481-#define ID_BUTTON40058 40058
482-#define ID_BUTTON40059 40059
473+#define MENU_KNJ_SJIS 40043
474+#define MENU_KNJ_EUC 40044
475+#define MENU_KNJ_JIS 40045
476+#define MENU_KNJ_UTF8N 40046
477+#define MENU_KNJ_NONE 40047
478+#define MENU_L_KNJ_SJIS 40048
479+#define MENU_L_KNJ_EUC 40049
480+#define MENU_L_KNJ_JIS 40050
481+#define MENU_L_KNJ_UTF8N 40051
482+#define MENU_UPDIR 40052
483+#define MENU_DCLICK 40053
484+#define MENU_SELECT 40054
485+#define MENU_SELECT_ALL 40055
486+#define MENU_FIND 40056
487+#define MENU_FINDNEXT 40057
488+#define MENU_DOTFILE 40058
489+#define MENU_IMPORT_WS 40059
483490 #define ID_BUTTON40060 40060
484491 #define ID_BUTTON40061 40061
485492 #define ID_BUTTON40062 40062
@@ -586,6 +593,8 @@
586593 #define MENU_REGLOAD 40170
587594 #define MENU_XFRMODE 40171
588595 #define MENU_CHANGEPASSWD 40172
596+#define ID_BUTTON40173 40173
597+#define ID_BUTTON40174 40174
589598 #define FSNOTIFY_TITLE 65535
590599 #define HOST_SIZEGRIP 65535
591600
@@ -594,8 +603,8 @@
594603 #ifdef APSTUDIO_INVOKED
595604 #ifndef APSTUDIO_READONLY_SYMBOLS
596605 #define _APS_NEXT_RESOURCE_VALUE 189
597-#define _APS_NEXT_COMMAND_VALUE 40173
598-#define _APS_NEXT_CONTROL_VALUE 1195
606+#define _APS_NEXT_COMMAND_VALUE 40175
607+#define _APS_NEXT_CONTROL_VALUE 1198
599608 #define _APS_NEXT_SYMED_VALUE 101
600609 #endif
601610 #endif
Binary files a/Resource/toolbar1.bmp and b/Resource/toolbar1.bmp differ
Binary files a/Resource_eng/FFFTP-eng.aps and b/Resource_eng/FFFTP-eng.aps differ
--- a/Resource_eng/FFFTP-eng.rc
+++ b/Resource_eng/FFFTP-eng.rc
@@ -268,19 +268,22 @@ hset_code_dlg DIALOGEX 0, 0, 207, 139
268268 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
269269 FONT 9, "MS Sans Serif", 0, 0, 0x0
270270 BEGIN
271- GROUPBOX "&Japanese Kanji Code",-1,7,7,98,70,WS_GROUP
272- CONTROL "No conversion (S-JIS)",HSET_NO_CNV,"Button",BS_AUTORADIOBUTTON | WS_GROUP,12,21,91,10
273- CONTROL "JIS",HSET_JIS_CNV,"Button",BS_AUTORADIOBUTTON,12,33,41,10
274- CONTROL "EUC",HSET_EUC_CNV,"Button",BS_AUTORADIOBUTTON,12,45,41,10
275- CONTROL "Hankaku to Zenkaku",HSET_HANCNV,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,12,62,90,10
276- GROUPBOX "&Filename Kanji Code",-1,107,7,97,104,WS_GROUP
277- CONTROL "SHIFT-JIS",HSET_FN_NO_CNV,"Button",BS_AUTORADIOBUTTON | WS_GROUP,111,21,65,10
278- CONTROL "JIS",HSET_FN_JIS_CNV,"Button",BS_AUTORADIOBUTTON,111,33,70,10
279- CONTROL "EUC",HSET_FN_EUC_CNV,"Button",BS_AUTORADIOBUTTON,111,45,41,10
280- CONTROL "Samba-HEX",HSET_FN_SMH_CNV,"Button",BS_AUTORADIOBUTTON,111,57,66,10
281- CONTROL "Samba-CAP",HSET_FN_SMC_CNV,"Button",BS_AUTORADIOBUTTON,111,69,64,10
282- CONTROL "UTF-8N",HSET_FN_UTF8N_CNV,"Button",BS_AUTORADIOBUTTON,111,81,63,10
283- CONTROL "Hankaku to Zenkaku",HSET_FN_HANCNV,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,111,96,91,10
271+ GROUPBOX "&Japanese Kanji Code",-1,7,7,98,94,WS_GROUP
272+ CONTROL "No conversion",HSET_NO_CNV,"Button",BS_AUTORADIOBUTTON | WS_GROUP,12,21,91,10
273+ CONTROL "Shift_JIS",HSET_SJIS_CNV,"Button",BS_AUTORADIOBUTTON,12,33,81,10
274+ CONTROL "JIS",HSET_JIS_CNV,"Button",BS_AUTORADIOBUTTON,12,45,41,10
275+ CONTROL "EUC",HSET_EUC_CNV,"Button",BS_AUTORADIOBUTTON,12,57,41,10
276+ CONTROL "UTF-8N",HSET_UTF8N_CNV,"Button",BS_AUTORADIOBUTTON,12,69,41,10
277+ CONTROL "Hankaku to Zenkaku",HSET_HANCNV,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,12,96,90,10
278+ GROUPBOX "&Filename Kanji Code",-1,107,7,97,116,WS_GROUP
279+ CONTROL "Automatic",HSET_FN_AUTO_CNV,"Button",BS_AUTORADIOBUTTON | WS_GROUP,114,21,65,10
280+ CONTROL "Shift_JIS",HSET_FN_SJIS_CNV,"Button",BS_AUTORADIOBUTTON | WS_GROUP,111,33,65,10
281+ CONTROL "JIS",HSET_FN_JIS_CNV,"Button",BS_AUTORADIOBUTTON,111,45,70,10
282+ CONTROL "EUC",HSET_FN_EUC_CNV,"Button",BS_AUTORADIOBUTTON,111,57,41,10
283+ CONTROL "Samba-HEX",HSET_FN_SMH_CNV,"Button",BS_AUTORADIOBUTTON,111,69,66,10
284+ CONTROL "Samba-CAP",HSET_FN_SMC_CNV,"Button",BS_AUTORADIOBUTTON,111,81,64,10
285+ CONTROL "UTF-8N",HSET_FN_UTF8N_CNV,"Button",BS_AUTORADIOBUTTON,111,93,63,10
286+ CONTROL "Hankaku to Zenkaku",HSET_FN_HANCNV,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,111,108,91,10
284287 END
285288
286289 hset_dialup_dlg DIALOG 0, 0, 207, 139
@@ -2127,6 +2130,8 @@ BEGIN
21272130 BUTTON ID_BUTTON40122
21282131 BUTTON ID_BUTTON40125
21292132 BUTTON ID_BUTTON40156
2133+ BUTTON ID_BUTTON40173
2134+ BUTTON ID_BUTTON40174
21302135 END
21312136
21322137 remote_toolbar_bmp TOOLBAR 16, 16
--- a/Resource_eng/resource.h
+++ b/Resource_eng/resource.h
@@ -272,7 +272,7 @@
272272 #define HSET_FIREWAL 1061
273273 #define HSET_FIREWALL 1061
274274 #define FIRE_TYPE1 1062
275-#define HSET_FN_NO_CNV 1062
275+#define HSET_FN_AUTO_CNV 1062
276276 #define FIRE_TYPE4 1063
277277 #define HSET_FN_JIS_CNV 1063
278278 #define FIRE_TYPE3 1064
@@ -414,7 +414,11 @@
414414 #define TRMODE3_FOLDER_ATTR 1186
415415 #define ABOUT_URL 1187
416416 #define IDC_EDIT1 1191
417+#define MOVE_NOTIFY_TEXT 1194
417418 #define COMMON_TEXT 1194
419+#define HSET_SJIS_CNV 1195
420+#define HSET_UTF8N_CNV 1196
421+#define HSET_FN_SJIS_CNV 1197
418422 #define MENU_END 40001
419423 #define MENU_EXIT 40001
420424 #define MENU_CONNECT 40003
@@ -466,19 +470,23 @@
466470 #define MENU_HELP 40040
467471 #define MENU_BMARK_ADD 40041
468472 #define MENU_BMARK_EDIT 40042
469-#define MENU_KNJ_EUC 40043
470-#define MENU_KNJ_JIS 40044
471-#define MENU_KNJ_NONE 40045
472-#define MENU_UPDIR 40046
473-#define MENU_DCLICK 40047
474-#define MENU_SELECT 40049
475-#define MENU_SELECT_ALL 40050
476-#define MENU_FIND 40051
477-#define MENU_FINDNEXT 40052
478-#define MENU_DOTFILE 40054
479-#define MENU_IMPORT_WS 40056
480-#define ID_BUTTON40058 40058
481-#define ID_BUTTON40059 40059
473+#define MENU_KNJ_SJIS 40043
474+#define MENU_KNJ_EUC 40044
475+#define MENU_KNJ_JIS 40045
476+#define MENU_KNJ_UTF8N 40046
477+#define MENU_KNJ_NONE 40047
478+#define MENU_L_KNJ_SJIS 40048
479+#define MENU_L_KNJ_EUC 40049
480+#define MENU_L_KNJ_JIS 40050
481+#define MENU_L_KNJ_UTF8N 40051
482+#define MENU_UPDIR 40052
483+#define MENU_DCLICK 40053
484+#define MENU_SELECT 40054
485+#define MENU_SELECT_ALL 40055
486+#define MENU_FIND 40056
487+#define MENU_FINDNEXT 40057
488+#define MENU_DOTFILE 40058
489+#define MENU_IMPORT_WS 40059
482490 #define ID_BUTTON40060 40060
483491 #define ID_BUTTON40061 40061
484492 #define ID_BUTTON40062 40062
@@ -585,6 +593,8 @@
585593 #define MENU_REGLOAD 40170
586594 #define MENU_XFRMODE 40171
587595 #define MENU_CHANGEPASSWD 40172
596+#define ID_BUTTON40173 40173
597+#define ID_BUTTON40174 40174
588598 #define FSNOTIFY_TITLE 65535
589599 #define HOST_SIZEGRIP 65535
590600
@@ -593,8 +603,8 @@
593603 #ifdef APSTUDIO_INVOKED
594604 #ifndef APSTUDIO_READONLY_SYMBOLS
595605 #define _APS_NEXT_RESOURCE_VALUE 189
596-#define _APS_NEXT_COMMAND_VALUE 40173
597-#define _APS_NEXT_CONTROL_VALUE 1194
606+#define _APS_NEXT_COMMAND_VALUE 40175
607+#define _APS_NEXT_CONTROL_VALUE 1198
598608 #define _APS_NEXT_SYMED_VALUE 101
599609 #endif
600610 #endif
Binary files a/Resource_eng/toolbar1.bmp and b/Resource_eng/toolbar1.bmp differ
--- a/common.h
+++ b/common.h
@@ -669,15 +669,17 @@ LIST_UNIX_70
669669
670670 /*===== 漢字コード変換 =====*/
671671
672-#define KANJI_SJIS 0 /* SJIS */
673-#define KANJI_JIS 1 /* JIS */
674-#define KANJI_EUC 2 /* EUC */
675-#define KANJI_SMB_HEX 3 /* Samba-HEX */
676-#define KANJI_SMB_CAP 4 /* Samba-CAP */
677-#define KANJI_UTF8N 5 /* UTF-8N */
672+#define KANJI_SJIS 1 /* SJIS */
673+#define KANJI_JIS 2 /* JIS */
674+#define KANJI_EUC 3 /* EUC */
675+#define KANJI_SMB_HEX 4 /* Samba-HEX */
676+#define KANJI_SMB_CAP 5 /* Samba-CAP */
677+#define KANJI_UTF8N 6 /* UTF-8N */
678678
679679 #define KANJI_NOCNV 0 /* 漢字コード変換なし */
680680
681+#define KANJI_AUTO 0
682+
681683 /*===== サウンド =====*/
682684
683685 #define SND_CONNECT 0 /* 接続時のサウンド */
@@ -960,6 +962,7 @@ typedef struct transpacket {
960962 FILETIME Time; /* ファイルの時間(UTC) */
961963 int Attr; /* ファイルの属性 */
962964 int KanjiCode; /* 漢字コード (KANJI_xxx) */
965+ int KanjiCodeDesired; /* 変換先の漢字コード (KANJI_xxx) */
963966 int KanaCnv; /* 半角カナを全角に変換(YES/NO) */
964967 int Mode; /* 転送モード (EXIST_xxx) */
965968 HWND hWndTrans; /* 転送中ダイアログのウインドウハンドル */
@@ -1235,6 +1238,13 @@ void SetHostKanaCnvImm(int Mode);
12351238 void SetHostKanaCnv(void);
12361239 void DispHostKanaCnv(void);
12371240 int AskHostKanaCnv(void);
1241+// ローカルの漢字コード
1242+void SetLocalKanjiCodeImm(int Mode);
1243+void SetLocalKanjiCode(int Type);
1244+void DispLocalKanjiCode(void);
1245+int AskLocalKanjiCode(void);
1246+void HideLocalKanjiButton(void);
1247+// ここまで
12381248 void SetSortTypeImm(int LFsort, int LDsort, int RFsort, int RDsort);
12391249 void SetSortTypeByColumn(int Win, int Tab);
12401250 int AskSortType(int Name);
--- a/config.h
+++ b/config.h
@@ -3,8 +3,10 @@
33 #define HAVE_OPENVMS
44
55 //全体に影響する設定はここに記述する予定
6+//内部をUTF-8として扱いマルチバイト文字ワイド文字APIラッパーを使用する
7+#include "mbswrapper.h"
68 //使用するCPUを1個に限定する(マルチコアCPUの特定環境下でファイル通信中にクラッシュするバグ対策)
79 #define DISABLE_MULTI_CPUS
810 //ネットワークバッファを無効にする(通信中止後にリモートのディレクトリが表示されないバグ対策)
9-#define DISABLE_NETWORK_BUFFERS
11+//#define DISABLE_NETWORK_BUFFERS
1012
--- a/ftpproc.c
+++ b/ftpproc.c
@@ -200,6 +200,7 @@ void DownLoadProc(int ChName, int ForceFile, int All)
200200 Pkt.Size = Pos->Size;
201201 Pkt.Time = Pos->Time;
202202 Pkt.KanjiCode = AskHostKanjiCode();
203+ Pkt.KanjiCodeDesired = AskLocalKanjiCode();
203204 Pkt.KanaCnv = AskHostKanaCnv();
204205
205206 Pkt.Mode = CheckLocalFile(&Pkt); /* Pkt.ExistSize がセットされる */
@@ -301,6 +302,7 @@ void DirectDownLoadProc(char *Fname)
301302 /* サイズと日付は転送側スレッドで取得し、セットする */
302303
303304 Pkt.KanjiCode = AskHostKanjiCode();
305+ Pkt.KanjiCodeDesired = AskLocalKanjiCode();
304306 Pkt.KanaCnv = AskHostKanaCnv();
305307
306308 Pkt.Mode = CheckLocalFile(&Pkt); /* Pkt.ExistSize がセットされる */
@@ -551,6 +553,7 @@ void MirrorDownloadProc(int Notify)
551553 Pkt.Time = RemotePos->Time;
552554 // Pkt.Attr = 0;
553555 Pkt.KanjiCode = AskHostKanjiCode();
556+ Pkt.KanjiCodeDesired = AskLocalKanjiCode();
554557 Pkt.KanaCnv = AskHostKanaCnv();
555558 Pkt.Mode = EXIST_OVW;
556559 AddTmpTransFileList(&Pkt, &Base);
@@ -944,6 +947,7 @@ void UpLoadListProc(int ChName, int All)
944947 Pkt.Time = Pos->Time;
945948 Pkt.Attr = AskUpLoadFileAttr(Pkt.RemoteFile);
946949 Pkt.KanjiCode = AskHostKanjiCode();
950+ Pkt.KanjiCodeDesired = AskLocalKanjiCode();
947951 Pkt.KanaCnv = AskHostKanaCnv();
948952 Pkt.Mode = CheckRemoteFile(&Pkt, RemoteList);
949953 if(Pkt.Mode == EXIST_ABORT)
@@ -1094,6 +1098,7 @@ void UpLoadDragProc(WPARAM wParam)
10941098 Pkt.Time = Pos->Time;
10951099 Pkt.Attr = AskUpLoadFileAttr(Pkt.RemoteFile);
10961100 Pkt.KanjiCode = AskHostKanjiCode();
1101+ Pkt.KanjiCodeDesired = AskLocalKanjiCode();
10971102 Pkt.KanaCnv = AskHostKanaCnv();
10981103 Pkt.Mode = CheckRemoteFile(&Pkt, RemoteList);
10991104 if(Pkt.Mode == EXIST_ABORT)
@@ -1360,6 +1365,7 @@ void MirrorUploadProc(int Notify)
13601365 Pkt.Time = LocalPos->Time;
13611366 Pkt.Attr = AskUpLoadFileAttr(Pkt.RemoteFile);
13621367 Pkt.KanjiCode = AskHostKanjiCode();
1368+ Pkt.KanjiCodeDesired = AskLocalKanjiCode();
13631369 Pkt.KanaCnv = AskHostKanaCnv();
13641370 Pkt.Mode = EXIST_OVW;
13651371 AddTmpTransFileList(&Pkt, &Base);
--- a/getput.c
+++ b/getput.c
@@ -59,7 +59,7 @@
5959
6060 #ifdef DISABLE_NETWORK_BUFFERS
6161 #undef BUFSIZE
62-#define BUFSIZE (63 * 1024) // RWIN値以下で充分な大きさが望ましいと思われる。
62+#define BUFSIZE (64 * 1024) // RWIN値以下で充分な大きさが望ましいと思われる。
6363 #undef SET_BUFFER_SIZE
6464 #endif
6565
@@ -1178,6 +1178,8 @@ static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *Canc
11781178
11791179 if((iFileHandle = CreateFile(Pkt->LocalFile, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, &Sec, CreateMode, FILE_ATTRIBUTE_NORMAL, NULL)) != INVALID_HANDLE_VALUE)
11801180 {
1181+ // UTF-8対応
1182+ int ProcessedBOM = NO;
11811183 if(CreateMode == OPEN_ALWAYS)
11821184 SetFilePointer(iFileHandle, 0, 0, FILE_END);
11831185
@@ -1246,11 +1248,154 @@ static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *Canc
12461248 cInfo.BufSize = BUFSIZE+3;
12471249 do
12481250 {
1249- if(Pkt->KanjiCode == KANJI_JIS)
1250- Continue = ConvJIStoSJIS(&cInfo);
1251- else
1252- Continue = ConvEUCtoSJIS(&cInfo);
1253- if(WriteFile(iFileHandle, Buf2, cInfo.OutLen, &Writed, NULL) == FALSE)
1251+ // ここで全てUTF-8へ変換する
1252+ // TODO: SJIS以外も直接UTF-8へ変換
1253+// if(Pkt->KanjiCode == KANJI_JIS)
1254+// Continue = ConvJIStoSJIS(&cInfo);
1255+// else
1256+// Continue = ConvEUCtoSJIS(&cInfo);
1257+ char Buf3[(BUFSIZE + 3) * 4];
1258+ CODECONVINFO cInfo2;
1259+ switch(Pkt->KanjiCode)
1260+ {
1261+ case KANJI_SJIS:
1262+ switch(Pkt->KanjiCodeDesired)
1263+ {
1264+ case KANJI_SJIS:
1265+ memcpy(Buf3, cInfo.Str, cInfo.StrLen);
1266+ cInfo2.OutLen = cInfo.StrLen;
1267+ Continue = NO;
1268+ break;
1269+ case KANJI_JIS:
1270+ break;
1271+ case KANJI_EUC:
1272+ break;
1273+ case KANJI_UTF8N:
1274+ if(ProcessedBOM == NO)
1275+ {
1276+ memcpy(Buf3, "\xEF\xBB\xBF", 3);
1277+ cInfo2.OutLen = 3;
1278+ Continue = YES;
1279+ ProcessedBOM = YES;
1280+ break;
1281+ }
1282+ Continue = ConvSJIStoUTF8N(&cInfo);
1283+ memcpy(Buf3, Buf2, cInfo.OutLen);
1284+ cInfo2.OutLen = cInfo.OutLen;
1285+ break;
1286+ }
1287+ break;
1288+ case KANJI_JIS:
1289+ switch(Pkt->KanjiCodeDesired)
1290+ {
1291+ case KANJI_SJIS:
1292+ Continue = ConvJIStoSJIS(&cInfo);
1293+ memcpy(Buf3, Buf2, cInfo.OutLen);
1294+ cInfo2.OutLen = cInfo.OutLen;
1295+ break;
1296+ case KANJI_JIS:
1297+ memcpy(Buf3, cInfo.Str, cInfo.StrLen);
1298+ cInfo2.OutLen = cInfo.StrLen;
1299+ Continue = NO;
1300+ break;
1301+ case KANJI_EUC:
1302+ break;
1303+ case KANJI_UTF8N:
1304+ if(ProcessedBOM == NO)
1305+ {
1306+ memcpy(Buf3, "\xEF\xBB\xBF", 3);
1307+ cInfo2.OutLen = 3;
1308+ Continue = YES;
1309+ ProcessedBOM = YES;
1310+ break;
1311+ }
1312+ Continue = ConvJIStoSJIS(&cInfo);
1313+ InitCodeConvInfo(&cInfo2);
1314+ cInfo2.KanaCnv = NO;
1315+ cInfo2.Str = cInfo.Buf;
1316+ cInfo2.StrLen = cInfo.OutLen;
1317+ cInfo2.Buf = Buf3;
1318+ cInfo2.BufSize = (BUFSIZE + 3) * 4;
1319+ ConvSJIStoUTF8N(&cInfo2);
1320+ break;
1321+ }
1322+ break;
1323+ case KANJI_EUC:
1324+ switch(Pkt->KanjiCodeDesired)
1325+ {
1326+ case KANJI_SJIS:
1327+ Continue = ConvEUCtoSJIS(&cInfo);
1328+ memcpy(Buf3, Buf2, cInfo.OutLen);
1329+ cInfo2.OutLen = cInfo.OutLen;
1330+ break;
1331+ case KANJI_JIS:
1332+ break;
1333+ case KANJI_EUC:
1334+ memcpy(Buf3, cInfo.Str, cInfo.StrLen);
1335+ cInfo2.OutLen = cInfo.StrLen;
1336+ Continue = NO;
1337+ break;
1338+ case KANJI_UTF8N:
1339+ if(ProcessedBOM == NO)
1340+ {
1341+ memcpy(Buf3, "\xEF\xBB\xBF", 3);
1342+ cInfo2.OutLen = 3;
1343+ Continue = YES;
1344+ ProcessedBOM = YES;
1345+ break;
1346+ }
1347+ Continue = ConvEUCtoSJIS(&cInfo);
1348+ InitCodeConvInfo(&cInfo2);
1349+ cInfo2.KanaCnv = NO;
1350+ cInfo2.Str = cInfo.Buf;
1351+ cInfo2.StrLen = cInfo.OutLen;
1352+ cInfo2.Buf = Buf3;
1353+ cInfo2.BufSize = (BUFSIZE + 3) * 4;
1354+ ConvSJIStoUTF8N(&cInfo2);
1355+ break;
1356+ }
1357+ break;
1358+ case KANJI_UTF8N:
1359+ if(ProcessedBOM == NO)
1360+ {
1361+ if(memcmp(Buf, "\xEF\xBB\xBF", 3) == 0)
1362+ {
1363+ cInfo.Str += 3;
1364+ cInfo.StrLen -= 3;
1365+ }
1366+ cInfo2.OutLen = 0;
1367+ switch(Pkt->KanjiCodeDesired)
1368+ {
1369+ case KANJI_UTF8N:
1370+ memcpy(Buf3, "\xEF\xBB\xBF", 3);
1371+ cInfo2.OutLen = 3;
1372+ break;
1373+ }
1374+ Continue = YES;
1375+ ProcessedBOM = YES;
1376+ break;
1377+ }
1378+ switch(Pkt->KanjiCodeDesired)
1379+ {
1380+ case KANJI_SJIS:
1381+ Continue = ConvUTF8NtoSJIS(&cInfo);
1382+ memcpy(Buf3, Buf2, cInfo.OutLen);
1383+ cInfo2.OutLen = cInfo.OutLen;
1384+ break;
1385+ case KANJI_JIS:
1386+ break;
1387+ case KANJI_EUC:
1388+ break;
1389+ case KANJI_UTF8N:
1390+ memcpy(Buf3, cInfo.Str, cInfo.StrLen);
1391+ cInfo2.OutLen = cInfo.StrLen;
1392+ Continue = NO;
1393+ break;
1394+ }
1395+ break;
1396+ }
1397+// if(WriteFile(iFileHandle, Buf2, cInfo.OutLen, &Writed, NULL) == FALSE)
1398+ if(WriteFile(iFileHandle, Buf3, cInfo2.OutLen, &Writed, NULL) == FALSE)
12541399 Pkt->Abort = ABORT_DISKFULL;
12551400 }
12561401 while((Continue == YES) && (Pkt->Abort == ABORT_NONE));
@@ -1820,13 +1965,11 @@ static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt)
18201965 /* End */
18211966 #endif
18221967
1823-// Written by Suguru Kawamoto
18241968 #ifdef DISABLE_NETWORK_BUFFERS
18251969 // 念のため送信バッファを無効にする。
18261970 int buf_size = 0;
18271971 setsockopt(dSkt, SOL_SOCKET, SO_SNDBUF, (char *)&buf_size, sizeof(buf_size));
18281972 #endif
1829-// End Written by Suguru Kawamoto
18301973
18311974 Pkt->Abort = ABORT_NONE;
18321975
@@ -1837,6 +1980,8 @@ static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt)
18371980 if((iFileHandle = CreateFile(Pkt->LocalFile, GENERIC_READ,
18381981 FILE_SHARE_READ|FILE_SHARE_WRITE, &Sec, OPEN_EXISTING, 0, NULL)) != INVALID_HANDLE_VALUE)
18391982 {
1983+ // UTF-8対応
1984+ int ProcessedBOM = NO;
18401985 if(Pkt->hWndTrans != NULL)
18411986 {
18421987 Low = GetFileSize(iFileHandle, &High);
@@ -1880,12 +2025,155 @@ static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt)
18802025 cInfo.BufSize = BUFSIZE+3;
18812026 do
18822027 {
1883- if(Pkt->KanjiCode == KANJI_JIS)
1884- Continue = ConvSJIStoJIS(&cInfo);
1885- else
1886- Continue = ConvSJIStoEUC(&cInfo);
2028+ // ここで全てUTF-8へ変換する
2029+ // TODO: SJIS以外も直接UTF-8へ変換
2030+// if(Pkt->KanjiCode == KANJI_JIS)
2031+// Continue = ConvSJIStoJIS(&cInfo);
2032+// else
2033+// Continue = ConvSJIStoEUC(&cInfo);
2034+ char Buf3[(BUFSIZE + 3) * 4];
2035+ CODECONVINFO cInfo2;
2036+ switch(Pkt->KanjiCodeDesired)
2037+ {
2038+ case KANJI_SJIS:
2039+ switch(Pkt->KanjiCode)
2040+ {
2041+ case KANJI_SJIS:
2042+ memcpy(Buf3, cInfo.Str, cInfo.StrLen);
2043+ cInfo2.OutLen = cInfo.StrLen;
2044+ Continue = NO;
2045+ break;
2046+ case KANJI_JIS:
2047+ break;
2048+ case KANJI_EUC:
2049+ break;
2050+ case KANJI_UTF8N:
2051+ if(ProcessedBOM == NO)
2052+ {
2053+ memcpy(Buf3, "\xEF\xBB\xBF", 3);
2054+ cInfo2.OutLen = 3;
2055+ Continue = YES;
2056+ ProcessedBOM = YES;
2057+ break;
2058+ }
2059+ Continue = ConvSJIStoUTF8N(&cInfo);
2060+ memcpy(Buf3, cInfo.Str, cInfo.OutLen);
2061+ cInfo2.OutLen = cInfo.OutLen;
2062+ break;
2063+ }
2064+ break;
2065+ case KANJI_JIS:
2066+ switch(Pkt->KanjiCode)
2067+ {
2068+ case KANJI_SJIS:
2069+ Continue = ConvJIStoSJIS(&cInfo);
2070+ memcpy(Buf3, Buf2, cInfo.OutLen);
2071+ cInfo2.OutLen = cInfo.OutLen;
2072+ break;
2073+ case KANJI_JIS:
2074+ memcpy(Buf3, cInfo.Str, cInfo.StrLen);
2075+ cInfo2.OutLen = cInfo.StrLen;
2076+ Continue = NO;
2077+ break;
2078+ case KANJI_EUC:
2079+ break;
2080+ case KANJI_UTF8N:
2081+ if(ProcessedBOM == NO)
2082+ {
2083+ memcpy(Buf3, "\xEF\xBB\xBF", 3);
2084+ cInfo2.OutLen = 3;
2085+ Continue = YES;
2086+ ProcessedBOM = YES;
2087+ break;
2088+ }
2089+ Continue = ConvJIStoSJIS(&cInfo);
2090+ InitCodeConvInfo(&cInfo2);
2091+ cInfo2.KanaCnv = NO;
2092+ cInfo2.Str = cInfo.Buf;
2093+ cInfo2.StrLen = cInfo.OutLen;
2094+ cInfo2.Buf = Buf3;
2095+ cInfo2.BufSize = (BUFSIZE + 3) * 4;
2096+ ConvSJIStoUTF8N(&cInfo2);
2097+ break;
2098+ }
2099+ break;
2100+ case KANJI_EUC:
2101+ switch(Pkt->KanjiCode)
2102+ {
2103+ case KANJI_SJIS:
2104+ Continue = ConvEUCtoSJIS(&cInfo);
2105+ memcpy(Buf3, Buf2, cInfo.OutLen);
2106+ cInfo2.OutLen = cInfo.OutLen;
2107+ break;
2108+ case KANJI_JIS:
2109+ break;
2110+ case KANJI_EUC:
2111+ memcpy(Buf3, cInfo.Str, cInfo.StrLen);
2112+ cInfo2.OutLen = cInfo.StrLen;
2113+ Continue = NO;
2114+ break;
2115+ case KANJI_UTF8N:
2116+ if(ProcessedBOM == NO)
2117+ {
2118+ memcpy(Buf3, "\xEF\xBB\xBF", 3);
2119+ cInfo2.OutLen = 3;
2120+ Continue = YES;
2121+ ProcessedBOM = YES;
2122+ break;
2123+ }
2124+ Continue = ConvEUCtoSJIS(&cInfo);
2125+ InitCodeConvInfo(&cInfo2);
2126+ cInfo2.KanaCnv = NO;
2127+ cInfo2.Str = cInfo.Buf;
2128+ cInfo2.StrLen = cInfo.OutLen;
2129+ cInfo2.Buf = Buf3;
2130+ cInfo2.BufSize = (BUFSIZE + 3) * 4;
2131+ ConvSJIStoUTF8N(&cInfo2);
2132+ break;
2133+ }
2134+ break;
2135+ case KANJI_UTF8N:
2136+ if(ProcessedBOM == NO)
2137+ {
2138+ if(memcmp(Buf, "\xEF\xBB\xBF", 3) == 0)
2139+ {
2140+ cInfo.Str += 3;
2141+ cInfo.StrLen -= 3;
2142+ }
2143+ cInfo2.OutLen = 0;
2144+ switch(Pkt->KanjiCode)
2145+ {
2146+ case KANJI_UTF8N:
2147+ memcpy(Buf3, "\xEF\xBB\xBF", 3);
2148+ cInfo2.OutLen = 3;
2149+ break;
2150+ }
2151+ Continue = YES;
2152+ ProcessedBOM = YES;
2153+ break;
2154+ }
2155+ switch(Pkt->KanjiCode)
2156+ {
2157+ case KANJI_SJIS:
2158+ Continue = ConvUTF8NtoSJIS(&cInfo);
2159+ memcpy(Buf3, Buf2, cInfo.OutLen);
2160+ cInfo2.OutLen = cInfo.OutLen;
2161+ break;
2162+ case KANJI_JIS:
2163+ break;
2164+ case KANJI_EUC:
2165+ break;
2166+ case KANJI_UTF8N:
2167+ memcpy(Buf3, cInfo.Str, cInfo.StrLen);
2168+ cInfo2.OutLen = cInfo.StrLen;
2169+ Continue = NO;
2170+ break;
2171+ }
2172+ break;
2173+ }
18872174
1888- if(TermCodeConvAndSend(&tInfo, dSkt, Buf2, cInfo.OutLen, Pkt->Type) == FAIL)
2175+// if(TermCodeConvAndSend(&tInfo, dSkt, Buf2, cInfo.OutLen, Pkt->Type) == FAIL)
2176+ if(TermCodeConvAndSend(&tInfo, dSkt, Buf3, cInfo2.OutLen, Pkt->Type) == FAIL)
18892177 {
18902178 Pkt->Abort = ABORT_ERROR;
18912179 break;
--- a/hostman.c
+++ b/hostman.c
@@ -1790,15 +1790,19 @@ static BOOL CALLBACK CodeSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LP
17901790 {
17911791 NMHDR *pnmhdr;
17921792
1793+ // UTF-8対応
17931794 static const RADIOBUTTON KanjiButton[] = {
17941795 { HSET_NO_CNV, KANJI_NOCNV },
1796+ { HSET_SJIS_CNV, KANJI_SJIS },
17951797 { HSET_JIS_CNV, KANJI_JIS },
1796- { HSET_EUC_CNV, KANJI_EUC }
1798+ { HSET_EUC_CNV, KANJI_EUC },
1799+ { HSET_UTF8N_CNV, KANJI_UTF8N }
17971800 };
17981801 #define KANJIBUTTONS (sizeof(KanjiButton)/sizeof(RADIOBUTTON))
17991802
18001803 static const RADIOBUTTON NameKanjiButton[] = {
1801- { HSET_FN_NO_CNV, KANJI_NOCNV },
1804+ { HSET_FN_AUTO_CNV, KANJI_AUTO },
1805+ { HSET_FN_SJIS_CNV, KANJI_SJIS },
18021806 { HSET_FN_JIS_CNV, KANJI_JIS },
18031807 { HSET_FN_EUC_CNV, KANJI_EUC },
18041808 { HSET_FN_SMH_CNV, KANJI_SMB_HEX },
@@ -1845,7 +1849,10 @@ static BOOL CALLBACK CodeSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LP
18451849 EnableWindow(GetDlgItem(hDlg, HSET_HANCNV), TRUE);
18461850 break;
18471851
1852+ // UTF-8対応
18481853 case HSET_NO_CNV :
1854+ case HSET_SJIS_CNV :
1855+ case HSET_UTF8N_CNV :
18491856 EnableWindow(GetDlgItem(hDlg, HSET_HANCNV), FALSE);
18501857 break;
18511858
@@ -1854,7 +1861,8 @@ static BOOL CALLBACK CodeSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LP
18541861 EnableWindow(GetDlgItem(hDlg, HSET_FN_HANCNV), TRUE);
18551862 break;
18561863
1857- case HSET_FN_NO_CNV :
1864+ case HSET_FN_AUTO_CNV :
1865+ case HSET_FN_SJIS_CNV :
18581866 case HSET_FN_SMH_CNV :
18591867 case HSET_FN_SMC_CNV :
18601868 case HSET_FN_UTF8N_CNV : // UTF-8N対応
--- a/main.c
+++ b/main.c
@@ -397,6 +397,7 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow)
397397 DispTransferType();
398398 SetHostKanaCnvImm(YES);
399399 SetHostKanjiCodeImm(KANJI_NOCNV);
400+ SetLocalKanjiCodeImm(KANJI_UTF8N);
400401 DispListType();
401402 DispDotFileMode();
402403 DispSyncMoveMode();
@@ -1025,12 +1026,22 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
10251026 DispTransferType();
10261027 break;
10271028
1029+ // UTF-8対応
1030+ case MENU_KNJ_SJIS :
10281031 case MENU_KNJ_EUC :
10291032 case MENU_KNJ_JIS :
1033+ case MENU_KNJ_UTF8N :
10301034 case MENU_KNJ_NONE :
10311035 SetHostKanjiCode(LOWORD(wParam));
10321036 break;
10331037
1038+ case MENU_L_KNJ_SJIS :
1039+ case MENU_L_KNJ_EUC :
1040+ case MENU_L_KNJ_JIS :
1041+ case MENU_L_KNJ_UTF8N :
1042+ SetLocalKanjiCode(LOWORD(wParam));
1043+ break;
1044+
10341045 case MENU_KANACNV :
10351046 SetHostKanaCnv();
10361047 break;
@@ -1296,6 +1307,10 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
12961307 lpttt->lpszText = MSGJPN170;
12971308 break;
12981309
1310+ case MENU_KNJ_SJIS :
1311+ lpttt->lpszText = MSGJPN305;
1312+ break;
1313+
12991314 case MENU_KNJ_EUC :
13001315 lpttt->lpszText = MSGJPN171;
13011316 break;
@@ -1304,10 +1319,30 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
13041319 lpttt->lpszText = MSGJPN172;
13051320 break;
13061321
1322+ case MENU_KNJ_UTF8N :
1323+ lpttt->lpszText = MSGJPN306;
1324+ break;
1325+
13071326 case MENU_KNJ_NONE :
13081327 lpttt->lpszText = MSGJPN173;
13091328 break;
13101329
1330+ case MENU_L_KNJ_SJIS :
1331+ lpttt->lpszText = MSGJPN307;
1332+ break;
1333+
1334+ case MENU_L_KNJ_EUC :
1335+ lpttt->lpszText = MSGJPN308;
1336+ break;
1337+
1338+ case MENU_L_KNJ_JIS :
1339+ lpttt->lpszText = MSGJPN309;
1340+ break;
1341+
1342+ case MENU_L_KNJ_UTF8N :
1343+ lpttt->lpszText = MSGJPN310;
1344+ break;
1345+
13111346 case MENU_KANACNV :
13121347 lpttt->lpszText = MSGJPN174;
13131348 break;
@@ -1320,6 +1355,17 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
13201355 lpttt->lpszText = MSGJPN176;
13211356 break;
13221357 }
1358+ // UTF-8からShift_JISへ変換
1359+ {
1360+ static wchar_t StringBufferUTF16[1024];
1361+ static char StringBufferSJIS[1024];
1362+ if(lpttt->lpszText)
1363+ {
1364+ MtoW(StringBufferUTF16, sizeof(StringBufferUTF16)/ sizeof(wchar_t), lpttt->lpszText, -1);
1365+ WtoA(StringBufferSJIS, sizeof(StringBufferSJIS)/ sizeof(char), StringBufferUTF16, -1);
1366+ lpttt->lpszText = StringBufferSJIS;
1367+ }
1368+ }
13231369 break;
13241370
13251371 case LVN_COLUMNCLICK :
--- /dev/null
+++ b/mbswrapper.c
@@ -0,0 +1,1233 @@
1+// mbswrapper.cpp
2+// Copyright (C) 2011 Suguru Kawamoto
3+// マルチバイト文字ワイド文字APIラッパー
4+// マルチバイト文字はUTF-8、ワイド文字はUTF-16であるものとする
5+// 全ての制御用の文字はASCIIの範囲であるため、Shift_JISとUTF-8間の変換は不要
6+
7+#define UNICODE
8+#define _WIN32_WINNT 0x0600
9+#undef _WIN32_IE
10+#define _WIN32_IE 0x0400
11+
12+#include <tchar.h>
13+#include <windows.h>
14+#include <commctrl.h>
15+#include <shlobj.h>
16+#include <htmlhelp.h>
17+
18+#define DO_NOT_REPLACE
19+#include "mbswrapper.h"
20+
21+// マルチバイト文字列からワイド文字列へ変換
22+int MtoW(LPWSTR pDst, int size, LPCSTR pSrc, int count)
23+{
24+ if(pSrc < (LPCSTR)0x00010000 || !((char*)pSrc + 1))
25+ return 0;
26+ if(pDst)
27+ return MultiByteToWideChar(CP_UTF8, 0, pSrc, count, pDst, size);
28+ return MultiByteToWideChar(CP_UTF8, 0, pSrc, count, NULL, 0);
29+}
30+
31+// ワイド文字列からマルチバイト文字列へ変換
32+int WtoM(LPSTR pDst, int size, LPCWSTR pSrc, int count)
33+{
34+ if(pSrc < (LPCWSTR)0x00010000 || !((char*)pSrc + 1))
35+ return 0;
36+ if(pDst)
37+ return WideCharToMultiByte(CP_UTF8, 0, pSrc, count, pDst, size, NULL, NULL);
38+ return WideCharToMultiByte(CP_UTF8, 0, pSrc, count, NULL, 0, NULL, NULL);
39+}
40+
41+// ワイド文字列からShift_JIS文字列へ変換
42+int WtoA(LPSTR pDst, int size, LPCWSTR pSrc, int count)
43+{
44+ if(pSrc < (LPCWSTR)0x00010000 || !((char*)pSrc + 1))
45+ return 0;
46+ if(pDst)
47+ return WideCharToMultiByte(CP_ACP, 0, pSrc, count, pDst, size, NULL, NULL);
48+ return WideCharToMultiByte(CP_ACP, 0, pSrc, count, NULL, 0, NULL, NULL);
49+}
50+
51+// マルチバイト文字列バッファ終端を強制的にNULLで置換
52+int TerminateStringM(LPSTR lpString, int size)
53+{
54+ int i;
55+ if(lpString < (LPSTR)0x00010000 || !((char*)lpString + 1))
56+ return 0;
57+ for(i = 0; i < size; i++)
58+ {
59+ if(lpString[i] == '\0')
60+ return i;
61+ }
62+ i--;
63+ lpString[i] = '\0';
64+ return i;
65+}
66+
67+// ワイド文字列バッファ終端を強制的にNULLで置換
68+int TerminateStringW(LPWSTR lpString, int size)
69+{
70+ int i;
71+ if(lpString < (LPWSTR)0x00010000 || !((char*)lpString + 1))
72+ return 0;
73+ for(i = 0; i < size; i++)
74+ {
75+ if(lpString[i] == L'\0')
76+ return i;
77+ }
78+ i--;
79+ lpString[i] = L'\0';
80+ return i;
81+}
82+
83+// NULL区切り複数マルチバイト文字列の長さを取得
84+size_t GetMultiStringLengthM(LPCSTR lpString)
85+{
86+ size_t i;
87+ if(lpString < (LPCSTR)0x00010000 || !((char*)lpString + 1))
88+ return 0;
89+ i = 0;
90+ while(lpString[i] != '\0' || lpString[i + 1] != '\0')
91+ {
92+ i++;
93+ }
94+ i++;
95+ return i;
96+}
97+
98+// NULL区切り複数ワイド文字列の長さを取得
99+size_t GetMultiStringLengthW(LPCWSTR lpString)
100+{
101+ size_t i;
102+ if(lpString < (LPCWSTR)0x00010000 || !((char*)lpString + 1))
103+ return 0;
104+ i = 0;
105+ while(lpString[i] != L'\0' || lpString[i + 1] != L'\0')
106+ {
107+ i++;
108+ }
109+ i++;
110+ return i;
111+}
112+
113+// マルチバイト文字列用のメモリを確保
114+char* AllocateStringM(int size)
115+{
116+ char* p;
117+ p = (char*)malloc(sizeof(char) * size);
118+ if(p)
119+ *p = '\0';
120+ return p;
121+}
122+
123+// ワイド文字列用のメモリを確保
124+wchar_t* AllocateStringW(int size)
125+{
126+ wchar_t* p;
127+ p = (wchar_t*)malloc(sizeof(wchar_t) * size);
128+ if(p)
129+ *p = L'\0';
130+ return p;
131+}
132+
133+// Shift_JIS文字列用のメモリを確保
134+char* AllocateStringA(int size)
135+{
136+ char* p;
137+ p = (char*)malloc(sizeof(char) * size);
138+ if(p)
139+ *p = '\0';
140+ return p;
141+}
142+
143+// メモリを確保してマルチバイト文字列からワイド文字列へ変換
144+wchar_t* DuplicateMtoW(LPCSTR lpString, int c)
145+{
146+ wchar_t* p;
147+ int i;
148+ if(lpString < (LPCSTR)0x00010000 || !((char*)lpString + 1))
149+ return (wchar_t*)lpString;
150+ if(c < 0)
151+ c = strlen(lpString);
152+ p = AllocateStringW(MtoW(NULL, 0, lpString, c) + 1);
153+ if(p)
154+ {
155+ i = MtoW(p, 65535, lpString, c);
156+ p[i] = L'\0';
157+ }
158+ return p;
159+}
160+
161+// 指定したサイズのメモリを確保してマルチバイト文字列からワイド文字列へ変換
162+wchar_t* DuplicateMtoWBuffer(LPCSTR lpString, int c, int size)
163+{
164+ wchar_t* p;
165+ int i;
166+ if(lpString < (LPCSTR)0x00010000 || !((char*)lpString + 1))
167+ return (wchar_t*)lpString;
168+ if(c < 0)
169+ c = strlen(lpString);
170+ p = AllocateStringW(size);
171+ if(p)
172+ {
173+ i = MtoW(p, size, lpString, c);
174+ p[i] = L'\0';
175+ }
176+ return p;
177+}
178+
179+// メモリを確保してNULL区切りマルチバイト文字列からワイド文字列へ変換
180+wchar_t* DuplicateMtoWMultiString(LPCSTR lpString)
181+{
182+ int count;
183+ wchar_t* p;
184+ if(lpString < (LPCSTR)0x00010000 || !((char*)lpString + 1))
185+ return (wchar_t*)lpString;
186+ count = GetMultiStringLengthM(lpString) + 1;
187+ p = AllocateStringW(count);
188+ if(p)
189+ MtoW(p, count, lpString, count);
190+ return p;
191+}
192+
193+// 指定したサイズのメモリを確保してNULL区切りマルチバイト文字列からワイド文字列へ変換
194+wchar_t* DuplicateMtoWMultiStringBuffer(LPCSTR lpString, int size)
195+{
196+ int count;
197+ wchar_t* p;
198+ if(lpString < (LPCSTR)0x00010000 || !((char*)lpString + 1))
199+ return (wchar_t*)lpString;
200+ count = GetMultiStringLengthM(lpString) + 1;
201+ p = AllocateStringW(size);
202+ if(p)
203+ {
204+ MtoW(p, size, lpString, count);
205+ p[size - 2] = L'\0';
206+ p[size - 1] = L'\0';
207+ }
208+ return p;
209+}
210+
211+// メモリを確保してワイド文字列からマルチバイト文字列へ変換
212+char* DuplicateWtoM(LPCWSTR lpString, int c)
213+{
214+ char* p;
215+ int i;
216+ if(lpString < (LPCWSTR)0x00010000 || !((char*)lpString + 1))
217+ return (char*)lpString;
218+ if(c < 0)
219+ c = wcslen(lpString);
220+ p = AllocateStringM(WtoM(NULL, 0, lpString, c) + 1);
221+ if(p)
222+ {
223+ i = WtoM(p, 65535, lpString, c);
224+ p[i] = L'\0';
225+ }
226+ return p;
227+}
228+
229+// メモリを確保してワイド文字列からShift_JIS文字列へ変換
230+char* DuplicateWtoA(LPCWSTR lpString, int c)
231+{
232+ char* p;
233+ int i;
234+ if(lpString < (LPCWSTR)0x00010000 || !((char*)lpString + 1))
235+ return (char*)lpString;
236+ if(c < 0)
237+ c = wcslen(lpString);
238+ p = AllocateStringA(WtoA(NULL, 0, lpString, c) + 1);
239+ if(p)
240+ {
241+ i = WtoA(p, 65535, lpString, c);
242+ p[i] = L'\0';
243+ }
244+ return p;
245+}
246+
247+// 文字列用に確保したメモリを開放
248+void FreeDuplicatedString(void* p)
249+{
250+ if(p < (void*)0x00010000 || !((char*)p + 1))
251+ return;
252+ free(p);
253+}
254+
255+// 以下ラッパー
256+// 戻り値バッファ r
257+// ワイド文字バッファ pw%d
258+// マルチバイト文字バッファ pm%d
259+// 引数バッファ a%d
260+
261+#define START_ROUTINE do{
262+#define END_ROUTINE }while(0);end_of_routine:
263+#define QUIT_ROUTINE goto end_of_routine;
264+
265+HANDLE CreateFileM(LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile)
266+{
267+ HANDLE r = INVALID_HANDLE_VALUE;
268+ wchar_t* pw0 = NULL;
269+START_ROUTINE
270+ pw0 = DuplicateMtoW(lpFileName, -1);
271+ r = CreateFileW(pw0, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile);
272+END_ROUTINE
273+ FreeDuplicatedString(pw0);
274+ return r;
275+}
276+
277+int MessageBoxM(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType)
278+{
279+ int r = IDOK;
280+ wchar_t* pw0 = NULL;
281+ wchar_t* pw1 = NULL;
282+START_ROUTINE
283+ pw0 = DuplicateMtoW(lpText, -1);
284+ pw1 = DuplicateMtoW(lpCaption, -1);
285+ r = MessageBoxW(hWnd, pw0, pw1, uType);
286+END_ROUTINE
287+ FreeDuplicatedString(pw0);
288+ FreeDuplicatedString(pw1);
289+ return r;
290+}
291+
292+HANDLE FindFirstFileM(LPCSTR lpFileName, LPWIN32_FIND_DATAA lpFindFileData)
293+{
294+ HANDLE r = INVALID_HANDLE_VALUE;
295+ wchar_t* pw0 = NULL;
296+ WIN32_FIND_DATAW a0;
297+START_ROUTINE
298+ pw0 = DuplicateMtoW(lpFileName, -1);
299+ r = FindFirstFileW(pw0, &a0);
300+ if(r != INVALID_HANDLE_VALUE)
301+ {
302+ lpFindFileData->dwFileAttributes = a0.dwFileAttributes;
303+ lpFindFileData->ftCreationTime = a0.ftCreationTime;
304+ lpFindFileData->ftLastAccessTime = a0.ftLastAccessTime;
305+ lpFindFileData->ftLastWriteTime = a0.ftLastWriteTime;
306+ lpFindFileData->nFileSizeHigh = a0.nFileSizeHigh;
307+ lpFindFileData->nFileSizeLow = a0.nFileSizeLow;
308+ lpFindFileData->dwReserved0 = a0.dwReserved0;
309+ lpFindFileData->dwReserved1 = a0.dwReserved1;
310+ WtoM(lpFindFileData->cFileName, sizeof(lpFindFileData->cFileName), a0.cFileName, -1);
311+ WtoM(lpFindFileData->cAlternateFileName, sizeof(lpFindFileData->cAlternateFileName), a0.cAlternateFileName, -1);
312+ }
313+END_ROUTINE
314+ FreeDuplicatedString(pw0);
315+ return r;
316+}
317+
318+BOOL FindNextFileM(HANDLE hFindFile, LPWIN32_FIND_DATAA lpFindFileData)
319+{
320+ BOOL r = FALSE;
321+ WIN32_FIND_DATAW a0;
322+START_ROUTINE
323+ r = FindNextFileW(hFindFile, &a0);
324+ if(r)
325+ {
326+ lpFindFileData->dwFileAttributes = a0.dwFileAttributes;
327+ lpFindFileData->ftCreationTime = a0.ftCreationTime;
328+ lpFindFileData->ftLastAccessTime = a0.ftLastAccessTime;
329+ lpFindFileData->ftLastWriteTime = a0.ftLastWriteTime;
330+ lpFindFileData->nFileSizeHigh = a0.nFileSizeHigh;
331+ lpFindFileData->nFileSizeLow = a0.nFileSizeLow;
332+ lpFindFileData->dwReserved0 = a0.dwReserved0;
333+ lpFindFileData->dwReserved1 = a0.dwReserved1;
334+ WtoM(lpFindFileData->cFileName, sizeof(lpFindFileData->cFileName), a0.cFileName, -1);
335+ WtoM(lpFindFileData->cAlternateFileName, sizeof(lpFindFileData->cAlternateFileName), a0.cAlternateFileName, -1);
336+ }
337+END_ROUTINE
338+ return r;
339+}
340+
341+DWORD GetLogicalDriveStringsM(DWORD nBufferLength, LPSTR lpBuffer)
342+{
343+ // TODO: 本来は変換が必要だが半角英数のみと思われるので省略
344+ return GetLogicalDriveStringsA(nBufferLength, lpBuffer);
345+}
346+
347+HWND CreateWindowExM(DWORD dwExStyle, LPCSTR lpClassName, LPCSTR lpWindowName, DWORD dwStyle, int X, int Y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam)
348+{
349+ HWND r = NULL;
350+ wchar_t* pw0 = NULL;
351+ wchar_t* pw1 = NULL;
352+START_ROUTINE
353+ pw0 = DuplicateMtoW(lpClassName, -1);
354+ pw1 = DuplicateMtoW(lpWindowName, -1);
355+ r = CreateWindowExW(dwExStyle, pw0, pw1, dwStyle, X, Y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);
356+END_ROUTINE
357+ FreeDuplicatedString(pw0);
358+ FreeDuplicatedString(pw1);
359+ return r;
360+}
361+
362+LRESULT SendMessageM(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
363+{
364+ LRESULT r = 0;
365+ wchar_t* pw0 = NULL;
366+ wchar_t* pw1 = NULL;
367+ int Size;
368+ LVITEMA* pmLVItem;
369+ LVITEMW wLVItem;
370+ LVFINDINFOA* pmLVFindInfo;
371+ LVFINDINFOW wLVFindInfo;
372+ LVCOLUMNA* pmLVColumn;
373+ LVCOLUMNW wLVColumn;
374+ wchar_t ClassName[MAX_PATH];
375+START_ROUTINE
376+ switch(Msg)
377+ {
378+ case WM_SETTEXT:
379+ pw0 = DuplicateMtoW((LPCSTR)lParam, -1);
380+ r = SendMessageW(hWnd, WM_SETTEXT, wParam, (LPARAM)pw0);
381+ break;
382+ case WM_GETTEXT:
383+ pw0 = AllocateStringW(wParam * 4);
384+ SendMessageW(hWnd, WM_GETTEXT, wParam * 4, (LPARAM)pw0);
385+ WtoM((LPSTR)lParam, wParam, pw0, -1);
386+ r = TerminateStringM((LPSTR)lParam, wParam);
387+ break;
388+ case WM_GETTEXTLENGTH:
389+ Size = SendMessageW(hWnd, WM_GETTEXTLENGTH, 0, 0) + 1;
390+ pw0 = AllocateStringW(Size);
391+ SendMessageW(hWnd, WM_GETTEXT, (WPARAM)Size, (LPARAM)pw0);
392+ r = WtoM(NULL, 0, pw0, -1) - 1;
393+ break;
394+ default:
395+ GetClassNameW(hWnd, ClassName, sizeof(ClassName) / sizeof(wchar_t));
396+ if(wcsicmp(ClassName, WC_EDITW) == 0)
397+ {
398+ switch(Msg)
399+ {
400+ case EM_REPLACESEL:
401+ pw0 = DuplicateMtoW((LPCSTR)lParam, -1);
402+ r = SendMessageW(hWnd, EM_REPLACESEL, wParam, (LPARAM)pw0);
403+ break;
404+ default:
405+ r = SendMessageW(hWnd, Msg, wParam, lParam);
406+ break;
407+ }
408+ }
409+ else if(wcsicmp(ClassName, WC_COMBOBOXW) == 0)
410+ {
411+ switch(Msg)
412+ {
413+ case CB_ADDSTRING:
414+ pw0 = DuplicateMtoW((LPCSTR)lParam, -1);
415+ r = SendMessageW(hWnd, CB_ADDSTRING, wParam, (LPARAM)pw0);
416+ break;
417+ case CB_INSERTSTRING:
418+ pw0 = DuplicateMtoW((LPCSTR)lParam, -1);
419+ r = SendMessageW(hWnd, CB_INSERTSTRING, wParam, (LPARAM)pw0);
420+ break;
421+ case CB_FINDSTRINGEXACT:
422+ pw0 = DuplicateMtoW((LPCSTR)lParam, -1);
423+ r = SendMessageW(hWnd, CB_FINDSTRINGEXACT, wParam, (LPARAM)pw0);
424+ break;
425+ default:
426+ r = SendMessageW(hWnd, Msg, wParam, lParam);
427+ break;
428+ }
429+ }
430+ else if(wcsicmp(ClassName, WC_LISTBOXW) == 0)
431+ {
432+ switch(Msg)
433+ {
434+ case LB_ADDSTRING:
435+ pw0 = DuplicateMtoW((LPCSTR)lParam, -1);
436+ r = SendMessageW(hWnd, LB_ADDSTRING, wParam, (LPARAM)pw0);
437+ break;
438+ case LB_INSERTSTRING:
439+ pw0 = DuplicateMtoW((LPCSTR)lParam, -1);
440+ r = SendMessageW(hWnd, LB_INSERTSTRING, wParam, (LPARAM)pw0);
441+ break;
442+ case LB_GETTEXT:
443+ Size = SendMessageW(hWnd, LB_GETTEXTLEN, wParam, 0) + 1;
444+ pw0 = AllocateStringW(Size * 4);
445+ SendMessageW(hWnd, LB_GETTEXT, wParam, (LPARAM)pw0);
446+ // バッファ長不明のためオーバーランの可能性あり
447+ WtoM((LPSTR)lParam, Size * 4, pw0, -1);
448+ r = TerminateStringM((LPSTR)lParam, Size * 4);
449+ break;
450+ default:
451+ r = SendMessageW(hWnd, Msg, wParam, lParam);
452+ break;
453+ }
454+ }
455+ else if(wcsicmp(ClassName, WC_LISTVIEWW) == 0)
456+ {
457+ switch(Msg)
458+ {
459+ case LVM_GETITEMA:
460+ pmLVItem = (LVITEMA*)lParam;
461+ wLVItem.mask = pmLVItem->mask;
462+ wLVItem.iItem = pmLVItem->iItem;
463+ wLVItem.iSubItem = pmLVItem->iSubItem;
464+ wLVItem.state = pmLVItem->state;
465+ wLVItem.stateMask = pmLVItem->stateMask;
466+ Size = pmLVItem->cchTextMax * 4;
467+ pw0 = AllocateStringW(Size);
468+ wLVItem.pszText = pw0;
469+ wLVItem.cchTextMax = Size;
470+ wLVItem.iImage = pmLVItem->iImage;
471+ wLVItem.lParam = pmLVItem->lParam;
472+ wLVItem.iIndent = pmLVItem->iIndent;
473+ r = SendMessageW(hWnd, LVM_GETITEMW, wParam, (LPARAM)&wLVItem);
474+ pmLVItem->mask = wLVItem.mask;
475+ pmLVItem->iItem = wLVItem.iItem;
476+ pmLVItem->iSubItem = wLVItem.iSubItem;
477+ pmLVItem->state = wLVItem.state;
478+ pmLVItem->stateMask = wLVItem.stateMask;
479+ WtoM(pmLVItem->pszText, pmLVItem->cchTextMax, wLVItem.pszText, -1);
480+ TerminateStringM(pmLVItem->pszText, pmLVItem->cchTextMax);
481+ pmLVItem->iImage = wLVItem.iImage;
482+ pmLVItem->lParam = wLVItem.lParam;
483+ pmLVItem->iIndent = wLVItem.iIndent;
484+ break;
485+ case LVM_SETITEMA:
486+ pmLVItem = (LVITEMA*)lParam;
487+ wLVItem.mask = pmLVItem->mask;
488+ wLVItem.iItem = pmLVItem->iItem;
489+ wLVItem.iSubItem = pmLVItem->iSubItem;
490+ wLVItem.state = pmLVItem->state;
491+ wLVItem.stateMask = pmLVItem->stateMask;
492+ pw0 = DuplicateMtoW(pmLVItem->pszText, -1);
493+ wLVItem.pszText = pw0;
494+ // TODO: cchTextMaxの確認
495+ wLVItem.cchTextMax = pmLVItem->cchTextMax;
496+ wLVItem.iImage = pmLVItem->iImage;
497+ wLVItem.lParam = pmLVItem->lParam;
498+ wLVItem.iIndent = pmLVItem->iIndent;
499+ r = SendMessageW(hWnd, LVM_SETITEMW, wParam, (LPARAM)&wLVItem);
500+ break;
501+ case LVM_INSERTITEMA:
502+ pmLVItem = (LVITEMA*)lParam;
503+ wLVItem.mask = pmLVItem->mask;
504+ wLVItem.iItem = pmLVItem->iItem;
505+ wLVItem.iSubItem = pmLVItem->iSubItem;
506+ wLVItem.state = pmLVItem->state;
507+ wLVItem.stateMask = pmLVItem->stateMask;
508+ pw0 = DuplicateMtoW(pmLVItem->pszText, -1);
509+ wLVItem.pszText = pw0;
510+ // TODO: cchTextMaxの確認
511+ wLVItem.cchTextMax = pmLVItem->cchTextMax;
512+ wLVItem.iImage = pmLVItem->iImage;
513+ wLVItem.lParam = pmLVItem->lParam;
514+ wLVItem.iIndent = pmLVItem->iIndent;
515+ r = SendMessageW(hWnd, LVM_INSERTITEMW, wParam, (LPARAM)&wLVItem);
516+ break;
517+ case LVM_FINDITEMA:
518+ pmLVFindInfo = (LVFINDINFOA*)lParam;
519+ wLVFindInfo.flags = pmLVFindInfo->flags;
520+ pw0 = DuplicateMtoW(pmLVFindInfo->psz, -1);
521+ wLVFindInfo.psz = pw0;
522+ wLVFindInfo.lParam = pmLVFindInfo->lParam;
523+ wLVFindInfo.pt = pmLVFindInfo->pt;
524+ wLVFindInfo.vkDirection = pmLVFindInfo->vkDirection;
525+ r = SendMessageW(hWnd, LVM_FINDITEMW, wParam, (LPARAM)&wLVItem);
526+ break;
527+ case LVM_INSERTCOLUMNA:
528+ pmLVColumn = (LVCOLUMNA*)lParam;
529+ wLVColumn.mask = pmLVColumn->mask;
530+ wLVColumn.fmt = pmLVColumn->fmt;
531+ wLVColumn.cx = pmLVColumn->cx;
532+ pw0 = DuplicateMtoW(pmLVColumn->pszText, -1);
533+ wLVColumn.pszText = pw0;
534+ wLVColumn.cchTextMax = pmLVColumn->cchTextMax;
535+ wLVColumn.iSubItem = pmLVColumn->iSubItem;
536+ wLVColumn.iImage = pmLVColumn->iImage;
537+ wLVColumn.iOrder = pmLVColumn->iOrder;
538+ r = SendMessageW(hWnd, LVM_INSERTCOLUMNW, wParam, (LPARAM)&wLVColumn);
539+ break;
540+ case LVM_GETITEMTEXTA:
541+ pmLVItem = (LVITEMA*)lParam;
542+ wLVItem.mask = pmLVItem->mask;
543+ wLVItem.iItem = pmLVItem->iItem;
544+ wLVItem.iSubItem = pmLVItem->iSubItem;
545+ wLVItem.state = pmLVItem->state;
546+ wLVItem.stateMask = pmLVItem->stateMask;
547+ Size = pmLVItem->cchTextMax * 4;
548+ pw0 = AllocateStringW(Size);
549+ wLVItem.pszText = pw0;
550+ wLVItem.cchTextMax = Size;
551+ wLVItem.iImage = pmLVItem->iImage;
552+ wLVItem.lParam = pmLVItem->lParam;
553+ wLVItem.iIndent = pmLVItem->iIndent;
554+ r = SendMessageW(hWnd, LVM_GETITEMTEXTW, wParam, (LPARAM)&wLVItem);
555+ pmLVItem->mask = wLVItem.mask;
556+ pmLVItem->iItem = wLVItem.iItem;
557+ pmLVItem->iSubItem = wLVItem.iSubItem;
558+ pmLVItem->state = wLVItem.state;
559+ pmLVItem->stateMask = wLVItem.stateMask;
560+ WtoM(pmLVItem->pszText, pmLVItem->cchTextMax, wLVItem.pszText, -1);
561+ TerminateStringM(pmLVItem->pszText, pmLVItem->cchTextMax);
562+ pmLVItem->iImage = wLVItem.iImage;
563+ pmLVItem->lParam = wLVItem.lParam;
564+ pmLVItem->iIndent = wLVItem.iIndent;
565+ break;
566+ default:
567+ r = SendMessageW(hWnd, Msg, wParam, lParam);
568+ break;
569+ }
570+ }
571+ else if(wcsicmp(ClassName, STATUSCLASSNAMEW) == 0)
572+ {
573+ switch(Msg)
574+ {
575+ case SB_SETTEXTA:
576+ pw0 = DuplicateMtoW((LPCSTR)lParam, -1);
577+ r = SendMessageW(hWnd, SB_SETTEXTW, wParam, (LPARAM)pw0);
578+ break;
579+ default:
580+ r = SendMessageW(hWnd, Msg, wParam, lParam);
581+ break;
582+ }
583+ }
584+ else
585+ r = SendMessageW(hWnd, Msg, wParam, lParam);
586+ break;
587+ }
588+END_ROUTINE
589+ FreeDuplicatedString(pw0);
590+ FreeDuplicatedString(pw1);
591+ return r;
592+}
593+
594+LRESULT SendDlgItemMessageM(HWND hDlg, int nIDDlgItem, UINT Msg, WPARAM wParam, LPARAM lParam)
595+{
596+ LRESULT r = 0;
597+START_ROUTINE
598+ r = SendMessageM(GetDlgItem(hDlg, nIDDlgItem), Msg, wParam, lParam);
599+END_ROUTINE
600+ return r;
601+}
602+
603+BOOL SetWindowTextM(HWND hWnd, LPCSTR lpString)
604+{
605+ BOOL r = FALSE;
606+ wchar_t* pw0 = NULL;
607+START_ROUTINE
608+ pw0 = DuplicateMtoW(lpString, -1);
609+ r = SetWindowTextW(hWnd, pw0);
610+END_ROUTINE
611+ FreeDuplicatedString(pw0);
612+ return r;
613+}
614+
615+UINT DragQueryFileM(HDROP hDrop, UINT iFile, LPSTR lpszFile, UINT cch)
616+{
617+ UINT r = 0;
618+ wchar_t* pw0 = NULL;
619+START_ROUTINE
620+ pw0 = AllocateStringW(cch * 4);
621+ DragQueryFileW(hDrop, iFile, pw0, cch * 4);
622+ WtoM(lpszFile, cch, pw0, -1);
623+ r = TerminateStringM(lpszFile, cch);
624+END_ROUTINE
625+ FreeDuplicatedString(pw0);
626+ return r;
627+}
628+
629+DWORD GetCurrentDirectoryM(DWORD nBufferLength, LPSTR lpBuffer)
630+{
631+ DWORD r = 0;
632+ wchar_t* pw0 = NULL;
633+START_ROUTINE
634+ pw0 = AllocateStringW(nBufferLength * 4);
635+ GetCurrentDirectoryW(nBufferLength * 4, pw0);
636+ WtoM(lpBuffer, nBufferLength, pw0, -1);
637+ r = TerminateStringM(lpBuffer, nBufferLength);
638+END_ROUTINE
639+ FreeDuplicatedString(pw0);
640+ return r;
641+}
642+
643+BOOL SetCurrentDirectoryM(LPCSTR lpPathName)
644+{
645+ BOOL r = FALSE;
646+ wchar_t* pw0 = NULL;
647+START_ROUTINE
648+ pw0 = DuplicateMtoW(lpPathName, -1);
649+ r = SetCurrentDirectoryW(pw0);
650+END_ROUTINE
651+ FreeDuplicatedString(pw0);
652+ return r;
653+}
654+
655+BOOL SetDllDirectoryM(LPCSTR lpPathName)
656+{
657+ BOOL r = FALSE;
658+ wchar_t* pw0 = NULL;
659+START_ROUTINE
660+ pw0 = DuplicateMtoW(lpPathName, -1);
661+ r = SetDllDirectoryW(pw0);
662+END_ROUTINE
663+ FreeDuplicatedString(pw0);
664+ return r;
665+}
666+
667+DWORD GetFileAttributesM(LPCSTR lpFileName)
668+{
669+ DWORD r = FALSE;
670+ wchar_t* pw0 = NULL;
671+START_ROUTINE
672+ pw0 = DuplicateMtoW(lpFileName, -1);
673+ r = GetFileAttributesW(pw0);
674+END_ROUTINE
675+ FreeDuplicatedString(pw0);
676+ return r;
677+}
678+
679+DWORD GetModuleFileNameM(HMODULE hModule, LPCH lpFilename, DWORD nSize)
680+{
681+ DWORD r = 0;
682+ wchar_t* pw0 = NULL;
683+START_ROUTINE
684+ pw0 = AllocateStringW(nSize * 4);
685+ GetModuleFileNameW(hModule, pw0, nSize * 4);
686+ WtoM(lpFilename, nSize, pw0, -1);
687+ r = TerminateStringM(lpFilename, nSize);
688+END_ROUTINE
689+ FreeDuplicatedString(pw0);
690+ return r;
691+}
692+
693+LSTATUS RegOpenKeyExM(HKEY hKey, LPCSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
694+{
695+ LSTATUS r = 0;
696+ wchar_t* pw0 = NULL;
697+START_ROUTINE
698+ pw0 = DuplicateMtoW(lpSubKey, -1);
699+ r = RegOpenKeyExW(hKey, pw0, ulOptions, samDesired, phkResult);
700+END_ROUTINE
701+ FreeDuplicatedString(pw0);
702+ return r;
703+}
704+
705+LSTATUS RegCreateKeyExM(HKEY hKey, LPCSTR lpSubKey, DWORD Reserved, LPSTR lpClass, DWORD dwOptions, REGSAM samDesired, CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes, PHKEY phkResult, LPDWORD lpdwDisposition)
706+{
707+ LSTATUS r = 0;
708+ wchar_t* pw0 = NULL;
709+ wchar_t* pw1 = NULL;
710+START_ROUTINE
711+ pw0 = DuplicateMtoW(lpSubKey, -1);
712+ pw1 = DuplicateMtoW(lpClass, -1);
713+ r = RegCreateKeyExW(hKey, pw0, Reserved, pw1, dwOptions, samDesired, lpSecurityAttributes, phkResult, lpdwDisposition);
714+END_ROUTINE
715+ FreeDuplicatedString(pw0);
716+ FreeDuplicatedString(pw1);
717+ return r;
718+}
719+
720+LSTATUS RegDeleteValueM(HKEY hKey, LPCSTR lpValueName)
721+{
722+ LSTATUS r = 0;
723+ wchar_t* pw0 = NULL;
724+START_ROUTINE
725+ pw0 = DuplicateMtoW(lpValueName, -1);
726+ r = RegDeleteValueW(hKey, pw0);
727+END_ROUTINE
728+ FreeDuplicatedString(pw0);
729+ return r;
730+}
731+
732+LSTATUS RegQueryValueExM(HKEY hKey, LPCSTR lpValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData)
733+{
734+ LSTATUS r = 0;
735+ wchar_t* pw0 = NULL;
736+START_ROUTINE
737+ pw0 = DuplicateMtoW(lpValueName, -1);
738+ // TODO: レジストリはUTF-8で保存されてしまう(以前のバージョンと互換性なし)
739+ // UTF-16で保存するべき
740+ r = RegQueryValueExW(hKey, pw0, lpReserved, lpType, lpData, lpcbData);
741+END_ROUTINE
742+ FreeDuplicatedString(pw0);
743+ return r;
744+}
745+
746+LSTATUS RegSetValueExM(HKEY hKey, LPCSTR lpValueName, DWORD Reserved, DWORD dwType, CONST BYTE* lpData, DWORD cbData)
747+{
748+ LSTATUS r = 0;
749+ wchar_t* pw0 = NULL;
750+START_ROUTINE
751+ pw0 = DuplicateMtoW(lpValueName, -1);
752+ // TODO: レジストリはUTF-8で保存されてしまう(以前のバージョンと互換性なし)
753+ // UTF-16で保存するべき
754+ r = RegSetValueExW(hKey, pw0, Reserved, dwType, lpData, cbData);
755+END_ROUTINE
756+ FreeDuplicatedString(pw0);
757+ return r;
758+}
759+
760+BOOL TextOutM(HDC hdc, int x, int y, LPCSTR lpString, int c)
761+{
762+ BOOL r = FALSE;
763+ wchar_t* pw0 = NULL;
764+START_ROUTINE
765+ pw0 = DuplicateMtoW(lpString, c);
766+ r = TextOutW(hdc, x, y, pw0, wcslen(pw0));
767+END_ROUTINE
768+ FreeDuplicatedString(pw0);
769+ return r;
770+}
771+
772+BOOL GetTextExtentPoint32M(HDC hdc, LPCSTR lpString, int c, LPSIZE psizl)
773+{
774+ BOOL r = FALSE;
775+ wchar_t* pw0 = NULL;
776+START_ROUTINE
777+ pw0 = DuplicateMtoW(lpString, c);
778+ r = GetTextExtentPoint32W(hdc, pw0, wcslen(pw0), psizl);
779+END_ROUTINE
780+ FreeDuplicatedString(pw0);
781+ return r;
782+}
783+
784+INT_PTR PropertySheetM(LPCPROPSHEETHEADERA v0)
785+{
786+ INT_PTR r = 0;
787+ PROPSHEETHEADERW a0;
788+ PROPSHEETPAGEW* pwPage;
789+ UINT i;
790+START_ROUTINE
791+ a0.dwSize = sizeof(PROPSHEETHEADERW);
792+ a0.dwFlags = v0->dwFlags;
793+ a0.hwndParent = v0->hwndParent;
794+ a0.hInstance = v0->hInstance;
795+ if(v0->dwFlags & PSH_USEICONID)
796+ a0.pszIcon = DuplicateMtoW(v0->pszIcon, -1);
797+ else
798+ a0.hIcon = v0->hIcon;
799+ a0.pszCaption = DuplicateMtoW(v0->pszCaption, -1);
800+ a0.nPages = v0->nPages;
801+ a0.pStartPage = DuplicateMtoW(v0->pStartPage, -1);
802+ if(v0->ppsp && (pwPage = (PROPSHEETPAGEW*)malloc(sizeof(PROPSHEETPAGEW) * v0->nPages)))
803+ {
804+ for(i = 0; i < v0->nPages; i++)
805+ {
806+ pwPage[i].dwSize = sizeof(PROPSHEETPAGEW);
807+ pwPage[i].dwFlags = v0->ppsp[i].dwFlags;
808+ pwPage[i].hInstance = v0->ppsp[i].hInstance;
809+ pwPage[i].pszTemplate = DuplicateMtoW(v0->ppsp[i].pszTemplate, -1);
810+ if(v0->ppsp[i].dwFlags & PSP_USEICONID)
811+ pwPage[i].pszIcon = DuplicateMtoW(v0->ppsp[i].pszIcon, -1);
812+ else
813+ pwPage[i].hIcon = v0->ppsp[i].hIcon;
814+ if(v0->ppsp[i].dwFlags & PSP_USETITLE)
815+ pwPage[i].pszTitle = DuplicateMtoW(v0->ppsp[i].pszTitle, -1);
816+ pwPage[i].pfnDlgProc = v0->ppsp[i].pfnDlgProc;
817+ pwPage[i].lParam = v0->ppsp[i].lParam;
818+ // TODO: pfnCallback
819+ pwPage[i].pfnCallback = v0->ppsp[i].pfnCallback;
820+ pwPage[i].pcRefParent = v0->ppsp[i].pcRefParent;
821+// pwPage[i].pszHeaderTitle = DuplicateMtoW(v0->ppsp[i].pszHeaderTitle, -1);
822+// pwPage[i].pszHeaderSubTitle = DuplicateMtoW(v0->ppsp[i].pszHeaderSubTitle, -1);
823+ pwPage[i].hActCtx = v0->ppsp[i].hActCtx;
824+// pwPage[i].pszbmHeader = DuplicateMtoW(v0->ppsp[i].pszbmHeader, -1);
825+ }
826+ }
827+ else
828+ pwPage = NULL;
829+ a0.ppsp = pwPage;
830+ a0.pfnCallback = v0->pfnCallback;
831+ r = PropertySheetW(&a0);
832+ if(a0.dwFlags & PSH_USEICONID)
833+ FreeDuplicatedString(a0.pszIcon);
834+ FreeDuplicatedString(a0.pszCaption);
835+ FreeDuplicatedString(a0.pStartPage);
836+ if(pwPage)
837+ {
838+ for(i = 0; i < v0->nPages; i++)
839+ {
840+ FreeDuplicatedString(pwPage[i].pszTemplate);
841+ if(pwPage[i].dwFlags & PSP_USEICONID)
842+ FreeDuplicatedString(pwPage[i].pszIcon);
843+ if(pwPage[i].dwFlags & PSP_USETITLE)
844+ FreeDuplicatedString(pwPage[i].pszTitle);
845+// FreeDuplicatedString(pwPage[i].pszHeaderTitle);
846+// FreeDuplicatedString(pwPage[i].pszHeaderSubTitle);
847+// FreeDuplicatedString(pwPage[i].pszbmHeader);
848+ }
849+ free(pwPage);
850+ }
851+END_ROUTINE
852+ return r;
853+}
854+
855+BOOL GetOpenFileNameM(LPOPENFILENAMEA v0)
856+{
857+ BOOL r = FALSE;
858+ wchar_t* pw0 = NULL;
859+ wchar_t* pw1 = NULL;
860+ wchar_t* pw2 = NULL;
861+ wchar_t* pw3 = NULL;
862+ wchar_t* pw4 = NULL;
863+ wchar_t* pw5 = NULL;
864+ wchar_t* pw6 = NULL;
865+ wchar_t* pw7 = NULL;
866+ wchar_t* pw8 = NULL;
867+ wchar_t* pw9 = NULL;
868+ OPENFILENAMEW wofn;
869+START_ROUTINE
870+ wofn.lStructSize = sizeof(OPENFILENAMEW);
871+ wofn.hwndOwner = v0->hwndOwner;
872+ wofn.hInstance = v0->hInstance;
873+ pw0 = DuplicateMtoWMultiString(v0->lpstrFilter);
874+ wofn.lpstrFilter = pw0;
875+ pw1 = DuplicateMtoWBuffer(v0->lpstrCustomFilter, -1, v0->nMaxCustFilter * 4);
876+ wofn.lpstrCustomFilter = pw1;
877+ wofn.nMaxCustFilter = v0->nMaxCustFilter * 4;
878+ wofn.nFilterIndex = v0->nFilterIndex;
879+ pw2 = DuplicateMtoWMultiStringBuffer(v0->lpstrFile, v0->nMaxFile * 4);
880+ wofn.lpstrFile = pw2;
881+ wofn.nMaxFile = v0->nMaxFile * 4;
882+ pw3 = DuplicateMtoWBuffer(v0->lpstrFileTitle, -1, v0->nMaxFileTitle * 4);
883+ wofn.lpstrFileTitle = pw3;
884+ wofn.nMaxFileTitle = v0->nMaxFileTitle * 4;
885+ pw4 = DuplicateMtoW(v0->lpstrInitialDir, -1);
886+ wofn.lpstrInitialDir = pw4;
887+ pw5 = DuplicateMtoW(v0->lpstrTitle, -1);
888+ wofn.lpstrTitle = pw5;
889+ wofn.Flags = v0->Flags;
890+ wofn.nFileOffset = MtoW(NULL, 0, v0->lpstrFile, v0->nFileOffset);
891+ wofn.nFileExtension = MtoW(NULL, 0, v0->lpstrFile, v0->nFileExtension);
892+ pw6 = DuplicateMtoW(v0->lpstrDefExt, -1);
893+ wofn.lpstrDefExt = pw6;
894+ wofn.lCustData = v0->lCustData;
895+ wofn.lpfnHook = v0->lpfnHook;
896+ wofn.lpTemplateName = DuplicateMtoW(v0->lpTemplateName, -1);
897+ wofn.pvReserved = v0->pvReserved;
898+ wofn.FlagsEx = v0->FlagsEx;
899+ r = GetOpenFileNameW(&wofn);
900+ WtoM(v0->lpstrFile, v0->nMaxFile, wofn.lpstrFile, -1);
901+ TerminateStringM(v0->lpstrFile, v0->nMaxFile);
902+ v0->nFileOffset = WtoM(NULL, 0, wofn.lpstrFile, wofn.nFileOffset);
903+ v0->nFileExtension = WtoM(NULL, 0, wofn.lpstrFile, wofn.nFileExtension);
904+END_ROUTINE
905+ FreeDuplicatedString(pw0);
906+ FreeDuplicatedString(pw1);
907+ FreeDuplicatedString(pw2);
908+ FreeDuplicatedString(pw3);
909+ FreeDuplicatedString(pw4);
910+ FreeDuplicatedString(pw5);
911+ FreeDuplicatedString(pw6);
912+ return r;
913+}
914+
915+BOOL GetSaveFileNameM(LPOPENFILENAMEA v0)
916+{
917+ BOOL r = FALSE;
918+ wchar_t* pw0 = NULL;
919+ wchar_t* pw1 = NULL;
920+ wchar_t* pw2 = NULL;
921+ wchar_t* pw3 = NULL;
922+ wchar_t* pw4 = NULL;
923+ wchar_t* pw5 = NULL;
924+ wchar_t* pw6 = NULL;
925+ wchar_t* pw7 = NULL;
926+ wchar_t* pw8 = NULL;
927+ wchar_t* pw9 = NULL;
928+ OPENFILENAMEW wofn;
929+START_ROUTINE
930+ wofn.lStructSize = sizeof(OPENFILENAMEW);
931+ wofn.hwndOwner = v0->hwndOwner;
932+ wofn.hInstance = v0->hInstance;
933+ pw0 = DuplicateMtoWMultiString(v0->lpstrFilter);
934+ wofn.lpstrFilter = pw0;
935+ pw1 = DuplicateMtoWBuffer(v0->lpstrCustomFilter, -1, v0->nMaxCustFilter * 4);
936+ wofn.lpstrCustomFilter = pw1;
937+ wofn.nMaxCustFilter = v0->nMaxCustFilter * 4;
938+ wofn.nFilterIndex = v0->nFilterIndex;
939+ pw2 = DuplicateMtoWMultiStringBuffer(v0->lpstrFile, v0->nMaxFile * 4);
940+ wofn.lpstrFile = pw2;
941+ wofn.nMaxFile = v0->nMaxFile * 4;
942+ pw3 = DuplicateMtoWBuffer(v0->lpstrFileTitle, -1, v0->nMaxFileTitle * 4);
943+ wofn.lpstrFileTitle = pw3;
944+ wofn.nMaxFileTitle = v0->nMaxFileTitle * 4;
945+ pw4 = DuplicateMtoW(v0->lpstrInitialDir, -1);
946+ wofn.lpstrInitialDir = pw4;
947+ pw5 = DuplicateMtoW(v0->lpstrTitle, -1);
948+ wofn.lpstrTitle = pw5;
949+ wofn.Flags = v0->Flags;
950+ wofn.nFileOffset = MtoW(NULL, 0, v0->lpstrFile, v0->nFileOffset);
951+ wofn.nFileExtension = MtoW(NULL, 0, v0->lpstrFile, v0->nFileExtension);
952+ pw6 = DuplicateMtoW(v0->lpstrDefExt, -1);
953+ wofn.lpstrDefExt = pw6;
954+ wofn.lCustData = v0->lCustData;
955+ wofn.lpfnHook = v0->lpfnHook;
956+ wofn.lpTemplateName = DuplicateMtoW(v0->lpTemplateName, -1);
957+ wofn.pvReserved = v0->pvReserved;
958+ wofn.FlagsEx = v0->FlagsEx;
959+ r = GetSaveFileNameW(&wofn);
960+ WtoM(v0->lpstrFile, v0->nMaxFile, wofn.lpstrFile, -1);
961+ TerminateStringM(v0->lpstrFile, v0->nMaxFile);
962+ v0->nFileOffset = WtoM(NULL, 0, wofn.lpstrFile, wofn.nFileOffset);
963+ v0->nFileExtension = WtoM(NULL, 0, wofn.lpstrFile, wofn.nFileExtension);
964+END_ROUTINE
965+ FreeDuplicatedString(pw0);
966+ FreeDuplicatedString(pw1);
967+ FreeDuplicatedString(pw2);
968+ FreeDuplicatedString(pw3);
969+ FreeDuplicatedString(pw4);
970+ FreeDuplicatedString(pw5);
971+ FreeDuplicatedString(pw6);
972+ return r;
973+}
974+
975+HWND HtmlHelpM(HWND hwndCaller, LPCSTR pszFile, UINT uCommand, DWORD_PTR dwData)
976+{
977+ HINSTANCE r = NULL;
978+ wchar_t* pw0 = NULL;
979+START_ROUTINE
980+ pw0 = DuplicateMtoW(pszFile, -1);
981+ r = HtmlHelpW(hwndCaller, pw0, uCommand, dwData);
982+END_ROUTINE
983+ FreeDuplicatedString(pw0);
984+ return r;
985+}
986+
987+HINSTANCE ShellExecuteM(HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT nShowCmd)
988+{
989+ HINSTANCE r = NULL;
990+ wchar_t* pw0 = NULL;
991+ wchar_t* pw1 = NULL;
992+ wchar_t* pw2 = NULL;
993+ wchar_t* pw3 = NULL;
994+START_ROUTINE
995+ pw0 = DuplicateMtoW(lpOperation, -1);
996+ pw1 = DuplicateMtoW(lpFile, -1);
997+ pw2 = DuplicateMtoW(lpParameters, -1);
998+ pw3 = DuplicateMtoW(lpDirectory, -1);
999+ r = ShellExecuteW(hwnd, pw0, pw1, pw2, pw3, nShowCmd);
1000+END_ROUTINE
1001+ FreeDuplicatedString(pw0);
1002+ FreeDuplicatedString(pw1);
1003+ FreeDuplicatedString(pw2);
1004+ FreeDuplicatedString(pw3);
1005+ return r;
1006+}
1007+
1008+PIDLIST_ABSOLUTE SHBrowseForFolderM(LPBROWSEINFOA lpbi)
1009+{
1010+ PIDLIST_ABSOLUTE r = NULL;
1011+ wchar_t* pw0 = NULL;
1012+ wchar_t* pw1 = NULL;
1013+ BROWSEINFOW wbi;
1014+START_ROUTINE
1015+ wbi.hwndOwner = lpbi->hwndOwner;
1016+ wbi.pidlRoot = lpbi->pidlRoot;
1017+ pw0 = DuplicateMtoWBuffer(lpbi->pszDisplayName, -1, MAX_PATH * 4);
1018+ wbi.pszDisplayName = pw0;
1019+ pw1 = DuplicateMtoW(lpbi->lpszTitle, -1);
1020+ wbi.lpszTitle = pw1;
1021+ wbi.ulFlags = lpbi->ulFlags;
1022+ // TODO: lpfn
1023+ wbi.lpfn = lpbi->lpfn;
1024+ wbi.lParam = lpbi->lParam;
1025+ wbi.iImage = lpbi->iImage;
1026+ r = SHBrowseForFolderW(&wbi);
1027+ // バッファ長不明のためオーバーランの可能性あり
1028+ WtoM(lpbi->pszDisplayName, MAX_PATH, wbi.pszDisplayName, -1);
1029+ lpbi->iImage = wbi.iImage;
1030+END_ROUTINE
1031+ FreeDuplicatedString(pw0);
1032+ FreeDuplicatedString(pw1);
1033+ return r;
1034+}
1035+
1036+BOOL SHGetPathFromIDListM(PCIDLIST_ABSOLUTE pidl, LPSTR pszPath)
1037+{
1038+ BOOL r = FALSE;
1039+ wchar_t* pw0 = NULL;
1040+START_ROUTINE
1041+ pw0 = AllocateStringW(MAX_PATH * 4);
1042+ r = SHGetPathFromIDListW(pidl, pw0);
1043+ // バッファ長不明のためオーバーランの可能性あり
1044+ WtoM(pszPath, MAX_PATH, pw0, -1);
1045+ TerminateStringM(pszPath, MAX_PATH);
1046+END_ROUTINE
1047+ FreeDuplicatedString(pw0);
1048+ return r;
1049+}
1050+
1051+int SHFileOperationM(LPSHFILEOPSTRUCTA lpFileOp)
1052+{
1053+ int r = 0;
1054+ wchar_t* pw0 = NULL;
1055+ wchar_t* pw1 = NULL;
1056+ wchar_t* pw2 = NULL;
1057+ SHFILEOPSTRUCTW wFileOp;
1058+START_ROUTINE
1059+ wFileOp.hwnd = lpFileOp->hwnd;
1060+ wFileOp.wFunc = lpFileOp->wFunc;
1061+ pw0 = DuplicateMtoWMultiString(lpFileOp->pFrom);
1062+ wFileOp.pFrom = pw0;
1063+ pw1 = DuplicateMtoWMultiString(lpFileOp->pTo);
1064+ wFileOp.pTo = pw1;
1065+ wFileOp.fFlags = lpFileOp->fFlags;
1066+ wFileOp.fAnyOperationsAborted = lpFileOp->fAnyOperationsAborted;
1067+ wFileOp.hNameMappings = lpFileOp->hNameMappings;
1068+ pw2 = DuplicateMtoW(lpFileOp->lpszProgressTitle, -1);
1069+ r = SHFileOperationW(&wFileOp);
1070+ lpFileOp->fAnyOperationsAborted = wFileOp.fAnyOperationsAborted;
1071+END_ROUTINE
1072+ FreeDuplicatedString(pw0);
1073+ FreeDuplicatedString(pw1);
1074+ FreeDuplicatedString(pw2);
1075+ return r;
1076+}
1077+
1078+BOOL AppendMenuM(HMENU hMenu, UINT uFlags, UINT_PTR uIDNewItem, LPCSTR lpNewItem)
1079+{
1080+ int r = 0;
1081+ wchar_t* pw0 = NULL;
1082+START_ROUTINE
1083+ if(uFlags & (MF_BITMAP | MF_OWNERDRAW))
1084+ r = AppendMenuW(hMenu, uFlags, uIDNewItem, (LPCWSTR)lpNewItem);
1085+ else
1086+ {
1087+ pw0 = DuplicateMtoW(lpNewItem, -1);
1088+ r = AppendMenuW(hMenu, uFlags, uIDNewItem, pw0);
1089+ }
1090+END_ROUTINE
1091+ FreeDuplicatedString(pw0);
1092+ return r;
1093+}
1094+
1095+BOOL GetMenuItemInfoM(HMENU hmenu, UINT item, BOOL fByPosition, LPMENUITEMINFOA lpmii)
1096+{
1097+ BOOL r = FALSE;
1098+ wchar_t* pw0 = NULL;
1099+ MENUITEMINFOW wmii;
1100+START_ROUTINE
1101+ wmii.cbSize = sizeof(MENUITEMINFOW);
1102+ wmii.fMask = lpmii->fMask;
1103+ wmii.fType = lpmii->fType;
1104+ wmii.fState = lpmii->fState;
1105+ wmii.wID = lpmii->wID;
1106+ wmii.hSubMenu = lpmii->hSubMenu;
1107+ wmii.hbmpChecked = lpmii->hbmpChecked;
1108+ wmii.hbmpUnchecked = lpmii->hbmpUnchecked;
1109+ wmii.dwItemData = lpmii->dwItemData;
1110+ pw0 = DuplicateMtoWBuffer(lpmii->dwTypeData, -1, lpmii->cch * 4);
1111+ wmii.dwTypeData = pw0;
1112+ wmii.cch = lpmii->cch * 4;
1113+ r = GetMenuItemInfoW(hmenu, item, fByPosition, &wmii);
1114+ lpmii->fType = wmii.fType;
1115+ lpmii->fState = wmii.fState;
1116+ lpmii->wID = wmii.wID;
1117+ lpmii->hSubMenu = wmii.hSubMenu;
1118+ lpmii->hbmpChecked = wmii.hbmpChecked;
1119+ lpmii->hbmpUnchecked = wmii.hbmpUnchecked;
1120+ lpmii->dwItemData = wmii.dwItemData;
1121+ WtoM(lpmii->dwTypeData, lpmii->cch, wmii.dwTypeData, -1);
1122+ TerminateStringM(lpmii->dwTypeData, lpmii->cch);
1123+END_ROUTINE
1124+ FreeDuplicatedString(pw0);
1125+ return r;
1126+}
1127+
1128+HFONT CreateFontIndirectM(CONST LOGFONTA *lplf)
1129+{
1130+ HFONT r = NULL;
1131+ LOGFONTW wlf;
1132+START_ROUTINE
1133+ wlf.lfHeight = lplf->lfHeight;
1134+ wlf.lfWidth = lplf->lfWidth;
1135+ wlf.lfEscapement = lplf->lfEscapement;
1136+ wlf.lfOrientation = lplf->lfOrientation;
1137+ wlf.lfWeight = lplf->lfWeight;
1138+ wlf.lfItalic = lplf->lfItalic;
1139+ wlf.lfUnderline = lplf->lfUnderline;
1140+ wlf.lfStrikeOut = lplf->lfStrikeOut;
1141+ wlf.lfCharSet = lplf->lfCharSet;
1142+ wlf.lfOutPrecision = lplf->lfOutPrecision;
1143+ wlf.lfClipPrecision = lplf->lfClipPrecision;
1144+ wlf.lfQuality = lplf->lfQuality;
1145+ wlf.lfPitchAndFamily = lplf->lfPitchAndFamily;
1146+ MtoW(wlf.lfFaceName, LF_FACESIZE, lplf->lfFaceName, -1);
1147+ TerminateStringW(wlf.lfFaceName, LF_FACESIZE);
1148+ r = CreateFontIndirect(&wlf);
1149+END_ROUTINE
1150+ return r;
1151+}
1152+
1153+BOOL ChooseFontM(LPCHOOSEFONTA v0)
1154+{
1155+ BOOL r = FALSE;
1156+ wchar_t* pw0 = NULL;
1157+ CHOOSEFONTW a0;
1158+ LOGFONTW* pwlf;
1159+START_ROUTINE
1160+ a0.lStructSize = sizeof(CHOOSEFONTW);
1161+ a0.hwndOwner = v0->hwndOwner;
1162+ a0.hDC = v0->hDC;
1163+ if(v0->lpLogFont && (pwlf = (LOGFONTW*)malloc(sizeof(LOGFONTW))))
1164+ {
1165+ pwlf->lfHeight = v0->lpLogFont->lfHeight;
1166+ pwlf->lfWidth = v0->lpLogFont->lfWidth;
1167+ pwlf->lfEscapement = v0->lpLogFont->lfEscapement;
1168+ pwlf->lfOrientation = v0->lpLogFont->lfOrientation;
1169+ pwlf->lfWeight = v0->lpLogFont->lfWeight;
1170+ pwlf->lfItalic = v0->lpLogFont->lfItalic;
1171+ pwlf->lfUnderline = v0->lpLogFont->lfUnderline;
1172+ pwlf->lfStrikeOut = v0->lpLogFont->lfStrikeOut;
1173+ pwlf->lfCharSet = v0->lpLogFont->lfCharSet;
1174+ pwlf->lfOutPrecision = v0->lpLogFont->lfOutPrecision;
1175+ pwlf->lfClipPrecision = v0->lpLogFont->lfClipPrecision;
1176+ pwlf->lfQuality = v0->lpLogFont->lfQuality;
1177+ pwlf->lfPitchAndFamily = v0->lpLogFont->lfPitchAndFamily;
1178+ MtoW(pwlf->lfFaceName, LF_FACESIZE, v0->lpLogFont->lfFaceName, -1);
1179+ TerminateStringW(pwlf->lfFaceName, LF_FACESIZE);
1180+ }
1181+ else
1182+ pwlf = NULL;
1183+ a0.lpLogFont = pwlf;
1184+ a0.iPointSize = v0->iPointSize;
1185+ a0.Flags = v0->Flags;
1186+ a0.rgbColors = v0->rgbColors;
1187+ a0.lCustData = v0->lCustData;
1188+ a0.lpfnHook = v0->lpfnHook;
1189+ a0.lpTemplateName = DuplicateMtoW(v0->lpTemplateName, -1);
1190+ a0.hInstance = v0->hInstance;
1191+ a0.lpszStyle = DuplicateMtoWBuffer(v0->lpszStyle, -1, LF_FACESIZE * 4);
1192+ a0.nFontType = v0->nFontType;
1193+ a0.nSizeMin = v0->nSizeMin;
1194+ a0.nSizeMax = v0->nSizeMax;
1195+ r = ChooseFontW(&a0);
1196+ if(v0->lpLogFont)
1197+ {
1198+ v0->lpLogFont->lfHeight = pwlf->lfHeight;
1199+ v0->lpLogFont->lfWidth = pwlf->lfWidth;
1200+ v0->lpLogFont->lfEscapement = pwlf->lfEscapement;
1201+ v0->lpLogFont->lfOrientation = pwlf->lfOrientation;
1202+ v0->lpLogFont->lfWeight = pwlf->lfWeight;
1203+ v0->lpLogFont->lfItalic = pwlf->lfItalic;
1204+ v0->lpLogFont->lfUnderline = pwlf->lfUnderline;
1205+ v0->lpLogFont->lfStrikeOut = pwlf->lfStrikeOut;
1206+ v0->lpLogFont->lfCharSet = pwlf->lfCharSet;
1207+ v0->lpLogFont->lfOutPrecision = pwlf->lfOutPrecision;
1208+ v0->lpLogFont->lfClipPrecision = pwlf->lfClipPrecision;
1209+ v0->lpLogFont->lfQuality = pwlf->lfQuality;
1210+ v0->lpLogFont->lfPitchAndFamily = pwlf->lfPitchAndFamily;
1211+ WtoM(v0->lpLogFont->lfFaceName, LF_FACESIZE, pwlf->lfFaceName, -1);
1212+ TerminateStringM(v0->lpLogFont->lfFaceName, LF_FACESIZE);
1213+ }
1214+ v0->rgbColors = a0.rgbColors;
1215+ WtoM(v0->lpszStyle, LF_FACESIZE, a0.lpszStyle, -1);
1216+ TerminateStringM(v0->lpszStyle, LF_FACESIZE);
1217+ v0->nFontType = a0.nFontType;
1218+ if(pwlf)
1219+ free(pwlf);
1220+ FreeDuplicatedString(a0.lpTemplateName);
1221+ FreeDuplicatedString(a0.lpszStyle);
1222+END_ROUTINE
1223+ FreeDuplicatedString(pw0);
1224+ return r;
1225+}
1226+
1227+
1228+
1229+
1230+
1231+
1232+
1233+
--- /dev/null
+++ b/mbswrapper.h
@@ -0,0 +1,103 @@
1+// mbswrapper.h
2+// Copyright (C) 2011 Suguru Kawamoto
3+// マルチバイト文字ワイド文字APIラッパー
4+
5+#ifndef __MBSWRAPPER_H__
6+#define __MBSWRAPPER_H__
7+
8+#ifndef DO_NOT_REPLACE
9+
10+#undef CreateFile
11+#define CreateFile CreateFileM
12+#undef MessageBox
13+#define MessageBox MessageBoxM
14+#undef FindFirstFile
15+#define FindFirstFile FindFirstFileM
16+#undef FindNextFile
17+#define FindNextFile FindNextFileM
18+#undef GetLogicalDriveStrings
19+#define GetLogicalDriveStrings GetLogicalDriveStringsM
20+#undef CreateWindowEx
21+#define CreateWindowEx CreateWindowExM
22+#undef SendMessage
23+#define SendMessage SendMessageM
24+#undef SendDlgItemMessage
25+#define SendDlgItemMessage SendDlgItemMessageM
26+#undef SetWindowText
27+#define SetWindowText SetWindowTextM
28+#undef DragQueryFile
29+#define DragQueryFile DragQueryFileM
30+#undef GetCurrentDirectory
31+#define GetCurrentDirectory GetCurrentDirectoryM
32+#undef SetCurrentDirectory
33+#define SetCurrentDirectory SetCurrentDirectoryM
34+#undef SetDllDirectory
35+#define SetDllDirectory SetDllDirectoryM
36+#undef GetFileAttributes
37+#define GetFileAttributes GetFileAttributesM
38+#undef GetModuleFileName
39+#define GetModuleFileName GetModuleFileNameM
40+#undef RegOpenKeyEx
41+#define RegOpenKeyEx RegOpenKeyExM
42+#undef RegCreateKeyEx
43+#define RegCreateKeyEx RegCreateKeyExM
44+#undef RegDeleteValue
45+#define RegDeleteValue RegDeleteValueM
46+#undef RegQueryValueEx
47+#define RegQueryValueEx RegQueryValueExM
48+#undef RegSetValueEx
49+#define RegSetValueEx RegSetValueExM
50+#undef TextOut
51+#define TextOut TextOutM
52+#undef GetTextExtentPoint32
53+#define GetTextExtentPoint32 GetTextExtentPoint32M
54+#undef PropertySheet
55+#define PropertySheet PropertySheetM
56+#undef GetOpenFileName
57+#define GetOpenFileName GetOpenFileNameM
58+#undef GetSaveFileName
59+#define GetSaveFileName GetSaveFileNameM
60+#undef HtmlHelp
61+#define HtmlHelp HtmlHelpM
62+#undef ShellExecute
63+#define ShellExecute ShellExecuteM
64+#undef SHBrowseForFolder
65+#define SHBrowseForFolder SHBrowseForFolderM
66+#undef SHGetPathFromIDList
67+#define SHGetPathFromIDList SHGetPathFromIDListM
68+#undef SHFileOperation
69+#define SHFileOperation SHFileOperationM
70+#undef AppendMenu
71+#define AppendMenu AppendMenuM
72+#undef GetMenuItemInfo
73+#define GetMenuItemInfo GetMenuItemInfoM
74+#undef CreateFontIndirect
75+#define CreateFontIndirect CreateFontIndirectM
76+#undef ChooseFont
77+#define ChooseFont ChooseFontM
78+
79+#undef CreateWindow
80+#define CreateWindow(lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam) CreateWindowEx(0L, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
81+
82+#endif
83+
84+int MtoW(LPWSTR pDst, int size, LPCSTR pSrc, int count);
85+int WtoM(LPSTR pDst, int size, LPCWSTR pSrc, int count);
86+int WtoA(LPSTR pDst, int size, LPCWSTR pSrc, int count);
87+int TerminateStringM(LPSTR lpString, int size);
88+int TerminateStringW(LPWSTR lpString, int size);
89+size_t GetMultiStringLengthM(LPCSTR lpString);
90+size_t GetMultiStringLengthW(LPCWSTR lpString);
91+char* AllocateStringM(int size);
92+wchar_t* AllocateStringW(int size);
93+char* AllocateStringA(int size);
94+wchar_t* DuplicateMtoW(LPCSTR lpString, int c);
95+wchar_t* DuplicateMtoWBuffer(LPCSTR lpString, int c, int size);
96+wchar_t* DuplicateMtoWMultiString(LPCSTR lpString);
97+wchar_t* DuplicateMtoWMultiStringBuffer(LPCSTR lpString, int size);
98+char* DuplicateWtoM(LPCWSTR lpString, int c);
99+char* DuplicateWtoA(LPCWSTR lpString, int c);
100+void FreeDuplicatedString(void* p);
101+
102+#endif
103+
--- /dev/null
+++ b/mbtoutf8.bat
@@ -0,0 +1,2 @@
1+mbtoutf8 mesg-jpn.old.h mesg-jpn.h
2+mbtoutf8 mesg-eng.old.h mesg-eng.h
Binary files /dev/null and b/mbtoutf8.exe differ
--- /dev/null
+++ b/mbtoutf8/ReadMe.txt
@@ -0,0 +1,29 @@
1+========================================================================
2+ コンソール アプリケーション : mbtoutf8 プロジェクトの概要
3+========================================================================
4+
5+この mbtoutf8 アプリケーションは、AppWizard によって作成されました。
6+
7+このファイルには、mbtoutf8 アプリケーションを構成する各ファイル
8+の内容の概略が記述されています。
9+
10+
11+mbtoutf8.vcproj
12+ これは、アプリケーション ウィザードを使用して生成された VC++ プロジェクトのメイン プロジェクト ファイルです。
13+ ファイルを生成した Visual C++ のバージョンに関する情報と、アプリケーション ウィザードで選択されたプラットフォーム、構成、およびプロジェクト機能に関する情報が含まれています。
14+
15+mbtoutf8.cpp
16+ これは、メインのアプリケーション ソース ファイルです。
17+
18+/////////////////////////////////////////////////////////////////////////////
19+その他の標準ファイル :
20+
21+StdAfx.h, StdAfx.cpp
22+ これらのファイルは、プリコンパイル済みヘッダー (PCH) ファイル mbtoutf8.pch とプリコンパイル済み型ファイル StdAfx.obj をビルドするために使用されます。
23+
24+/////////////////////////////////////////////////////////////////////////////
25+その他のメモ :
26+
27+AppWizard では、ユーザーが追加またはカスタマイズする必要のあるソース コードの部分を示すために、"TODO:" コメントを使用します。
28+
29+/////////////////////////////////////////////////////////////////////////////
--- /dev/null
+++ b/mbtoutf8/mbtoutf8.cpp
@@ -0,0 +1,155 @@
1+// mbtoutf8.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
2+//
3+
4+#include "stdafx.h"
5+
6+
7+int _tmain(int argc, _TCHAR* argv[])
8+{
9+ FILE* fpIn;
10+ FILE* fpOut;
11+ char InBuffer[16384];
12+ char OutBuffer[65536];
13+ int InPosition;
14+ int OutPosition;
15+ bool bEscape;
16+ bool bString;
17+ bool bEncoded;
18+ int Count;
19+ int UTF8Count;
20+ wchar_t UTF16Buffer[4];
21+ char UTF8Buffer[8];
22+ int i;
23+ _tsetlocale(LC_ALL, _T(""));
24+ if(argc != 3)
25+ {
26+ _tprintf(_T("マルチバイト文字(コードページ932またはShift JIS)で書かれたC言語ソースファイル内の文字列リテラルをUTF-8にエンコードします。\n"));
27+ _tprintf(_T("コマンドライン\n"));
28+ _tprintf(_T("mbtoutf8 [in] [out]\n"));
29+ _tprintf(_T("[in] 元のソースファイルのファイル名\n"));
30+ _tprintf(_T("[out] 保存先のファイル名\n"));
31+ return 0;
32+ }
33+ fpIn = _tfopen(argv[1], _T("rt"));
34+ if(!fpIn)
35+ {
36+ _tprintf(_T("ファイル\"%s\"が開けません。\n"), argv[1]);
37+ return 0;
38+ }
39+ fpOut = _tfopen(argv[2], _T("wt"));
40+ if(!fpIn)
41+ {
42+ _tprintf(_T("ファイル\"%s\"が作成できません。\n"), argv[2]);
43+ return 0;
44+ }
45+ while(fgets(InBuffer, sizeof(InBuffer) / sizeof(char), fpIn))
46+ {
47+ InPosition = 0;
48+ OutPosition = 0;
49+ bEscape = false;
50+ bString = false;
51+ bEncoded = false;
52+ while(InBuffer[InPosition])
53+ {
54+ Count = max(mblen(&InBuffer[InPosition], 4), 1);
55+ if(Count == 1)
56+ {
57+ switch(InBuffer[InPosition])
58+ {
59+ case '\\':
60+ bEscape = !bEscape;
61+ bEncoded = false;
62+ strncpy(&OutBuffer[OutPosition], &InBuffer[InPosition], Count);
63+ InPosition += Count;
64+ OutPosition += Count;
65+ break;
66+ case '\"':
67+ bEscape = false;
68+ bString = !bString;
69+ bEncoded = false;
70+ strncpy(&OutBuffer[OutPosition], &InBuffer[InPosition], Count);
71+ InPosition += Count;
72+ OutPosition += Count;
73+ break;
74+ case '0':
75+ case '1':
76+ case '2':
77+ case '3':
78+ case '4':
79+ case '5':
80+ case '6':
81+ case '7':
82+ case '8':
83+ case '9':
84+ case 'A':
85+ case 'B':
86+ case 'C':
87+ case 'D':
88+ case 'E':
89+ case 'F':
90+ case 'a':
91+ case 'b':
92+ case 'c':
93+ case 'd':
94+ case 'e':
95+ case 'f':
96+ bEscape = false;
97+ if(bEncoded)
98+ {
99+ for(i = 0; i < Count; i++)
100+ {
101+ sprintf(&OutBuffer[OutPosition], "\\x%02X", (unsigned char)InBuffer[InPosition]);
102+ InPosition++;
103+ OutPosition += 4;
104+ }
105+ }
106+ else
107+ {
108+ strncpy(&OutBuffer[OutPosition], &InBuffer[InPosition], Count);
109+ InPosition += Count;
110+ OutPosition += Count;
111+ break;
112+ }
113+ break;
114+ default:
115+ bEscape = false;
116+ bEncoded = false;
117+ strncpy(&OutBuffer[OutPosition], &InBuffer[InPosition], Count);
118+ InPosition += Count;
119+ OutPosition += Count;
120+ break;
121+ }
122+ }
123+ else
124+ {
125+ if(bString)
126+ {
127+ bEscape = false;
128+ bEncoded = true;
129+ UTF8Count = MultiByteToWideChar(CP_ACP, 0, &InBuffer[InPosition], Count, UTF16Buffer, sizeof(UTF16Buffer) / sizeof(wchar_t));
130+ UTF8Count = WideCharToMultiByte(CP_UTF8, 0, UTF16Buffer, UTF8Count, UTF8Buffer, sizeof(UTF8Buffer) / sizeof(char), NULL, NULL);
131+ InPosition += Count;
132+ for(i = 0; i < UTF8Count; i++)
133+ {
134+ sprintf(&OutBuffer[OutPosition], "\\x%02X", (unsigned char)UTF8Buffer[i]);
135+ OutPosition += 4;
136+ }
137+ }
138+ else
139+ {
140+ bEscape = false;
141+ bEncoded = false;
142+ strncpy(&OutBuffer[OutPosition], &InBuffer[InPosition], Count);
143+ InPosition += Count;
144+ OutPosition += Count;
145+ }
146+ }
147+ }
148+ OutBuffer[OutPosition] = '\0';
149+ fputs(OutBuffer, fpOut);
150+ }
151+ fclose(fpIn);
152+ fclose(fpOut);
153+ return 0;
154+}
155+
--- /dev/null
+++ b/mbtoutf8/mbtoutf8.sln
@@ -0,0 +1,20 @@
1+
2+Microsoft Visual Studio Solution File, Format Version 10.00
3+# Visual Studio 2008
4+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mbtoutf8", "mbtoutf8.vcproj", "{655A8FD3-5998-472F-8906-F0A028B70C4F}"
5+EndProject
6+Global
7+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
8+ Debug|Win32 = Debug|Win32
9+ Release|Win32 = Release|Win32
10+ EndGlobalSection
11+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
12+ {655A8FD3-5998-472F-8906-F0A028B70C4F}.Debug|Win32.ActiveCfg = Debug|Win32
13+ {655A8FD3-5998-472F-8906-F0A028B70C4F}.Debug|Win32.Build.0 = Debug|Win32
14+ {655A8FD3-5998-472F-8906-F0A028B70C4F}.Release|Win32.ActiveCfg = Release|Win32
15+ {655A8FD3-5998-472F-8906-F0A028B70C4F}.Release|Win32.Build.0 = Release|Win32
16+ EndGlobalSection
17+ GlobalSection(SolutionProperties) = preSolution
18+ HideSolutionNode = FALSE
19+ EndGlobalSection
20+EndGlobal
--- /dev/null
+++ b/mbtoutf8/mbtoutf8.vcproj
@@ -0,0 +1,225 @@
1+<?xml version="1.0" encoding="shift_jis"?>
2+<VisualStudioProject
3+ ProjectType="Visual C++"
4+ Version="9.00"
5+ Name="mbtoutf8"
6+ ProjectGUID="{655A8FD3-5998-472F-8906-F0A028B70C4F}"
7+ RootNamespace="mbtoutf8"
8+ Keyword="Win32Proj"
9+ TargetFrameworkVersion="196613"
10+ >
11+ <Platforms>
12+ <Platform
13+ Name="Win32"
14+ />
15+ </Platforms>
16+ <ToolFiles>
17+ </ToolFiles>
18+ <Configurations>
19+ <Configuration
20+ Name="Debug|Win32"
21+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
22+ IntermediateDirectory="$(ConfigurationName)"
23+ ConfigurationType="1"
24+ CharacterSet="1"
25+ >
26+ <Tool
27+ Name="VCPreBuildEventTool"
28+ />
29+ <Tool
30+ Name="VCCustomBuildTool"
31+ />
32+ <Tool
33+ Name="VCXMLDataGeneratorTool"
34+ />
35+ <Tool
36+ Name="VCWebServiceProxyGeneratorTool"
37+ />
38+ <Tool
39+ Name="VCMIDLTool"
40+ />
41+ <Tool
42+ Name="VCCLCompilerTool"
43+ Optimization="0"
44+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
45+ MinimalRebuild="true"
46+ BasicRuntimeChecks="3"
47+ RuntimeLibrary="3"
48+ UsePrecompiledHeader="2"
49+ WarningLevel="3"
50+ DebugInformationFormat="4"
51+ />
52+ <Tool
53+ Name="VCManagedResourceCompilerTool"
54+ />
55+ <Tool
56+ Name="VCResourceCompilerTool"
57+ />
58+ <Tool
59+ Name="VCPreLinkEventTool"
60+ />
61+ <Tool
62+ Name="VCLinkerTool"
63+ LinkIncremental="2"
64+ GenerateDebugInformation="true"
65+ SubSystem="1"
66+ TargetMachine="1"
67+ />
68+ <Tool
69+ Name="VCALinkTool"
70+ />
71+ <Tool
72+ Name="VCManifestTool"
73+ />
74+ <Tool
75+ Name="VCXDCMakeTool"
76+ />
77+ <Tool
78+ Name="VCBscMakeTool"
79+ />
80+ <Tool
81+ Name="VCFxCopTool"
82+ />
83+ <Tool
84+ Name="VCAppVerifierTool"
85+ />
86+ <Tool
87+ Name="VCPostBuildEventTool"
88+ />
89+ </Configuration>
90+ <Configuration
91+ Name="Release|Win32"
92+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
93+ IntermediateDirectory="$(ConfigurationName)"
94+ ConfigurationType="1"
95+ CharacterSet="1"
96+ WholeProgramOptimization="1"
97+ >
98+ <Tool
99+ Name="VCPreBuildEventTool"
100+ />
101+ <Tool
102+ Name="VCCustomBuildTool"
103+ />
104+ <Tool
105+ Name="VCXMLDataGeneratorTool"
106+ />
107+ <Tool
108+ Name="VCWebServiceProxyGeneratorTool"
109+ />
110+ <Tool
111+ Name="VCMIDLTool"
112+ />
113+ <Tool
114+ Name="VCCLCompilerTool"
115+ Optimization="2"
116+ EnableIntrinsicFunctions="true"
117+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
118+ RuntimeLibrary="2"
119+ EnableFunctionLevelLinking="true"
120+ UsePrecompiledHeader="2"
121+ WarningLevel="3"
122+ DebugInformationFormat="3"
123+ />
124+ <Tool
125+ Name="VCManagedResourceCompilerTool"
126+ />
127+ <Tool
128+ Name="VCResourceCompilerTool"
129+ />
130+ <Tool
131+ Name="VCPreLinkEventTool"
132+ />
133+ <Tool
134+ Name="VCLinkerTool"
135+ LinkIncremental="1"
136+ GenerateDebugInformation="true"
137+ SubSystem="1"
138+ OptimizeReferences="2"
139+ EnableCOMDATFolding="2"
140+ TargetMachine="1"
141+ />
142+ <Tool
143+ Name="VCALinkTool"
144+ />
145+ <Tool
146+ Name="VCManifestTool"
147+ />
148+ <Tool
149+ Name="VCXDCMakeTool"
150+ />
151+ <Tool
152+ Name="VCBscMakeTool"
153+ />
154+ <Tool
155+ Name="VCFxCopTool"
156+ />
157+ <Tool
158+ Name="VCAppVerifierTool"
159+ />
160+ <Tool
161+ Name="VCPostBuildEventTool"
162+ />
163+ </Configuration>
164+ </Configurations>
165+ <References>
166+ </References>
167+ <Files>
168+ <Filter
169+ Name="ソース ファイル"
170+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
171+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
172+ >
173+ <File
174+ RelativePath=".\mbtoutf8.cpp"
175+ >
176+ </File>
177+ <File
178+ RelativePath=".\stdafx.cpp"
179+ >
180+ <FileConfiguration
181+ Name="Debug|Win32"
182+ >
183+ <Tool
184+ Name="VCCLCompilerTool"
185+ UsePrecompiledHeader="1"
186+ />
187+ </FileConfiguration>
188+ <FileConfiguration
189+ Name="Release|Win32"
190+ >
191+ <Tool
192+ Name="VCCLCompilerTool"
193+ UsePrecompiledHeader="1"
194+ />
195+ </FileConfiguration>
196+ </File>
197+ </Filter>
198+ <Filter
199+ Name="ヘッダー ファイル"
200+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
201+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
202+ >
203+ <File
204+ RelativePath=".\stdafx.h"
205+ >
206+ </File>
207+ <File
208+ RelativePath=".\targetver.h"
209+ >
210+ </File>
211+ </Filter>
212+ <Filter
213+ Name="リソース ファイル"
214+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
215+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
216+ >
217+ </Filter>
218+ <File
219+ RelativePath=".\ReadMe.txt"
220+ >
221+ </File>
222+ </Files>
223+ <Globals>
224+ </Globals>
225+</VisualStudioProject>
--- /dev/null
+++ b/mbtoutf8/stdafx.cpp
@@ -0,0 +1,8 @@
1+// stdafx.cpp : 標準インクルード mbtoutf8.pch のみを
2+// 含むソース ファイルは、プリコンパイル済みヘッダーになります。
3+// stdafx.obj にはプリコンパイル済み型情報が含まれます。
4+
5+#include "stdafx.h"
6+
7+// TODO: このファイルではなく、STDAFX.H で必要な
8+// 追加ヘッダーを参照してください。
--- /dev/null
+++ b/mbtoutf8/stdafx.h
@@ -0,0 +1,19 @@
1+// stdafx.h : 標準のシステム インクルード ファイルのインクルード ファイル、または
2+// 参照回数が多く、かつあまり変更されない、プロジェクト専用のインクルード ファイル
3+// を記述します。
4+//
5+
6+#pragma once
7+
8+#include "targetver.h"
9+
10+#include <stdio.h>
11+#include <tchar.h>
12+
13+
14+
15+// TODO: プログラムに必要な追加ヘッダーをここで参照してください。
16+
17+#include <locale.h>
18+#include <windows.h>
19+
--- /dev/null
+++ b/mbtoutf8/targetver.h
@@ -0,0 +1,13 @@
1+#pragma once
2+
3+// 以下のマクロは、最低限必要なプラットフォームを定義します。最低限必要なプラットフォームとは、
4+// アプリケーションを実行するために必要な機能を備えた最も古いバージョンの Windows や Internet Explorer など
5+// をいいます。これらのマクロは、指定したバージョンと、それ以前のバージョンのプラットフォーム上で利用できるすべての機能を有効にすることによって
6+// 動作します。
7+
8+// 下で指定された定義の前に対象プラットフォームを指定しなければならない場合、以下の定義を変更してください。
9+// 異なるプラットフォームに対応する値に関する最新情報については、MSDN を参照してください。
10+#ifndef _WIN32_WINNT // 最低限必要なプラットフォームが Windows Vista であることを指定します。
11+#define _WIN32_WINNT 0x0600 // これを Windows の他のバージョン向けに適切な値に変更してください。
12+#endif
13+
--- a/mesg-eng.h
+++ b/mesg-eng.h
@@ -248,9 +248,9 @@
248248 #define MSGJPN248 "Local free: %s"
249249 #define MSGJPN249 "Files in queue: %d"
250250 #define MSGJPN250 "Receiving %s"
251-#define MSGJPN251 "Err:Seed"
252-#define MSGJPN252 "Err:Seed"
253-#define MSGJPN253 "Err:Sequence#"
251+#define MSGJPN251 "Err\xEF\xBC\x9ASeed"
252+#define MSGJPN252 "Err\xEF\xBC\x9ASeed"
253+#define MSGJPN253 "Err\xEF\xBC\x9ASequence#"
254254 #define MSGJPN254 "MS Sans Serif"
255255 #define MSGJPN255 "&Upload"
256256 #define MSGJPN256 "U&pload As..."
@@ -302,3 +302,9 @@
302302 #define MSGJPN302 "Master password checker looks broken."
303303 #define MSGJPN303 "Master password has been changed."
304304 #define MSGJPN304 "Speecified master password is not correct.\r\nAre you sure you want to re-enter?\r\nNo memorized FTP password is available if you choose 'NO'"
305+#define MSGJPN305 "Shift_JIS Kanji Code"
306+#define MSGJPN306 "UTF-8 Kanji Code"
307+#define MSGJPN307 "Shift_JIS Kanji Code (Local)"
308+#define MSGJPN308 "EUC Kanji Code (Local)"
309+#define MSGJPN309 "JIS Kanji Code (Local)"
310+#define MSGJPN310 "UTF-8 Kanji Code (Local)"
--- /dev/null
+++ b/mesg-eng.old.h
@@ -0,0 +1,310 @@
1+#define MSGJPN001 "Connection cancelled."
2+#define MSGJPN002 "Connection cancelled."
3+#define MSGJPN003 "\r\nReconnect.\r\n"
4+#define MSGJPN004 "Disconnect."
5+#define MSGJPN005 "Connection was killed."
6+#define MSGJPN006 "Can't login to Firewall."
7+#define MSGJPN007 "Can't connect to host %s."
8+#define MSGJPN008 "Can't login."
9+#define MSGJPN009 "Can't connect."
10+#define MSGJPN010 "Firewall host not specified."
11+#define MSGJPN011 "Host not specified."
12+#define MSGJPN012 "MD5 used."
13+#define MSGJPN013 "SHA-1 used."
14+#define MSGJPN014 "MD4(S/KEY) used."
15+#define MSGJPN015 "Can't process One-time Password."
16+#define MSGJPN016 "Searching host %s."
17+#define MSGJPN017 "Connecting %sto host %s (%s (%d))."
18+#define MSGJPN018 "Connecting %sto host %s (%d)."
19+#define MSGJPN019 "Host %s not found."
20+#define MSGJPN020 "Connecting %sto host %s (%d)."
21+#define MSGJPN021 "SOCKS server %s not found."
22+#define MSGJPN022 "Connecting to SOCKS server %s (%d)."
23+#define MSGJPN023 "Can't connect to SOCKS server. (Err=%d)"
24+#define MSGJPN024 "Can't connect to SOCKS server. (Err=%d)"
25+#define MSGJPN025 "Connected."
26+#define MSGJPN026 "Can't connected."
27+#define MSGJPN027 "Can't create socket."
28+#define MSGJPN028 "Can't connect to SOCKS server. (Err=%d)"
29+#define MSGJPN029 "Can't connect to SOCKS server. (Err=%d)"
30+#define MSGJPN030 "Can't create listen socket."
31+#define MSGJPN031 "PORT command not accepted"
32+#define MSGJPN032 "Connection is cancelled by user."
33+#define MSGJPN033 "Can't send SOCKS command. (Cmd = %04X)"
34+#define MSGJPN034 "Can't receive SOCKS5 reply."
35+#define MSGJPN035 "Can't receive SOCKS4 reply."
36+#define MSGJPN036 "SOCKS certification method not match."
37+#define MSGJPN037 "Certification failed by SOCKS server."
38+#define MSGJPN038 "Name"
39+#define MSGJPN039 "Date"
40+#define MSGJPN040 "Size"
41+#define MSGJPN041 "Ext"
42+#define MSGJPN042 "Name"
43+#define MSGJPN043 "Date"
44+#define MSGJPN044 "Size"
45+#define MSGJPN045 "Ext"
46+#define MSGJPN046 "Permissions"
47+#define MSGJPN047 "Owner"
48+#define MSGJPN048 "Can't read temporary file."
49+#define MSGJPN049 "Failed to getting file list."
50+#define MSGJPN050 "Find (Local)"
51+#define MSGJPN051 "Find (Host)"
52+#define MSGJPN052 "Dele: %s"
53+#define MSGJPN053 "Make: %s"
54+#define MSGJPN054 "Tran: %s"
55+#define MSGJPN055 "Dele: %s"
56+#define MSGJPN056 "Make: %s"
57+#define MSGJPN057 "Tran: %s"
58+#define MSGJPN058 "Transfer %d files."
59+#define MSGJPN059 "No file to transmit."
60+#define MSGJPN060 "Create %d folders."
61+#define MSGJPN061 "No folder to create."
62+#define MSGJPN062 "Delete %d files/folders."
63+#define MSGJPN063 "No file/folder to delete."
64+#define MSGJPN064 "Upload as"
65+#define MSGJPN065 "Download as"
66+#define MSGJPN066 "Delete (Local)"
67+#define MSGJPN067 "Delete (Host)"
68+#define MSGJPN068 "Rename (Local)"
69+#define MSGJPN069 "Rename (Host)"
70+#define MSGJPN070 "New Filder (Local)"
71+#define MSGJPN071 "New Folder (Host)"
72+#define MSGJPN072 "Change Current Folder (Local)"
73+#define MSGJPN073 "Change Current Folder (Host)"
74+#define MSGJPN074 "Calculate local file size."
75+#define MSGJPN075 "Calculate host file size."
76+#define MSGJPN076 "Local file size"
77+#define MSGJPN077 "Host file size"
78+#define MSGJPN078 "New Folder"
79+#define MSGJPN079 "New Folder"
80+#define MSGJPN080 "Delete Folder"
81+#define MSGJPN081 "Delete File"
82+#define MSGJPN082 "New Folder"
83+#define MSGJPN083 "Delete Folder"
84+#define MSGJPN084 "Delete File"
85+#define MSGJPN085 "Can't download named %s."
86+#define MSGJPN086 "Download"
87+#define MSGJPN087 "File List"
88+#define MSGJPN088 "Skip"
89+#define MSGJPN089 "Skip file %s."
90+#define MSGJPN090 "Command not accepted."
91+#define MSGJPN091 "for download "
92+#define MSGJPN092 "Command not accepted."
93+#define MSGJPN093 "Can't get address."
94+#define MSGJPN094 "Time out error."
95+#define MSGJPN095 "Can't create file %s."
96+#define MSGJPN096 "Disk full"
97+#define MSGJPN097 "Cancel to getting file list"
98+#define MSGJPN098 "File List"
99+#define MSGJPN099 "Download cancelled. (%d Sec. %d B/S)."
100+#define MSGJPN100 "Download cancelled."
101+#define MSGJPN101 "Download file list successful. (%d Bytes)"
102+#define MSGJPN102 "Download successful. (%d Sec. %d B/S)."
103+#define MSGJPN103 "Download successful. (%d Bytes)"
104+#define MSGJPN104 "Upload"
105+#define MSGJPN105 "Can't read file %s."
106+#define MSGJPN106 "Skip"
107+#define MSGJPN107 "File %s is skipped."
108+#define MSGJPN108 "Command not accepted."
109+#define MSGJPN109 "for upload "
110+#define MSGJPN110 "Command not accepted."
111+#define MSGJPN111 "Can't get address."
112+#define MSGJPN112 "Can't open file %s."
113+#define MSGJPN113 "Upload cancelled. (%d Sec. %d B/S)."
114+#define MSGJPN114 "Upload cancelled."
115+#define MSGJPN115 "Upload successful. (%d Sec. %d B/S)."
116+#define MSGJPN116 "Upload successfil."
117+#define MSGJPN117 "Finished"
118+#define MSGJPN118 "Cancelled"
119+#define MSGJPN119 "BINARY"
120+#define MSGJPN120 "ASCII"
121+#define MSGJPN121 "NONE"
122+#define MSGJPN122 "JIS"
123+#define MSGJPN123 "EUC"
124+#define MSGJPN124 "Delete(Local)"
125+#define MSGJPN125 "Delete(Host)"
126+#define MSGJPN126 "WS_FTP.INI"
127+#define MSGJPN127 "General"
128+#define MSGJPN128 "Advanced"
129+#define MSGJPN129 "Kanji Code"
130+#define MSGJPN130 "Dialup"
131+#define MSGJPN131 "Special"
132+#define MSGJPN132 "Host Setting"
133+#define MSGJPN133 "GMT%+02d:00"
134+#define MSGJPN134 "None"
135+#define MSGJPN135 "Auto"
136+#define MSGJPN136 "OTP MD4, S/KEY"
137+#define MSGJPN137 "OTP MD5"
138+#define MSGJPN138 "OTP SHA-1"
139+#define MSGJPN139 "Auto"
140+#define MSGJPN140 "ACOS"
141+#define MSGJPN141 "VAX VMS"
142+#define MSGJPN142 "IRMX"
143+#define MSGJPN143 "ACOS-4"
144+#define MSGJPN144 "Stratus"
145+#define MSGJPN145 "Can't change folder."
146+#define MSGJPN146 "Can't create folder."
147+#define MSGJPN147 "Can't delete folder."
148+#define MSGJPN148 "Can't delete folder."
149+#define MSGJPN149 "Can't delete file."
150+#define MSGJPN150 "Can't delete file."
151+#define MSGJPN151 "Can't rename file."
152+#define MSGJPN152 "Temporary folder '%s' not found."
153+#define MSGJPN153 "Folder '%s' is used."
154+#define MSGJPN154 "Connect"
155+#define MSGJPN155 "Quick Connect"
156+#define MSGJPN156 "Disconnect"
157+#define MSGJPN157 "Download"
158+#define MSGJPN158 "Upload"
159+#define MSGJPN159 "Mirror Upload"
160+#define MSGJPN160 "Delete"
161+#define MSGJPN161 "Rename"
162+#define MSGJPN162 "New Folder"
163+#define MSGJPN163 "Parent Folder"
164+#define MSGJPN164 "Change Folder"
165+#define MSGJPN165 "ASCII Mode"
166+#define MSGJPN166 "BINARY Mode"
167+#define MSGJPN167 "Filename Depend"
168+#define MSGJPN168 "Refresh File List"
169+#define MSGJPN169 "List"
170+#define MSGJPN170 "Details"
171+#define MSGJPN171 "EUC Kanji Code"
172+#define MSGJPN172 "JIS Kanji Code"
173+#define MSGJPN173 "NO Kanji Conversin"
174+#define MSGJPN174 "Hankaku-Kana to Zenkaku"
175+#define MSGJPN175 "Sync. folder movement"
176+#define MSGJPN176 "Stop"
177+#define MSGJPN177 "Host profile '%s' not found."
178+#define MSGJPN178 "Host profile not specified."
179+#define MSGJPN179 "Host name is only used as an alternative to profile name."
180+#define MSGJPN180 "Wrong Option '%s'."
181+#define MSGJPN181 "Host name is only used as an alternative to profile name."
182+#define MSGJPN182 "Failed to open viewer. (ERROR=%d)"
183+#define MSGJPN183 "JRE32.DLL none"
184+#define MSGJPN184 "JRE32.DLL Ver %x.%x (C) Kazuo Yamada-san"
185+#define MSGJPN185 "Select folder."
186+#define MSGJPN186 "User"
187+#define MSGJPN187 "Transfer1"
188+#define MSGJPN188 "Transfer2"
189+#define MSGJPN189 "Transfer3"
190+#define MSGJPN190 "Mirroring"
191+#define MSGJPN191 "Operation"
192+#define MSGJPN192 "View"
193+#define MSGJPN193 "Connecting"
194+#define MSGJPN194 "Firewall"
195+#define MSGJPN195 "Tool"
196+#define MSGJPN196 "Sounds"
197+#define MSGJPN197 "Other"
198+#define MSGJPN198 "Option"
199+#define MSGJPN199 "Filename"
200+#define MSGJPN200 "Filename"
201+#define MSGJPN201 "Attr"
202+#define MSGJPN202 "Filename"
203+#define MSGJPN203 "Filename"
204+#define MSGJPN204 "FW user-> FW password-> SITE host"
205+#define MSGJPN205 "FW user-> FW password-> USER user@host"
206+#define MSGJPN206 "FW user-> FW password"
207+#define MSGJPN207 "USER user@host"
208+#define MSGJPN208 "OPEN host"
209+#define MSGJPN209 "SOCKS4"
210+#define MSGJPN210 "SOCKS5 (No certification)"
211+#define MSGJPN211 "SOCKS5 (User, Password certification)"
212+#define MSGJPN212 "None"
213+#define MSGJPN213 "Auto"
214+#define MSGJPN214 "OTP MD4,S/KEY"
215+#define MSGJPN215 "OTP MD5"
216+#define MSGJPN216 "OTP SHA-1"
217+#define MSGJPN217 "Select viewer"
218+#define MSGJPN218 "EXE file\0*.exe;*.com;*.bat\0All file(*.*)\0*\0"
219+#define MSGJPN219 "Wave file"
220+#define MSGJPN220 "Disconencting dialup."
221+#define MSGJPN221 "Connecting dialup."
222+#define MSGJPN222 "Can't use dialup. (RasDialDlg)"
223+#define MSGJPN223 "Connecting to %s..."
224+#define MSGJPN224 "Unknown error"
225+#define MSGJPN225 "Dialup connection"
226+#define MSGJPN226 "Open port..."
227+#define MSGJPN227 "Port opened."
228+#define MSGJPN228 "Dialing..."
229+#define MSGJPN229 "Dialed."
230+#define MSGJPN230 "All device connected."
231+#define MSGJPN231 "Authenticating..."
232+#define MSGJPN232 "Authenticate retry..."
233+#define MSGJPN233 "Please change password."
234+#define MSGJPN234 "Authenticated."
235+#define MSGJPN235 "Connected"
236+#define MSGJPN236 "Disconnected."
237+#define MSGJPN237 "Connecting..."
238+#define MSGJPN238 "Connecting to %s"
239+#define MSGJPN239 "# Do not edit this file.\n"
240+#define MSGJPN240 "Can't save to INI file"
241+#define MSGJPN241 "Failed transmit cause of timeout"
242+#define MSGJPN242 "Failed receive cause of timeout"
243+#define MSGJPN243 "Failed receive cause of timeout"
244+#define MSGJPN244 "Receive length error"
245+#define MSGJPN245 "Local"
246+#define MSGJPN246 "Host"
247+#define MSGJPN247 "Selected: %d (%s)"
248+#define MSGJPN248 "Local free: %s"
249+#define MSGJPN249 "Files in queue: %d"
250+#define MSGJPN250 "Receiving %s"
251+#define MSGJPN251 "Err:Seed"
252+#define MSGJPN252 "Err:Seed"
253+#define MSGJPN253 "Err:Sequence#"
254+#define MSGJPN254 "MS Sans Serif"
255+#define MSGJPN255 "&Upload"
256+#define MSGJPN256 "U&pload As..."
257+#define MSGJPN257 "Up&load All"
258+#define MSGJPN258 "&Delete"
259+#define MSGJPN259 "&Rename..."
260+#define MSGJPN260 "&New Folder..."
261+#define MSGJPN261 "&File Size..."
262+#define MSGJPN262 "R&efresh File List"
263+#define MSGJPN263 "&Download"
264+#define MSGJPN264 "D&ownload As..."
265+#define MSGJPN265 "Do&wnliad as File"
266+#define MSGJPN266 "Dow&nload All"
267+#define MSGJPN267 "De&lete..."
268+#define MSGJPN268 "&Rename..."
269+#define MSGJPN269 "&Change Permission..."
270+#define MSGJPN270 "&New Folder..."
271+#define MSGJPN271 "Copy &URL to Clipboard"
272+#define MSGJPN272 "&File Size..."
273+#define MSGJPN273 "R&efresh File List"
274+#define MSGJPN274 "&Open"
275+#define MSGJPN275 "Open in %s (&%d)"
276+#define MSGJPN276 "WS_FTP.INI\0ws_ftp.ini\0All file(*.*)\0*\0"
277+#define MSGJPN277 "Wave file\0*.wav\0All file\0*\0"
278+#define MSGJPN278 "Reason : %s"
279+#define MSGJPN279 "Can't get Listen Socket"
280+#define MSGJPN280 "Can't get Data Socket"
281+#define MSGJPN281 "Can't connect with PASV mode"
282+#define MSGJPN282 "INI filename is not specified"
283+#define MSGJPN283 "INI file : "
284+#define MSGJPN284 "http://www2.biglobe.ne.jp/~sota/"
285+#define MSGJPN285 "Failed to execute Registory Editor."
286+#define MSGJPN286 "Save Settings"
287+#define MSGJPN287 "Reg file\0*.reg\0All file\0*\0"
288+#define MSGJPN288 "INI file\0*.ini\0All file\0*\0"
289+#define MSGJPN289 "Agilent Logic analyzer"
290+#define MSGJPN290 "Reg file\0*.reg\0INI file\0*.ini\0All files\0*\0"
291+#define MSGJPN291 "Load Settings"
292+#define MSGJPN292 "Restart FFFTP to take effect."
293+#define MSGJPN293 "File must be *.reg or *.ini."
294+#define MSGJPN294 "USER FW user:FW password@host"
295+#define MSGJPN295 "ShibaSoku WL"
296+#define MSGJPN296 "This is a read-only file. Remove the read-only attribute?"
297+#define MSGJPN297 "%s is invalid path.\r\nFFFTP doesn't download this file."
298+#define MSGJPN298 "Failed to initialize the OLE."
299+#define MSGJPN299 "Master password is not specified in the command line"
300+#define MSGJPN300 "Default master password is chosen.\r\nSet your own master password in command line to prevent sniff of malwares"
301+#define MSGJPN301 "Master password is not for the current configuration. Configration will not be overwritten in this session."
302+#define MSGJPN302 "Master password checker looks broken."
303+#define MSGJPN303 "Master password has been changed."
304+#define MSGJPN304 "Speecified master password is not correct.\r\nAre you sure you want to re-enter?\r\nNo memorized FTP password is available if you choose 'NO'"
305+#define MSGJPN305 "Shift_JIS Kanji Code"
306+#define MSGJPN306 "UTF-8 Kanji Code"
307+#define MSGJPN307 "Shift_JIS Kanji Code (Local)"
308+#define MSGJPN308 "EUC Kanji Code (Local)"
309+#define MSGJPN309 "JIS Kanji Code (Local)"
310+#define MSGJPN310 "UTF-8 Kanji Code (Local)"
--- a/mesg-jpn.h
+++ b/mesg-jpn.h
@@ -1,304 +1,310 @@
1-#define MSGJPN001 "接続を中止しました."
2-#define MSGJPN002 "接続を中止しました."
3-#define MSGJPN003 "\r\n再接続します.\r\n"
4-#define MSGJPN004 "切断しました"
5-#define MSGJPN005 "接続が切断されました."
6-#define MSGJPN006 "FireWallにログインできません."
7-#define MSGJPN007 "ホスト %s に接続できません."
8-#define MSGJPN008 "ログインできません."
9-#define MSGJPN009 "接続できません."
10-#define MSGJPN010 "FireWallのホスト名が設定されていません."
11-#define MSGJPN011 "ホスト名がありません."
12-#define MSGJPN012 "MD5を使用します."
13-#define MSGJPN013 "SHA-1を使用します."
14-#define MSGJPN014 "MD4(S/KEY)を使用します."
15-#define MSGJPN015 "ワンタイムパスワードが処理できません"
16-#define MSGJPN016 "ホスト %s を探しています."
17-#define MSGJPN017 "%sホスト %s (%s (%d)) に接続しています."
18-#define MSGJPN018 "%sホスト %s (%d) に接続しています."
19-#define MSGJPN019 "ホスト %s が見つかりません."
20-#define MSGJPN020 "%sホスト %s (%d) に接続しています."
21-#define MSGJPN021 "SOCKSサーバ %s が見つかりません."
22-#define MSGJPN022 "SOCKSサーバ %s (%d) に接続しています。"
23-#define MSGJPN023 "SOCKSサーバに接続できません. (Err=%d)"
24-#define MSGJPN024 "SOCKSサーバに接続できません. (Err=%d)"
25-#define MSGJPN025 "接続しました."
26-#define MSGJPN026 "接続できません."
27-#define MSGJPN027 "ソケットが作成できません."
28-#define MSGJPN028 "SOCKSサーバに接続できません. (Err=%d)"
29-#define MSGJPN029 "SOCKSサーバに接続できません. (Err=%d)"
30-#define MSGJPN030 "Listenソケットが作成できません."
31-#define MSGJPN031 "PORTコマンドが受け付けられません."
32-#define MSGJPN032 "接続はユーザによって中止されました."
33-#define MSGJPN033 "SOCKSのコマンドが送れませんでした (Cmd = %04X)"
34-#define MSGJPN034 "SOCKS5のコマンドに対するリプライが受信できませんでした"
35-#define MSGJPN035 "SOCKS4のコマンドに対するリプライが受信できませんでした"
36-#define MSGJPN036 "SOCKSサーバの認証方式が異なります."
37-#define MSGJPN037 "SOCKSサーバに認証されませんでした."
38-#define MSGJPN038 "名前"
39-#define MSGJPN039 "日付"
40-#define MSGJPN040 "サイズ"
41-#define MSGJPN041 "種類"
42-#define MSGJPN042 "名前"
43-#define MSGJPN043 "日付"
44-#define MSGJPN044 "サイズ"
45-#define MSGJPN045 "種類"
46-#define MSGJPN046 "属性"
47-#define MSGJPN047 "所有者"
48-#define MSGJPN048 "テンポラリファイルが読み出せません."
49-#define MSGJPN049 "ファイル一覧の取得に失敗しました."
50-#define MSGJPN050 "検索(ローカル)"
51-#define MSGJPN051 "検索(ホスト)"
52-#define MSGJPN052 "削除: %s"
53-#define MSGJPN053 "作成: %s"
54-#define MSGJPN054 "転送: %s"
55-#define MSGJPN055 "削除: %s"
56-#define MSGJPN056 "作成: %s"
57-#define MSGJPN057 "転送: %s"
58-#define MSGJPN058 "%d個のファイルを転送します."
59-#define MSGJPN059 "転送するファイルはありません."
60-#define MSGJPN060 "%d個のフォルダを作成します."
61-#define MSGJPN061 "作成するフォルダはありません."
62-#define MSGJPN062 "%d個のファイル/フォルダを削除します."
63-#define MSGJPN063 "削除するファイル/フォルダはありません."
64-#define MSGJPN064 "名前を変更してアップロード"
65-#define MSGJPN065 "名前を変更してダウンロード"
66-#define MSGJPN066 "削除(ローカル)"
67-#define MSGJPN067 "削除(ホスト)"
68-#define MSGJPN068 "名前変更(ローカル)"
69-#define MSGJPN069 "名前変更(ホスト)"
70-#define MSGJPN070 "フォルダ作成(ローカル)"
71-#define MSGJPN071 "フォルダ作成(ホスト)"
72-#define MSGJPN072 "フォルダ変更(ローカル)"
73-#define MSGJPN073 "フォルダ変更(ホスト)"
74-#define MSGJPN074 "ローカル側のファイル容量を計算します。"
75-#define MSGJPN075 "ホスト側のファイル容量を計算します。"
76-#define MSGJPN076 "ローカル側のファイル容量"
77-#define MSGJPN077 "ホスト側のファイル容量"
78-#define MSGJPN078 "フォルダ作成"
79-#define MSGJPN079 "フォルダ作成"
80-#define MSGJPN080 "フォルダ削除"
81-#define MSGJPN081 "ファイル削除"
82-#define MSGJPN082 "フォルダ作成"
83-#define MSGJPN083 "フォルダ削除"
84-#define MSGJPN084 "ファイル削除"
85-#define MSGJPN085 "%sという名前のファイルはダウンロードできません."
86-#define MSGJPN086 "ダウンロード"
87-#define MSGJPN087 "ファイル一覧取得"
88-#define MSGJPN088 "スキップ"
89-#define MSGJPN089 "ファイル %s はスキップします."
90-#define MSGJPN090 "コマンドが受け付けられません."
91-#define MSGJPN091 "ダウンロードのために"
92-#define MSGJPN092 "コマンドが受け付けられません."
93-#define MSGJPN093 "アドレスが取得できません."
94-#define MSGJPN094 "受信はタイムアウトで失敗しました."
95-#define MSGJPN095 "ファイル %s が作成できません."
96-#define MSGJPN096 "ディスクがいっぱいで書き込めません."
97-#define MSGJPN097 "ファイル一覧の取得を中止しました."
98-#define MSGJPN098 "ファイル一覧"
99-#define MSGJPN099 "ダウンロードを中止しました. (%d Sec. %d B/S)."
100-#define MSGJPN100 "ダウンロードを中止しました."
101-#define MSGJPN101 "ファイル一覧の取得は正常終了しました. (%d Bytes)"
102-#define MSGJPN102 "ダウンロードは正常終了しました. (%d Sec. %d B/S)."
103-#define MSGJPN103 "ダウンロードは正常終了しました. (%d Bytes)"
104-#define MSGJPN104 "アップロード"
105-#define MSGJPN105 "ファイル %s が読み出せません."
106-#define MSGJPN106 "スキップ"
107-#define MSGJPN107 "ファイル %s はスキップします."
108-#define MSGJPN108 "コマンドが受け付けられません."
109-#define MSGJPN109 "アップロードのために"
110-#define MSGJPN110 "コマンドが受け付けられません."
111-#define MSGJPN111 "アドレスが取得できません."
112-#define MSGJPN112 "ファイル %s がオープンできません."
113-#define MSGJPN113 "アップロードを中止しました. (%d Sec. %d B/S)."
114-#define MSGJPN114 "アップロードを中止しました."
115-#define MSGJPN115 "アップロードは正常終了しました. (%d Sec. %d B/S)."
116-#define MSGJPN116 "アップロードは正常終了しました."
117-#define MSGJPN117 "完了"
118-#define MSGJPN118 "中止"
119-#define MSGJPN119 "バイナリ"
120-#define MSGJPN120 "アスキー"
121-#define MSGJPN121 "無変換"
1+#define MSGJPN001 "\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x82\x92\xE4\xB8\xAD\xE6\xAD\xA2\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F."
2+#define MSGJPN002 "\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x82\x92\xE4\xB8\xAD\xE6\xAD\xA2\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F."
3+#define MSGJPN003 "\r\n\xE5\x86\x8D\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x99.\r\n"
4+#define MSGJPN004 "\xE5\x88\x87\xE6\x96\xAD\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F"
5+#define MSGJPN005 "\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\x8C\xE5\x88\x87\xE6\x96\xAD\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F."
6+#define MSGJPN006 "FireWall\xE3\x81\xAB\xE3\x83\xAD\xE3\x82\xB0\xE3\x82\xA4\xE3\x83\xB3\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
7+#define MSGJPN007 "\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88 %s \xE3\x81\xAB\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
8+#define MSGJPN008 "\xE3\x83\xAD\xE3\x82\xB0\xE3\x82\xA4\xE3\x83\xB3\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
9+#define MSGJPN009 "\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
10+#define MSGJPN010 "FireWall\xE3\x81\xAE\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88\xE5\x90\x8D\xE3\x81\x8C\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
11+#define MSGJPN011 "\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88\xE5\x90\x8D\xE3\x81\x8C\xE3\x81\x82\xE3\x82\x8A\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
12+#define MSGJPN012 "MD5\xE3\x82\x92\xE4\xBD\xBF\xE7\x94\xA8\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x99."
13+#define MSGJPN013 "SHA-1\xE3\x82\x92\xE4\xBD\xBF\xE7\x94\xA8\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x99."
14+#define MSGJPN014 "MD4(S/KEY)\xE3\x82\x92\xE4\xBD\xBF\xE7\x94\xA8\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x99."
15+#define MSGJPN015 "\xE3\x83\xAF\xE3\x83\xB3\xE3\x82\xBF\xE3\x82\xA4\xE3\x83\xA0\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE3\x81\x8C\xE5\x87\xA6\xE7\x90\x86\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93"
16+#define MSGJPN016 "\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88 %s \xE3\x82\x92\xE6\x8E\xA2\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99."
17+#define MSGJPN017 "%s\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88 %s (%s (%d)) \xE3\x81\xAB\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99."
18+#define MSGJPN018 "%s\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88 %s (%d) \xE3\x81\xAB\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99."
19+#define MSGJPN019 "\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88 %s \xE3\x81\x8C\xE8\xA6\x8B\xE3\x81\xA4\xE3\x81\x8B\xE3\x82\x8A\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
20+#define MSGJPN020 "%s\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88 %s (%d) \xE3\x81\xAB\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99."
21+#define MSGJPN021 "SOCKS\xE3\x82\xB5\xE3\x83\xBC\xE3\x83\x90 %s \xE3\x81\x8C\xE8\xA6\x8B\xE3\x81\xA4\xE3\x81\x8B\xE3\x82\x8A\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
22+#define MSGJPN022 "SOCKS\xE3\x82\xB5\xE3\x83\xBC\xE3\x83\x90 %s (%d) \xE3\x81\xAB\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99\xE3\x80\x82"
23+#define MSGJPN023 "SOCKS\xE3\x82\xB5\xE3\x83\xBC\xE3\x83\x90\xE3\x81\xAB\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93. (Err=%d)"
24+#define MSGJPN024 "SOCKS\xE3\x82\xB5\xE3\x83\xBC\xE3\x83\x90\xE3\x81\xAB\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93. (Err=%d)"
25+#define MSGJPN025 "\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F."
26+#define MSGJPN026 "\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
27+#define MSGJPN027 "\xE3\x82\xBD\xE3\x82\xB1\xE3\x83\x83\xE3\x83\x88\xE3\x81\x8C\xE4\xBD\x9C\xE6\x88\x90\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
28+#define MSGJPN028 "SOCKS\xE3\x82\xB5\xE3\x83\xBC\xE3\x83\x90\xE3\x81\xAB\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93. (Err=%d)"
29+#define MSGJPN029 "SOCKS\xE3\x82\xB5\xE3\x83\xBC\xE3\x83\x90\xE3\x81\xAB\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93. (Err=%d)"
30+#define MSGJPN030 "Listen\xE3\x82\xBD\xE3\x82\xB1\xE3\x83\x83\xE3\x83\x88\xE3\x81\x8C\xE4\xBD\x9C\xE6\x88\x90\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
31+#define MSGJPN031 "PORT\xE3\x82\xB3\xE3\x83\x9E\xE3\x83\xB3\xE3\x83\x89\xE3\x81\x8C\xE5\x8F\x97\xE3\x81\x91\xE4\xBB\x98\xE3\x81\x91\xE3\x82\x89\xE3\x82\x8C\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
32+#define MSGJPN032 "\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\xAF\xE3\x83\xA6\xE3\x83\xBC\xE3\x82\xB6\xE3\x81\xAB\xE3\x82\x88\xE3\x81\xA3\xE3\x81\xA6\xE4\xB8\xAD\xE6\xAD\xA2\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F."
33+#define MSGJPN033 "SOCKS\xE3\x81\xAE\xE3\x82\xB3\xE3\x83\x9E\xE3\x83\xB3\xE3\x83\x89\xE3\x81\x8C\xE9\x80\x81\xE3\x82\x8C\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93\xE3\x81\xA7\xE3\x81\x97\xE3\x81\x9F (Cmd = %04X)"
34+#define MSGJPN034 "SOCKS5\xE3\x81\xAE\xE3\x82\xB3\xE3\x83\x9E\xE3\x83\xB3\xE3\x83\x89\xE3\x81\xAB\xE5\xAF\xBE\xE3\x81\x99\xE3\x82\x8B\xE3\x83\xAA\xE3\x83\x97\xE3\x83\xA9\xE3\x82\xA4\xE3\x81\x8C\xE5\x8F\x97\xE4\xBF\xA1\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93\xE3\x81\xA7\xE3\x81\x97\xE3\x81\x9F"
35+#define MSGJPN035 "SOCKS4\xE3\x81\xAE\xE3\x82\xB3\xE3\x83\x9E\xE3\x83\xB3\xE3\x83\x89\xE3\x81\xAB\xE5\xAF\xBE\xE3\x81\x99\xE3\x82\x8B\xE3\x83\xAA\xE3\x83\x97\xE3\x83\xA9\xE3\x82\xA4\xE3\x81\x8C\xE5\x8F\x97\xE4\xBF\xA1\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93\xE3\x81\xA7\xE3\x81\x97\xE3\x81\x9F"
36+#define MSGJPN036 "SOCKS\xE3\x82\xB5\xE3\x83\xBC\xE3\x83\x90\xE3\x81\xAE\xE8\xAA\x8D\xE8\xA8\xBC\xE6\x96\xB9\xE5\xBC\x8F\xE3\x81\x8C\xE7\x95\xB0\xE3\x81\xAA\xE3\x82\x8A\xE3\x81\xBE\xE3\x81\x99."
37+#define MSGJPN037 "SOCKS\xE3\x82\xB5\xE3\x83\xBC\xE3\x83\x90\xE3\x81\xAB\xE8\xAA\x8D\xE8\xA8\xBC\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93\xE3\x81\xA7\xE3\x81\x97\xE3\x81\x9F."
38+#define MSGJPN038 "\xE5\x90\x8D\xE5\x89\x8D"
39+#define MSGJPN039 "\xE6\x97\xA5\xE4\xBB\x98"
40+#define MSGJPN040 "\xE3\x82\xB5\xE3\x82\xA4\xE3\x82\xBA"
41+#define MSGJPN041 "\xE7\xA8\xAE\xE9\xA1\x9E"
42+#define MSGJPN042 "\xE5\x90\x8D\xE5\x89\x8D"
43+#define MSGJPN043 "\xE6\x97\xA5\xE4\xBB\x98"
44+#define MSGJPN044 "\xE3\x82\xB5\xE3\x82\xA4\xE3\x82\xBA"
45+#define MSGJPN045 "\xE7\xA8\xAE\xE9\xA1\x9E"
46+#define MSGJPN046 "\xE5\xB1\x9E\xE6\x80\xA7"
47+#define MSGJPN047 "\xE6\x89\x80\xE6\x9C\x89\xE8\x80\x85"
48+#define MSGJPN048 "\xE3\x83\x86\xE3\x83\xB3\xE3\x83\x9D\xE3\x83\xA9\xE3\x83\xAA\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE3\x81\x8C\xE8\xAA\xAD\xE3\x81\xBF\xE5\x87\xBA\xE3\x81\x9B\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
49+#define MSGJPN049 "\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE4\xB8\x80\xE8\xA6\xA7\xE3\x81\xAE\xE5\x8F\x96\xE5\xBE\x97\xE3\x81\xAB\xE5\xA4\xB1\xE6\x95\x97\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F."
50+#define MSGJPN050 "\xE6\xA4\x9C\xE7\xB4\xA2\xEF\xBC\x88\xE3\x83\xAD\xE3\x83\xBC\xE3\x82\xAB\xE3\x83\xAB\xEF\xBC\x89"
51+#define MSGJPN051 "\xE6\xA4\x9C\xE7\xB4\xA2\xEF\xBC\x88\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88\xEF\xBC\x89"
52+#define MSGJPN052 "\xE5\x89\x8A\xE9\x99\xA4\xEF\xBC\x9A %s"
53+#define MSGJPN053 "\xE4\xBD\x9C\xE6\x88\x90\xEF\xBC\x9A %s"
54+#define MSGJPN054 "\xE8\xBB\xA2\xE9\x80\x81\xEF\xBC\x9A %s"
55+#define MSGJPN055 "\xE5\x89\x8A\xE9\x99\xA4\xEF\xBC\x9A %s"
56+#define MSGJPN056 "\xE4\xBD\x9C\xE6\x88\x90\xEF\xBC\x9A %s"
57+#define MSGJPN057 "\xE8\xBB\xA2\xE9\x80\x81\xEF\xBC\x9A %s"
58+#define MSGJPN058 "%d\xE5\x80\x8B\xE3\x81\xAE\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE3\x82\x92\xE8\xBB\xA2\xE9\x80\x81\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x99."
59+#define MSGJPN059 "\xE8\xBB\xA2\xE9\x80\x81\xE3\x81\x99\xE3\x82\x8B\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE3\x81\xAF\xE3\x81\x82\xE3\x82\x8A\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
60+#define MSGJPN060 "%d\xE5\x80\x8B\xE3\x81\xAE\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x80\xE3\x82\x92\xE4\xBD\x9C\xE6\x88\x90\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x99."
61+#define MSGJPN061 "\xE4\xBD\x9C\xE6\x88\x90\xE3\x81\x99\xE3\x82\x8B\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x80\xE3\x81\xAF\xE3\x81\x82\xE3\x82\x8A\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
62+#define MSGJPN062 "%d\xE5\x80\x8B\xE3\x81\xAE\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xEF\xBC\x8F\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x80\xE3\x82\x92\xE5\x89\x8A\xE9\x99\xA4\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x99."
63+#define MSGJPN063 "\xE5\x89\x8A\xE9\x99\xA4\xE3\x81\x99\xE3\x82\x8B\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xEF\xBC\x8F\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x80\xE3\x81\xAF\xE3\x81\x82\xE3\x82\x8A\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
64+#define MSGJPN064 "\xE5\x90\x8D\xE5\x89\x8D\xE3\x82\x92\xE5\xA4\x89\xE6\x9B\xB4\xE3\x81\x97\xE3\x81\xA6\xE3\x82\xA2\xE3\x83\x83\xE3\x83\x97\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89"
65+#define MSGJPN065 "\xE5\x90\x8D\xE5\x89\x8D\xE3\x82\x92\xE5\xA4\x89\xE6\x9B\xB4\xE3\x81\x97\xE3\x81\xA6\xE3\x83\x80\xE3\x82\xA6\xE3\x83\xB3\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89"
66+#define MSGJPN066 "\xE5\x89\x8A\xE9\x99\xA4\xEF\xBC\x88\xE3\x83\xAD\xE3\x83\xBC\xE3\x82\xAB\xE3\x83\xAB\xEF\xBC\x89"
67+#define MSGJPN067 "\xE5\x89\x8A\xE9\x99\xA4\xEF\xBC\x88\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88\xEF\xBC\x89"
68+#define MSGJPN068 "\xE5\x90\x8D\xE5\x89\x8D\xE5\xA4\x89\xE6\x9B\xB4\xEF\xBC\x88\xE3\x83\xAD\xE3\x83\xBC\xE3\x82\xAB\xE3\x83\xAB\xEF\xBC\x89"
69+#define MSGJPN069 "\xE5\x90\x8D\xE5\x89\x8D\xE5\xA4\x89\xE6\x9B\xB4\xEF\xBC\x88\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88\xEF\xBC\x89"
70+#define MSGJPN070 "\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x80\xE4\xBD\x9C\xE6\x88\x90\xEF\xBC\x88\xE3\x83\xAD\xE3\x83\xBC\xE3\x82\xAB\xE3\x83\xAB\xEF\xBC\x89"
71+#define MSGJPN071 "\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x80\xE4\xBD\x9C\xE6\x88\x90\xEF\xBC\x88\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88\xEF\xBC\x89"
72+#define MSGJPN072 "\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x80\xE5\xA4\x89\xE6\x9B\xB4\xEF\xBC\x88\xE3\x83\xAD\xE3\x83\xBC\xE3\x82\xAB\xE3\x83\xAB\xEF\xBC\x89"
73+#define MSGJPN073 "\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x80\xE5\xA4\x89\xE6\x9B\xB4\xEF\xBC\x88\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88\xEF\xBC\x89"
74+#define MSGJPN074 "\xE3\x83\xAD\xE3\x83\xBC\xE3\x82\xAB\xE3\x83\xAB\xE5\x81\xB4\xE3\x81\xAE\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE5\xAE\xB9\xE9\x87\x8F\xE3\x82\x92\xE8\xA8\x88\xE7\xAE\x97\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x99\xE3\x80\x82"
75+#define MSGJPN075 "\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88\xE5\x81\xB4\xE3\x81\xAE\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE5\xAE\xB9\xE9\x87\x8F\xE3\x82\x92\xE8\xA8\x88\xE7\xAE\x97\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x99\xE3\x80\x82"
76+#define MSGJPN076 "\xE3\x83\xAD\xE3\x83\xBC\xE3\x82\xAB\xE3\x83\xAB\xE5\x81\xB4\xE3\x81\xAE\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE5\xAE\xB9\xE9\x87\x8F"
77+#define MSGJPN077 "\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88\xE5\x81\xB4\xE3\x81\xAE\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE5\xAE\xB9\xE9\x87\x8F"
78+#define MSGJPN078 "\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x80\xE4\xBD\x9C\xE6\x88\x90"
79+#define MSGJPN079 "\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x80\xE4\xBD\x9C\xE6\x88\x90"
80+#define MSGJPN080 "\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x80\xE5\x89\x8A\xE9\x99\xA4"
81+#define MSGJPN081 "\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE5\x89\x8A\xE9\x99\xA4"
82+#define MSGJPN082 "\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x80\xE4\xBD\x9C\xE6\x88\x90"
83+#define MSGJPN083 "\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x80\xE5\x89\x8A\xE9\x99\xA4"
84+#define MSGJPN084 "\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE5\x89\x8A\xE9\x99\xA4"
85+#define MSGJPN085 "%s\xE3\x81\xA8\xE3\x81\x84\xE3\x81\x86\xE5\x90\x8D\xE5\x89\x8D\xE3\x81\xAE\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE3\x81\xAF\xE3\x83\x80\xE3\x82\xA6\xE3\x83\xB3\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
86+#define MSGJPN086 "\xE3\x83\x80\xE3\x82\xA6\xE3\x83\xB3\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89"
87+#define MSGJPN087 "\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE4\xB8\x80\xE8\xA6\xA7\xE5\x8F\x96\xE5\xBE\x97"
88+#define MSGJPN088 "\xE3\x82\xB9\xE3\x82\xAD\xE3\x83\x83\xE3\x83\x97"
89+#define MSGJPN089 "\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB %s \xE3\x81\xAF\xE3\x82\xB9\xE3\x82\xAD\xE3\x83\x83\xE3\x83\x97\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x99."
90+#define MSGJPN090 "\xE3\x82\xB3\xE3\x83\x9E\xE3\x83\xB3\xE3\x83\x89\xE3\x81\x8C\xE5\x8F\x97\xE3\x81\x91\xE4\xBB\x98\xE3\x81\x91\xE3\x82\x89\xE3\x82\x8C\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
91+#define MSGJPN091 "\xE3\x83\x80\xE3\x82\xA6\xE3\x83\xB3\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xAE\xE3\x81\x9F\xE3\x82\x81\xE3\x81\xAB"
92+#define MSGJPN092 "\xE3\x82\xB3\xE3\x83\x9E\xE3\x83\xB3\xE3\x83\x89\xE3\x81\x8C\xE5\x8F\x97\xE3\x81\x91\xE4\xBB\x98\xE3\x81\x91\xE3\x82\x89\xE3\x82\x8C\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
93+#define MSGJPN093 "\xE3\x82\xA2\xE3\x83\x89\xE3\x83\xAC\xE3\x82\xB9\xE3\x81\x8C\xE5\x8F\x96\xE5\xBE\x97\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
94+#define MSGJPN094 "\xE5\x8F\x97\xE4\xBF\xA1\xE3\x81\xAF\xE3\x82\xBF\xE3\x82\xA4\xE3\x83\xA0\xE3\x82\xA2\xE3\x82\xA6\xE3\x83\x88\xE3\x81\xA7\xE5\xA4\xB1\xE6\x95\x97\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F."
95+#define MSGJPN095 "\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB %s \xE3\x81\x8C\xE4\xBD\x9C\xE6\x88\x90\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
96+#define MSGJPN096 "\xE3\x83\x87\xE3\x82\xA3\xE3\x82\xB9\xE3\x82\xAF\xE3\x81\x8C\xE3\x81\x84\xE3\x81\xA3\xE3\x81\xB1\xE3\x81\x84\xE3\x81\xA7\xE6\x9B\xB8\xE3\x81\x8D\xE8\xBE\xBC\xE3\x82\x81\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
97+#define MSGJPN097 "\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE4\xB8\x80\xE8\xA6\xA7\xE3\x81\xAE\xE5\x8F\x96\xE5\xBE\x97\xE3\x82\x92\xE4\xB8\xAD\xE6\xAD\xA2\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F."
98+#define MSGJPN098 "\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE4\xB8\x80\xE8\xA6\xA7"
99+#define MSGJPN099 "\xE3\x83\x80\xE3\x82\xA6\xE3\x83\xB3\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89\xE3\x82\x92\xE4\xB8\xAD\xE6\xAD\xA2\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F. (%d Sec. %d B/S)."
100+#define MSGJPN100 "\xE3\x83\x80\xE3\x82\xA6\xE3\x83\xB3\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89\xE3\x82\x92\xE4\xB8\xAD\xE6\xAD\xA2\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F."
101+#define MSGJPN101 "\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE4\xB8\x80\xE8\xA6\xA7\xE3\x81\xAE\xE5\x8F\x96\xE5\xBE\x97\xE3\x81\xAF\xE6\xAD\xA3\xE5\xB8\xB8\xE7\xB5\x82\xE4\xBA\x86\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F. (%d Bytes)"
102+#define MSGJPN102 "\xE3\x83\x80\xE3\x82\xA6\xE3\x83\xB3\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xAF\xE6\xAD\xA3\xE5\xB8\xB8\xE7\xB5\x82\xE4\xBA\x86\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F. (%d Sec. %d B/S)."
103+#define MSGJPN103 "\xE3\x83\x80\xE3\x82\xA6\xE3\x83\xB3\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xAF\xE6\xAD\xA3\xE5\xB8\xB8\xE7\xB5\x82\xE4\xBA\x86\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F. (%d Bytes)"
104+#define MSGJPN104 "\xE3\x82\xA2\xE3\x83\x83\xE3\x83\x97\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89"
105+#define MSGJPN105 "\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB %s \xE3\x81\x8C\xE8\xAA\xAD\xE3\x81\xBF\xE5\x87\xBA\xE3\x81\x9B\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
106+#define MSGJPN106 "\xE3\x82\xB9\xE3\x82\xAD\xE3\x83\x83\xE3\x83\x97"
107+#define MSGJPN107 "\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB %s \xE3\x81\xAF\xE3\x82\xB9\xE3\x82\xAD\xE3\x83\x83\xE3\x83\x97\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x99."
108+#define MSGJPN108 "\xE3\x82\xB3\xE3\x83\x9E\xE3\x83\xB3\xE3\x83\x89\xE3\x81\x8C\xE5\x8F\x97\xE3\x81\x91\xE4\xBB\x98\xE3\x81\x91\xE3\x82\x89\xE3\x82\x8C\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
109+#define MSGJPN109 "\xE3\x82\xA2\xE3\x83\x83\xE3\x83\x97\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xAE\xE3\x81\x9F\xE3\x82\x81\xE3\x81\xAB"
110+#define MSGJPN110 "\xE3\x82\xB3\xE3\x83\x9E\xE3\x83\xB3\xE3\x83\x89\xE3\x81\x8C\xE5\x8F\x97\xE3\x81\x91\xE4\xBB\x98\xE3\x81\x91\xE3\x82\x89\xE3\x82\x8C\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
111+#define MSGJPN111 "\xE3\x82\xA2\xE3\x83\x89\xE3\x83\xAC\xE3\x82\xB9\xE3\x81\x8C\xE5\x8F\x96\xE5\xBE\x97\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
112+#define MSGJPN112 "\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB %s \xE3\x81\x8C\xE3\x82\xAA\xE3\x83\xBC\xE3\x83\x97\xE3\x83\xB3\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
113+#define MSGJPN113 "\xE3\x82\xA2\xE3\x83\x83\xE3\x83\x97\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89\xE3\x82\x92\xE4\xB8\xAD\xE6\xAD\xA2\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F. (%d Sec. %d B/S)."
114+#define MSGJPN114 "\xE3\x82\xA2\xE3\x83\x83\xE3\x83\x97\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89\xE3\x82\x92\xE4\xB8\xAD\xE6\xAD\xA2\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F."
115+#define MSGJPN115 "\xE3\x82\xA2\xE3\x83\x83\xE3\x83\x97\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xAF\xE6\xAD\xA3\xE5\xB8\xB8\xE7\xB5\x82\xE4\xBA\x86\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F. (%d Sec. %d B/S)."
116+#define MSGJPN116 "\xE3\x82\xA2\xE3\x83\x83\xE3\x83\x97\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xAF\xE6\xAD\xA3\xE5\xB8\xB8\xE7\xB5\x82\xE4\xBA\x86\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F."
117+#define MSGJPN117 "\xE5\xAE\x8C\xE4\xBA\x86"
118+#define MSGJPN118 "\xE4\xB8\xAD\xE6\xAD\xA2"
119+#define MSGJPN119 "\xE3\x83\x90\xE3\x82\xA4\xE3\x83\x8A\xE3\x83\xAA"
120+#define MSGJPN120 "\xE3\x82\xA2\xE3\x82\xB9\xE3\x82\xAD\xE3\x83\xBC"
121+#define MSGJPN121 "\xE7\x84\xA1\xE5\xA4\x89\xE6\x8F\x9B"
122122 #define MSGJPN122 "JIS"
123123 #define MSGJPN123 "EUC"
124-#define MSGJPN124 "削除(ローカル)"
125-#define MSGJPN125 "削除(ホスト)"
126-#define MSGJPN126 "WS_FTP.INIファイル"
127-#define MSGJPN127 "基本"
128-#define MSGJPN128 "拡張"
129-#define MSGJPN129 "文字コード"
130-#define MSGJPN130 "ダイアルアップ"
131-#define MSGJPN131 "高度"
132-#define MSGJPN132 "ホストの設定"
133-#define MSGJPN133 "GMT%+02d:00 (日本)"
134-#define MSGJPN134 "使用しない"
135-#define MSGJPN135 "自動認識"
124+#define MSGJPN124 "\xE5\x89\x8A\xE9\x99\xA4\xEF\xBC\x88\xE3\x83\xAD\xE3\x83\xBC\xE3\x82\xAB\xE3\x83\xAB\xEF\xBC\x89"
125+#define MSGJPN125 "\xE5\x89\x8A\xE9\x99\xA4\xEF\xBC\x88\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88\xEF\xBC\x89"
126+#define MSGJPN126 "WS_FTP.INI\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB"
127+#define MSGJPN127 "\xE5\x9F\xBA\xE6\x9C\xAC"
128+#define MSGJPN128 "\xE6\x8B\xA1\xE5\xBC\xB5"
129+#define MSGJPN129 "\xE6\x96\x87\xE5\xAD\x97\xE3\x82\xB3\xE3\x83\xBC\xE3\x83\x89"
130+#define MSGJPN130 "\xE3\x83\x80\xE3\x82\xA4\xE3\x82\xA2\xE3\x83\xAB\xE3\x82\xA2\xE3\x83\x83\xE3\x83\x97"
131+#define MSGJPN131 "\xE9\xAB\x98\xE5\xBA\xA6"
132+#define MSGJPN132 "\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88\xE3\x81\xAE\xE8\xA8\xAD\xE5\xAE\x9A"
133+#define MSGJPN133 "GMT%+02d:00 (\xE6\x97\xA5\xE6\x9C\xAC)"
134+#define MSGJPN134 "\xE4\xBD\xBF\xE7\x94\xA8\xE3\x81\x97\xE3\x81\xAA\xE3\x81\x84"
135+#define MSGJPN135 "\xE8\x87\xAA\xE5\x8B\x95\xE8\xAA\x8D\xE8\xAD\x98"
136136 #define MSGJPN136 "OTP MD4, S/KEY"
137137 #define MSGJPN137 "OTP MD5"
138138 #define MSGJPN138 "OTP SHA-1"
139-#define MSGJPN139 "自動認識"
139+#define MSGJPN139 "\xE8\x87\xAA\xE5\x8B\x95\xE8\xAA\x8D\xE8\xAD\x98"
140140 #define MSGJPN140 "ACOS"
141141 #define MSGJPN141 "VAX VMS"
142142 #define MSGJPN142 "IRMX"
143143 #define MSGJPN143 "ACOS-4"
144144 #define MSGJPN144 "Stratus"
145-#define MSGJPN145 "フォルダを変更できません."
146-#define MSGJPN146 "フォルダを作成できません."
147-#define MSGJPN147 "フォルダを削除できません."
148-#define MSGJPN148 "フォルダを削除できません."
149-#define MSGJPN149 "ファイルを削除できません."
150-#define MSGJPN150 "ファイルを削除できません."
151-#define MSGJPN151 "ファイル名変更ができません."
152-#define MSGJPN152 "テンポラリフォルダ「%s」がありません"
153-#define MSGJPN153 "フォルダ「%s」を使用します"
154-#define MSGJPN154 "接続"
155-#define MSGJPN155 "クイック接続"
156-#define MSGJPN156 "切断"
157-#define MSGJPN157 "ダウンロード"
158-#define MSGJPN158 "アップロード"
159-#define MSGJPN159 "ミラーリングアップロード"
160-#define MSGJPN160 "削除"
161-#define MSGJPN161 "名前変更"
162-#define MSGJPN162 "フォルダ作成"
163-#define MSGJPN163 "一つ上のフォルダへ"
164-#define MSGJPN164 "フォルダの移動"
165-#define MSGJPN165 "アスキー転送モード"
166-#define MSGJPN166 "バイナリ転送モード"
167-#define MSGJPN167 "ファイル名で転送モード切替え"
168-#define MSGJPN168 "表示を更新"
169-#define MSGJPN169 "一覧"
170-#define MSGJPN170 "詳細"
171-#define MSGJPN171 "ホストの漢字コードはEUC"
172-#define MSGJPN172 "ホストの漢字コードはJIS"
173-#define MSGJPN173 "漢字コードの変換なし"
174-#define MSGJPN174 "半角カナを全角に変換"
175-#define MSGJPN175 "フォルダ同時移動"
176-#define MSGJPN176 "受信中止"
177-#define MSGJPN177 "設定名「%s」はありません."
178-#define MSGJPN178 "設定名が指定されていません."
179-#define MSGJPN179 "ホスト名と設定名の両方が指定されています."
180-#define MSGJPN180 "オプション「%s」が間違っています."
181-#define MSGJPN181 "ホスト名と設定名の両方が指定されています."
182-#define MSGJPN182 "ビューワの起動に失敗しました. (ERROR=%d)"
183-#define MSGJPN183 "JRE32.DLL 無し"
184-#define MSGJPN184 "JRE32.DLL Ver %x.%x (C) 山田和夫さん"
185-#define MSGJPN185 "フォルダを選択してください"
186-#define MSGJPN186 "ユーザ"
187-#define MSGJPN187 "転送1"
188-#define MSGJPN188 "転送2"
189-#define MSGJPN189 "転送3"
190-#define MSGJPN190 "ミラーリング"
191-#define MSGJPN191 "操作"
192-#define MSGJPN192 "表示"
193-#define MSGJPN193 "接続/切断"
145+#define MSGJPN145 "\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x80\xE3\x82\x92\xE5\xA4\x89\xE6\x9B\xB4\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
146+#define MSGJPN146 "\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x80\xE3\x82\x92\xE4\xBD\x9C\xE6\x88\x90\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
147+#define MSGJPN147 "\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x80\xE3\x82\x92\xE5\x89\x8A\xE9\x99\xA4\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
148+#define MSGJPN148 "\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x80\xE3\x82\x92\xE5\x89\x8A\xE9\x99\xA4\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
149+#define MSGJPN149 "\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE3\x82\x92\xE5\x89\x8A\xE9\x99\xA4\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
150+#define MSGJPN150 "\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE3\x82\x92\xE5\x89\x8A\xE9\x99\xA4\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
151+#define MSGJPN151 "\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE5\x90\x8D\xE5\xA4\x89\xE6\x9B\xB4\xE3\x81\x8C\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
152+#define MSGJPN152 "\xE3\x83\x86\xE3\x83\xB3\xE3\x83\x9D\xE3\x83\xA9\xE3\x83\xAA\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x80\xE3\x80\x8C%s\xE3\x80\x8D\xE3\x81\x8C\xE3\x81\x82\xE3\x82\x8A\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93"
153+#define MSGJPN153 "\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x80\xE3\x80\x8C%s\xE3\x80\x8D\xE3\x82\x92\xE4\xBD\xBF\xE7\x94\xA8\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x99"
154+#define MSGJPN154 "\xE6\x8E\xA5\xE7\xB6\x9A"
155+#define MSGJPN155 "\xE3\x82\xAF\xE3\x82\xA4\xE3\x83\x83\xE3\x82\xAF\xE6\x8E\xA5\xE7\xB6\x9A"
156+#define MSGJPN156 "\xE5\x88\x87\xE6\x96\xAD"
157+#define MSGJPN157 "\xE3\x83\x80\xE3\x82\xA6\xE3\x83\xB3\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89"
158+#define MSGJPN158 "\xE3\x82\xA2\xE3\x83\x83\xE3\x83\x97\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89"
159+#define MSGJPN159 "\xE3\x83\x9F\xE3\x83\xA9\xE3\x83\xBC\xE3\x83\xAA\xE3\x83\xB3\xE3\x82\xB0\xE3\x82\xA2\xE3\x83\x83\xE3\x83\x97\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89"
160+#define MSGJPN160 "\xE5\x89\x8A\xE9\x99\xA4"
161+#define MSGJPN161 "\xE5\x90\x8D\xE5\x89\x8D\xE5\xA4\x89\xE6\x9B\xB4"
162+#define MSGJPN162 "\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x80\xE4\xBD\x9C\xE6\x88\x90"
163+#define MSGJPN163 "\xE4\xB8\x80\xE3\x81\xA4\xE4\xB8\x8A\xE3\x81\xAE\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x80\xE3\x81\xB8"
164+#define MSGJPN164 "\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x80\xE3\x81\xAE\xE7\xA7\xBB\xE5\x8B\x95"
165+#define MSGJPN165 "\xE3\x82\xA2\xE3\x82\xB9\xE3\x82\xAD\xE3\x83\xBC\xE8\xBB\xA2\xE9\x80\x81\xE3\x83\xA2\xE3\x83\xBC\xE3\x83\x89"
166+#define MSGJPN166 "\xE3\x83\x90\xE3\x82\xA4\xE3\x83\x8A\xE3\x83\xAA\xE8\xBB\xA2\xE9\x80\x81\xE3\x83\xA2\xE3\x83\xBC\xE3\x83\x89"
167+#define MSGJPN167 "\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE5\x90\x8D\xE3\x81\xA7\xE8\xBB\xA2\xE9\x80\x81\xE3\x83\xA2\xE3\x83\xBC\xE3\x83\x89\xE5\x88\x87\xE6\x9B\xBF\xE3\x81\x88"
168+#define MSGJPN168 "\xE8\xA1\xA8\xE7\xA4\xBA\xE3\x82\x92\xE6\x9B\xB4\xE6\x96\xB0"
169+#define MSGJPN169 "\xE4\xB8\x80\xE8\xA6\xA7"
170+#define MSGJPN170 "\xE8\xA9\xB3\xE7\xB4\xB0"
171+#define MSGJPN171 "\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88\xE3\x81\xAE\xE6\xBC\xA2\xE5\xAD\x97\xE3\x82\xB3\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xAF\x45UC"
172+#define MSGJPN172 "\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88\xE3\x81\xAE\xE6\xBC\xA2\xE5\xAD\x97\xE3\x82\xB3\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xAFJIS"
173+#define MSGJPN173 "\xE6\xBC\xA2\xE5\xAD\x97\xE3\x82\xB3\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xAE\xE5\xA4\x89\xE6\x8F\x9B\xE3\x81\xAA\xE3\x81\x97"
174+#define MSGJPN174 "\xE5\x8D\x8A\xE8\xA7\x92\xE3\x82\xAB\xE3\x83\x8A\xE3\x82\x92\xE5\x85\xA8\xE8\xA7\x92\xE3\x81\xAB\xE5\xA4\x89\xE6\x8F\x9B"
175+#define MSGJPN175 "\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x80\xE5\x90\x8C\xE6\x99\x82\xE7\xA7\xBB\xE5\x8B\x95"
176+#define MSGJPN176 "\xE5\x8F\x97\xE4\xBF\xA1\xE4\xB8\xAD\xE6\xAD\xA2"
177+#define MSGJPN177 "\xE8\xA8\xAD\xE5\xAE\x9A\xE5\x90\x8D\xE3\x80\x8C%s\xE3\x80\x8D\xE3\x81\xAF\xE3\x81\x82\xE3\x82\x8A\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
178+#define MSGJPN178 "\xE8\xA8\xAD\xE5\xAE\x9A\xE5\x90\x8D\xE3\x81\x8C\xE6\x8C\x87\xE5\xAE\x9A\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93."
179+#define MSGJPN179 "\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88\xE5\x90\x8D\xE3\x81\xA8\xE8\xA8\xAD\xE5\xAE\x9A\xE5\x90\x8D\xE3\x81\xAE\xE4\xB8\xA1\xE6\x96\xB9\xE3\x81\x8C\xE6\x8C\x87\xE5\xAE\x9A\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99."
180+#define MSGJPN180 "\xE3\x82\xAA\xE3\x83\x97\xE3\x82\xB7\xE3\x83\xA7\xE3\x83\xB3\xE3\x80\x8C%s\xE3\x80\x8D\xE3\x81\x8C\xE9\x96\x93\xE9\x81\x95\xE3\x81\xA3\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99."
181+#define MSGJPN181 "\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88\xE5\x90\x8D\xE3\x81\xA8\xE8\xA8\xAD\xE5\xAE\x9A\xE5\x90\x8D\xE3\x81\xAE\xE4\xB8\xA1\xE6\x96\xB9\xE3\x81\x8C\xE6\x8C\x87\xE5\xAE\x9A\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99."
182+#define MSGJPN182 "\xE3\x83\x93\xE3\x83\xA5\xE3\x83\xBC\xE3\x83\xAF\xE3\x81\xAE\xE8\xB5\xB7\xE5\x8B\x95\xE3\x81\xAB\xE5\xA4\xB1\xE6\x95\x97\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F. (ERROR=%d)"
183+#define MSGJPN183 "JRE32.DLL \xE7\x84\xA1\xE3\x81\x97"
184+#define MSGJPN184 "JRE32.DLL Ver %x.%x (C) \xE5\xB1\xB1\xE7\x94\xB0\xE5\x92\x8C\xE5\xA4\xAB\xE3\x81\x95\xE3\x82\x93"
185+#define MSGJPN185 "\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x80\xE3\x82\x92\xE9\x81\xB8\xE6\x8A\x9E\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x8F\xE3\x81\xA0\xE3\x81\x95\xE3\x81\x84"
186+#define MSGJPN186 "\xE3\x83\xA6\xE3\x83\xBC\xE3\x82\xB6"
187+#define MSGJPN187 "\xE8\xBB\xA2\xE9\x80\x81\xEF\xBC\x91"
188+#define MSGJPN188 "\xE8\xBB\xA2\xE9\x80\x81\xEF\xBC\x92"
189+#define MSGJPN189 "\xE8\xBB\xA2\xE9\x80\x81\xEF\xBC\x93"
190+#define MSGJPN190 "\xE3\x83\x9F\xE3\x83\xA9\xE3\x83\xBC\xE3\x83\xAA\xE3\x83\xB3\xE3\x82\xB0"
191+#define MSGJPN191 "\xE6\x93\x8D\xE4\xBD\x9C"
192+#define MSGJPN192 "\xE8\xA1\xA8\xE7\xA4\xBA"
193+#define MSGJPN193 "\xE6\x8E\xA5\xE7\xB6\x9A/\xE5\x88\x87\xE6\x96\xAD"
194194 #define MSGJPN194 "FireWall"
195-#define MSGJPN195 "ツール"
196-#define MSGJPN196 "サウンド"
197-#define MSGJPN197 "その他"
198-#define MSGJPN198 "オプション"
199-#define MSGJPN199 "ファイル名"
200-#define MSGJPN200 "ファイル名"
201-#define MSGJPN201 "属性"
202-#define MSGJPN202 "ファイル名"
203-#define MSGJPN203 "ファイル名"
204-#define MSGJPN204 "FWユーザ名→ FWパスワード→ SITE ホスト名"
205-#define MSGJPN205 "FWユーザ名→ FWパスワード→ USER ユーザ名@ホスト名"
206-#define MSGJPN206 "FWユーザ名→ FWパスワード"
207-#define MSGJPN207 "USER ユーザ名@ホスト名"
208-#define MSGJPN208 "OPEN ホスト名"
195+#define MSGJPN195 "\xE3\x83\x84\xE3\x83\xBC\xE3\x83\xAB"
196+#define MSGJPN196 "\xE3\x82\xB5\xE3\x82\xA6\xE3\x83\xB3\xE3\x83\x89"
197+#define MSGJPN197 "\xE3\x81\x9D\xE3\x81\xAE\xE4\xBB\x96"
198+#define MSGJPN198 "\xE3\x82\xAA\xE3\x83\x97\xE3\x82\xB7\xE3\x83\xA7\xE3\x83\xB3"
199+#define MSGJPN199 "\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE5\x90\x8D"
200+#define MSGJPN200 "\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE5\x90\x8D"
201+#define MSGJPN201 "\xE5\xB1\x9E\xE6\x80\xA7"
202+#define MSGJPN202 "\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE5\x90\x8D"
203+#define MSGJPN203 "\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE5\x90\x8D"
204+#define MSGJPN204 "FW\xE3\x83\xA6\xE3\x83\xBC\xE3\x82\xB6\xE5\x90\x8D\xE2\x86\x92 FW\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE2\x86\x92 SITE \xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88\xE5\x90\x8D"
205+#define MSGJPN205 "FW\xE3\x83\xA6\xE3\x83\xBC\xE3\x82\xB6\xE5\x90\x8D\xE2\x86\x92 FW\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE2\x86\x92 USER \xE3\x83\xA6\xE3\x83\xBC\xE3\x82\xB6\xE5\x90\x8D@\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88\xE5\x90\x8D"
206+#define MSGJPN206 "FW\xE3\x83\xA6\xE3\x83\xBC\xE3\x82\xB6\xE5\x90\x8D\xE2\x86\x92 FW\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89"
207+#define MSGJPN207 "USER \xE3\x83\xA6\xE3\x83\xBC\xE3\x82\xB6\xE5\x90\x8D@\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88\xE5\x90\x8D"
208+#define MSGJPN208 "OPEN \xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88\xE5\x90\x8D"
209209 #define MSGJPN209 "SOCKS4"
210-#define MSGJPN210 "SOCKS5 (認証なし)"
211-#define MSGJPN211 "SOCKS5 (ユーザ名、パスワード認証)"
212-#define MSGJPN212 "使用しない"
213-#define MSGJPN213 "自動認識"
210+#define MSGJPN210 "SOCKS5 (\xE8\xAA\x8D\xE8\xA8\xBC\xE3\x81\xAA\xE3\x81\x97)"
211+#define MSGJPN211 "SOCKS5 (\xE3\x83\xA6\xE3\x83\xBC\xE3\x82\xB6\xE5\x90\x8D\xE3\x80\x81\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE8\xAA\x8D\xE8\xA8\xBC)"
212+#define MSGJPN212 "\xE4\xBD\xBF\xE7\x94\xA8\xE3\x81\x97\xE3\x81\xAA\xE3\x81\x84"
213+#define MSGJPN213 "\xE8\x87\xAA\xE5\x8B\x95\xE8\xAA\x8D\xE8\xAD\x98"
214214 #define MSGJPN214 "OTP MD4,S/KEY"
215215 #define MSGJPN215 "OTP MD5"
216216 #define MSGJPN216 "OTP SHA-1"
217-#define MSGJPN217 "ビューワの選択"
218-#define MSGJPN218 "実行ファイル\0*.exe;*.com;*.bat\0全てのファイル\0*\0"
219-#define MSGJPN219 "Waveファイル"
220-#define MSGJPN220 "ダイアルアップを切断しています."
221-#define MSGJPN221 "ダイアルアップで接続しています."
222-#define MSGJPN222 "ダイアルアップが使えません(RasDialDlg)"
223-#define MSGJPN223 "%s に接続しています..."
224-#define MSGJPN224 "不明なエラー"
225-#define MSGJPN225 "ダイアルアップ接続"
226-#define MSGJPN226 "ポートを開いています..."
227-#define MSGJPN227 "ポートが開かれました"
228-#define MSGJPN228 "ダイアル中..."
229-#define MSGJPN229 "ダイアル完了"
230-#define MSGJPN230 "全デバイスが接続されました"
231-#define MSGJPN231 "ユーザ名とパスワードを検証中..."
232-#define MSGJPN232 "再検証中..."
233-#define MSGJPN233 "パスワードを変更して下さい"
234-#define MSGJPN234 "検証が終了しました"
235-#define MSGJPN235 "接続しました"
236-#define MSGJPN236 "切断しました"
237-#define MSGJPN237 "接続処理中..."
238-#define MSGJPN238 "%s への接続"
239-#define MSGJPN239 "# このファイルは編集しないでください。\n"
240-#define MSGJPN240 "INIファイルに設定が保存できません"
241-#define MSGJPN241 "送信はタイムアウトで失敗しました."
242-#define MSGJPN242 "受信はタイムアウトで失敗しました."
243-#define MSGJPN243 "受信はタイムアウトで失敗しました."
244-#define MSGJPN244 "固定長の受信が失敗しました"
245-#define MSGJPN245 "ローカル"
246-#define MSGJPN246 "ホスト"
247-#define MSGJPN247 "選択%d個(%s)"
248-#define MSGJPN248 "ローカル空 %s"
249-#define MSGJPN249 "転送待ちファイル%d個"
250-#define MSGJPN250 "受信中 %s"
251-#define MSGJPN251 "Err:シード文字列"
252-#define MSGJPN252 "Err:シード文字列"
253-#define MSGJPN253 "Err:シーケンス番号"
254-#define MSGJPN254 "MS Pゴシック"
255-#define MSGJPN255 "アップロード(&U)"
256-#define MSGJPN256 "名前を変えてアップロード(&P)..."
257-#define MSGJPN257 "全てをアップロード"
258-#define MSGJPN258 "削除(&R)"
259-#define MSGJPN259 "名前変更(&N)..."
260-#define MSGJPN260 "フォルダ作成(&K)..."
261-#define MSGJPN261 "ファイル容量計算(&Z)"
262-#define MSGJPN262 "最新の情報に更新(&F)"
263-#define MSGJPN263 "ダウンロード(&D)"
264-#define MSGJPN264 "名前を変えてダウンロード(&W)..."
265-#define MSGJPN265 "ファイルとしてダウンロード(&I)"
266-#define MSGJPN266 "全てをダウンロード"
267-#define MSGJPN267 "削除(&R)"
268-#define MSGJPN268 "名前変更(&N)..."
269-#define MSGJPN269 "属性変更(&A)..."
270-#define MSGJPN270 "フォルダ作成(&K)..."
271-#define MSGJPN271 "URLをクリップボードへコピー(&C)"
272-#define MSGJPN272 "ファイル容量計算(&Z)"
273-#define MSGJPN273 "最新の情報に更新(&F)"
274-#define MSGJPN274 "開く(&O)"
275-#define MSGJPN275 "%sで開く(&%d)"
276-#define MSGJPN276 "WS_FTP.INI\0ws_ftp.ini\0全てのファイル\0*\0"
277-#define MSGJPN277 "Waveファイル\0*.wav\0全てのファイル\0*\0"
278-#define MSGJPN278 "理由:%s"
279-#define MSGJPN279 "Listenソケットが取得できません"
280-#define MSGJPN280 "Dataソケットが取得できません"
281-#define MSGJPN281 "PASVモードで接続できません"
282-#define MSGJPN282 "INIファイル名が指定されていません"
283-#define MSGJPN283 "INIファイル指定:"
217+#define MSGJPN217 "\xE3\x83\x93\xE3\x83\xA5\xE3\x83\xBC\xE3\x83\xAF\xE3\x81\xAE\xE9\x81\xB8\xE6\x8A\x9E"
218+#define MSGJPN218 "\xE5\xAE\x9F\xE8\xA1\x8C\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\0*.exe;*.com;*.bat\0\xE5\x85\xA8\xE3\x81\xA6\xE3\x81\xAEファイル\0*\0"
219+#define MSGJPN219 "Wave\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB"
220+#define MSGJPN220 "\xE3\x83\x80\xE3\x82\xA4\xE3\x82\xA2\xE3\x83\xAB\xE3\x82\xA2\xE3\x83\x83\xE3\x83\x97\xE3\x82\x92\xE5\x88\x87\xE6\x96\xAD\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99."
221+#define MSGJPN221 "\xE3\x83\x80\xE3\x82\xA4\xE3\x82\xA2\xE3\x83\xAB\xE3\x82\xA2\xE3\x83\x83\xE3\x83\x97\xE3\x81\xA7\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99."
222+#define MSGJPN222 "\xE3\x83\x80\xE3\x82\xA4\xE3\x82\xA2\xE3\x83\xAB\xE3\x82\xA2\xE3\x83\x83\xE3\x83\x97\xE3\x81\x8C\xE4\xBD\xBF\xE3\x81\x88\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93(RasDialDlg)"
223+#define MSGJPN223 "%s \xE3\x81\xAB\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99..."
224+#define MSGJPN224 "\xE4\xB8\x8D\xE6\x98\x8E\xE3\x81\xAA\xE3\x82\xA8\xE3\x83\xA9\xE3\x83\xBC"
225+#define MSGJPN225 "\xE3\x83\x80\xE3\x82\xA4\xE3\x82\xA2\xE3\x83\xAB\xE3\x82\xA2\xE3\x83\x83\xE3\x83\x97\xE6\x8E\xA5\xE7\xB6\x9A"
226+#define MSGJPN226 "\xE3\x83\x9D\xE3\x83\xBC\xE3\x83\x88\xE3\x82\x92\xE9\x96\x8B\xE3\x81\x84\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99..."
227+#define MSGJPN227 "\xE3\x83\x9D\xE3\x83\xBC\xE3\x83\x88\xE3\x81\x8C\xE9\x96\x8B\xE3\x81\x8B\xE3\x82\x8C\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F"
228+#define MSGJPN228 "\xE3\x83\x80\xE3\x82\xA4\xE3\x82\xA2\xE3\x83\xAB\xE4\xB8\xAD..."
229+#define MSGJPN229 "\xE3\x83\x80\xE3\x82\xA4\xE3\x82\xA2\xE3\x83\xAB\xE5\xAE\x8C\xE4\xBA\x86"
230+#define MSGJPN230 "\xE5\x85\xA8\xE3\x83\x87\xE3\x83\x90\xE3\x82\xA4\xE3\x82\xB9\xE3\x81\x8C\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F"
231+#define MSGJPN231 "\xE3\x83\xA6\xE3\x83\xBC\xE3\x82\xB6\xE5\x90\x8D\xE3\x81\xA8\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE3\x82\x92\xE6\xA4\x9C\xE8\xA8\xBC\xE4\xB8\xAD..."
232+#define MSGJPN232 "\xE5\x86\x8D\xE6\xA4\x9C\xE8\xA8\xBC\xE4\xB8\xAD..."
233+#define MSGJPN233 "\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE3\x82\x92\xE5\xA4\x89\xE6\x9B\xB4\xE3\x81\x97\xE3\x81\xA6\xE4\xB8\x8B\xE3\x81\x95\xE3\x81\x84"
234+#define MSGJPN234 "\xE6\xA4\x9C\xE8\xA8\xBC\xE3\x81\x8C\xE7\xB5\x82\xE4\xBA\x86\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F"
235+#define MSGJPN235 "\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F"
236+#define MSGJPN236 "\xE5\x88\x87\xE6\x96\xAD\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F"
237+#define MSGJPN237 "\xE6\x8E\xA5\xE7\xB6\x9A\xE5\x87\xA6\xE7\x90\x86\xE4\xB8\xAD..."
238+#define MSGJPN238 "%s \xE3\x81\xB8\xE3\x81\xAE\xE6\x8E\xA5\xE7\xB6\x9A"
239+#define MSGJPN239 "# \xE3\x81\x93\xE3\x81\xAE\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE3\x81\xAF\xE7\xB7\xA8\xE9\x9B\x86\xE3\x81\x97\xE3\x81\xAA\xE3\x81\x84\xE3\x81\xA7\xE3\x81\x8F\xE3\x81\xA0\xE3\x81\x95\xE3\x81\x84\xE3\x80\x82\n"
240+#define MSGJPN240 "INI\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE3\x81\xAB\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x81\x8C\xE4\xBF\x9D\xE5\xAD\x98\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93"
241+#define MSGJPN241 "\xE9\x80\x81\xE4\xBF\xA1\xE3\x81\xAF\xE3\x82\xBF\xE3\x82\xA4\xE3\x83\xA0\xE3\x82\xA2\xE3\x82\xA6\xE3\x83\x88\xE3\x81\xA7\xE5\xA4\xB1\xE6\x95\x97\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F."
242+#define MSGJPN242 "\xE5\x8F\x97\xE4\xBF\xA1\xE3\x81\xAF\xE3\x82\xBF\xE3\x82\xA4\xE3\x83\xA0\xE3\x82\xA2\xE3\x82\xA6\xE3\x83\x88\xE3\x81\xA7\xE5\xA4\xB1\xE6\x95\x97\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F."
243+#define MSGJPN243 "\xE5\x8F\x97\xE4\xBF\xA1\xE3\x81\xAF\xE3\x82\xBF\xE3\x82\xA4\xE3\x83\xA0\xE3\x82\xA2\xE3\x82\xA6\xE3\x83\x88\xE3\x81\xA7\xE5\xA4\xB1\xE6\x95\x97\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F."
244+#define MSGJPN244 "\xE5\x9B\xBA\xE5\xAE\x9A\xE9\x95\xB7\xE3\x81\xAE\xE5\x8F\x97\xE4\xBF\xA1\xE3\x81\x8C\xE5\xA4\xB1\xE6\x95\x97\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F"
245+#define MSGJPN245 "\xE3\x83\xAD\xE3\x83\xBC\xE3\x82\xAB\xE3\x83\xAB"
246+#define MSGJPN246 "\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88"
247+#define MSGJPN247 "\xE9\x81\xB8\xE6\x8A\x9E%d\xE5\x80\x8B\xEF\xBC\x88%s\xEF\xBC\x89"
248+#define MSGJPN248 "\xE3\x83\xAD\xE3\x83\xBC\xE3\x82\xAB\xE3\x83\xAB\xE7\xA9\xBA %s"
249+#define MSGJPN249 "\xE8\xBB\xA2\xE9\x80\x81\xE5\xBE\x85\xE3\x81\xA1\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB%d\xE5\x80\x8B"
250+#define MSGJPN250 "\xE5\x8F\x97\xE4\xBF\xA1\xE4\xB8\xAD %s"
251+#define MSGJPN251 "Err\xEF\xBC\x9A\xE3\x82\xB7\xE3\x83\xBC\xE3\x83\x89\xE6\x96\x87\xE5\xAD\x97\xE5\x88\x97"
252+#define MSGJPN252 "Err\xEF\xBC\x9A\xE3\x82\xB7\xE3\x83\xBC\xE3\x83\x89\xE6\x96\x87\xE5\xAD\x97\xE5\x88\x97"
253+#define MSGJPN253 "Err\xEF\xBC\x9A\xE3\x82\xB7\xE3\x83\xBC\xE3\x82\xB1\xE3\x83\xB3\xE3\x82\xB9\xE7\x95\xAA\xE5\x8F\xB7"
254+#define MSGJPN254 "\xEF\xBC\xAD\xEF\xBC\xB3 \xEF\xBC\xB0\xE3\x82\xB4\xE3\x82\xB7\xE3\x83\x83\xE3\x82\xAF"
255+#define MSGJPN255 "\xE3\x82\xA2\xE3\x83\x83\xE3\x83\x97\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89(&U)"
256+#define MSGJPN256 "\xE5\x90\x8D\xE5\x89\x8D\xE3\x82\x92\xE5\xA4\x89\xE3\x81\x88\xE3\x81\xA6\xE3\x82\xA2\xE3\x83\x83\xE3\x83\x97\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89(&P)..."
257+#define MSGJPN257 "\xE5\x85\xA8\xE3\x81\xA6\xE3\x82\x92\xE3\x82\xA2\xE3\x83\x83\xE3\x83\x97\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89"
258+#define MSGJPN258 "\xE5\x89\x8A\xE9\x99\xA4(&R)"
259+#define MSGJPN259 "\xE5\x90\x8D\xE5\x89\x8D\xE5\xA4\x89\xE6\x9B\xB4(&N)..."
260+#define MSGJPN260 "\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x80\xE4\xBD\x9C\xE6\x88\x90(&K)..."
261+#define MSGJPN261 "\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE5\xAE\xB9\xE9\x87\x8F\xE8\xA8\x88\xE7\xAE\x97(&Z)"
262+#define MSGJPN262 "\xE6\x9C\x80\xE6\x96\xB0\xE3\x81\xAE\xE6\x83\x85\xE5\xA0\xB1\xE3\x81\xAB\xE6\x9B\xB4\xE6\x96\xB0(&F)"
263+#define MSGJPN263 "\xE3\x83\x80\xE3\x82\xA6\xE3\x83\xB3\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89(&D)"
264+#define MSGJPN264 "\xE5\x90\x8D\xE5\x89\x8D\xE3\x82\x92\xE5\xA4\x89\xE3\x81\x88\xE3\x81\xA6\xE3\x83\x80\xE3\x82\xA6\xE3\x83\xB3\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89(&W)..."
265+#define MSGJPN265 "\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE3\x81\xA8\xE3\x81\x97\xE3\x81\xA6\xE3\x83\x80\xE3\x82\xA6\xE3\x83\xB3\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89(&I)"
266+#define MSGJPN266 "\xE5\x85\xA8\xE3\x81\xA6\xE3\x82\x92\xE3\x83\x80\xE3\x82\xA6\xE3\x83\xB3\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89"
267+#define MSGJPN267 "\xE5\x89\x8A\xE9\x99\xA4(&R)"
268+#define MSGJPN268 "\xE5\x90\x8D\xE5\x89\x8D\xE5\xA4\x89\xE6\x9B\xB4(&N)..."
269+#define MSGJPN269 "\xE5\xB1\x9E\xE6\x80\xA7\xE5\xA4\x89\xE6\x9B\xB4(&A)..."
270+#define MSGJPN270 "\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x80\xE4\xBD\x9C\xE6\x88\x90(&K)..."
271+#define MSGJPN271 "URL\xE3\x82\x92\xE3\x82\xAF\xE3\x83\xAA\xE3\x83\x83\xE3\x83\x97\xE3\x83\x9C\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xB8\xE3\x82\xB3\xE3\x83\x94\xE3\x83\xBC(&C)"
272+#define MSGJPN272 "\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE5\xAE\xB9\xE9\x87\x8F\xE8\xA8\x88\xE7\xAE\x97(&Z)"
273+#define MSGJPN273 "\xE6\x9C\x80\xE6\x96\xB0\xE3\x81\xAE\xE6\x83\x85\xE5\xA0\xB1\xE3\x81\xAB\xE6\x9B\xB4\xE6\x96\xB0(&F)"
274+#define MSGJPN274 "\xE9\x96\x8B\xE3\x81\x8F(&O)"
275+#define MSGJPN275 "%s\xE3\x81\xA7\xE9\x96\x8B\xE3\x81\x8F(&%d)"
276+#define MSGJPN276 "WS_FTP.INI\0ws_ftp.ini\0\xE5\x85\xA8\xE3\x81\xA6\xE3\x81\xAEファイル\0*\0"
277+#define MSGJPN277 "Wave\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\0*.wav\0\xE5\x85\xA8\xE3\x81\xA6\xE3\x81\xAE\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\0*\0"
278+#define MSGJPN278 "\xE7\x90\x86\xE7\x94\xB1\xEF\xBC\x9A%s"
279+#define MSGJPN279 "Listen\xE3\x82\xBD\xE3\x82\xB1\xE3\x83\x83\xE3\x83\x88\xE3\x81\x8C\xE5\x8F\x96\xE5\xBE\x97\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93"
280+#define MSGJPN280 "Data\xE3\x82\xBD\xE3\x82\xB1\xE3\x83\x83\xE3\x83\x88\xE3\x81\x8C\xE5\x8F\x96\xE5\xBE\x97\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93"
281+#define MSGJPN281 "PASV\xE3\x83\xA2\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xA7\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93"
282+#define MSGJPN282 "INI\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE5\x90\x8D\xE3\x81\x8C\xE6\x8C\x87\xE5\xAE\x9A\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93"
283+#define MSGJPN283 "INI\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE6\x8C\x87\xE5\xAE\x9A\xEF\xBC\x9A"
284284 #define MSGJPN284 "http://www2.biglobe.ne.jp/~sota/"
285-#define MSGJPN285 "レジストリエディタが起動できませんでした"
286-#define MSGJPN286 "設定ファイルの保存"
287-#define MSGJPN287 "Regファイル\0*.reg\0全てのファイル\0*\0"
288-#define MSGJPN288 "INIファイル\0*.ini\0全てのファイル\0*\0"
285+#define MSGJPN285 "\xE3\x83\xAC\xE3\x82\xB8\xE3\x82\xB9\xE3\x83\x88\xE3\x83\xAA\xE3\x82\xA8\xE3\x83\x87\xE3\x82\xA3\xE3\x82\xBF\xE3\x81\x8C\xE8\xB5\xB7\xE5\x8B\x95\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93\xE3\x81\xA7\xE3\x81\x97\xE3\x81\x9F"
286+#define MSGJPN286 "\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE3\x81\xAE\xE4\xBF\x9D\xE5\xAD\x98"
287+#define MSGJPN287 "Reg\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\0*.reg\0\xE5\x85\xA8\xE3\x81\xA6\xE3\x81\xAE\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\0*\0"
288+#define MSGJPN288 "INI\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\0*.ini\0\xE5\x85\xA8\xE3\x81\xA6\xE3\x81\xAE\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\0*\0"
289289 #define MSGJPN289 "Agilent Logic analyzer"
290-#define MSGJPN290 "Regファイル\0*.reg\0INIファイル\0*.ini\0全てのファイル\0*\0"
291-#define MSGJPN291 "設定をファイルから復元"
292-#define MSGJPN292 "設定をファイルから復元するためには、FFFTPを再起動してください。"
293-#define MSGJPN293 "設定ファイルは拡張子が.regか.iniでなければなりません。"
294-#define MSGJPN294 "USER FWユーザ名:FWパスワード@ホスト名"
295-#define MSGJPN295 "シバソク WL"
296-#define MSGJPN296 "読み取り専用ファイルです。読み取り専用属性を解除しますか?"
297-#define MSGJPN297 "%s は不正なファイル名です。\r\nこのファイルはダウンロードされません。"
298-#define MSGJPN298 "OLEの初期化に失敗しました。"
299-#define MSGJPN299 "コマンドラインにマスターパスワードが指定されていません"
300-#define MSGJPN300 "デフォルトのマスターパスワードが使われます.\r\nマルウェアの攻撃を防ぐため,固有のマスターパスワードを設定することをおすすめします"
301-#define MSGJPN301 "マスターパスワードが設定と一致しません.安全のため設定の保存を行いません."
302-#define MSGJPN302 "確認用データが壊れているため,マスターパスワードの正当性を確認できませんでした."
303-#define MSGJPN303 "マスターパスワードを変更しました"
304-#define MSGJPN304 "指定されたマスターパスワードが登録されたものと一致しません.\r\n再度入力しますか?\r\n「いいえ」を選ぶと記憶されたFTPパスワードは利用できません."
290+#define MSGJPN290 "Reg\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\0*.reg\0INI\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\0*.ini\0\xE5\x85\xA8\xE3\x81\xA6\xE3\x81\xAE\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\0*\0"
291+#define MSGJPN291 "\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x82\x92\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE3\x81\x8B\xE3\x82\x89\xE5\xBE\xA9\xE5\x85\x83"
292+#define MSGJPN292 "\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x82\x92\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE3\x81\x8B\xE3\x82\x89\xE5\xBE\xA9\xE5\x85\x83\xE3\x81\x99\xE3\x82\x8B\xE3\x81\x9F\xE3\x82\x81\xE3\x81\xAB\xE3\x81\xAF\xE3\x80\x81\x46\x46\x46TP\xE3\x82\x92\xE5\x86\x8D\xE8\xB5\xB7\xE5\x8B\x95\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x8F\xE3\x81\xA0\xE3\x81\x95\xE3\x81\x84\xE3\x80\x82"
293+#define MSGJPN293 "\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE3\x81\xAF\xE6\x8B\xA1\xE5\xBC\xB5\xE5\xAD\x90\xE3\x81\x8C.reg\xE3\x81\x8B.ini\xE3\x81\xA7\xE3\x81\xAA\xE3\x81\x91\xE3\x82\x8C\xE3\x81\xB0\xE3\x81\xAA\xE3\x82\x8A\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93\xE3\x80\x82"
294+#define MSGJPN294 "USER FW\xE3\x83\xA6\xE3\x83\xBC\xE3\x82\xB6\xE5\x90\x8D:FW\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89@\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88\xE5\x90\x8D"
295+#define MSGJPN295 "\xE3\x82\xB7\xE3\x83\x90\xE3\x82\xBD\xE3\x82\xAF WL"
296+#define MSGJPN296 "\xE8\xAA\xAD\xE3\x81\xBF\xE5\x8F\x96\xE3\x82\x8A\xE5\xB0\x82\xE7\x94\xA8\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE3\x81\xA7\xE3\x81\x99\xE3\x80\x82\xE8\xAA\xAD\xE3\x81\xBF\xE5\x8F\x96\xE3\x82\x8A\xE5\xB0\x82\xE7\x94\xA8\xE5\xB1\x9E\xE6\x80\xA7\xE3\x82\x92\xE8\xA7\xA3\xE9\x99\xA4\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x99\xE3\x81\x8B\xEF\xBC\x9F"
297+#define MSGJPN297 "%s \xE3\x81\xAF\xE4\xB8\x8D\xE6\xAD\xA3\xE3\x81\xAA\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE5\x90\x8D\xE3\x81\xA7\xE3\x81\x99\xE3\x80\x82\r\n\xE3\x81\x93\xE3\x81\xAE\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE3\x81\xAF\xE3\x83\x80\xE3\x82\xA6\xE3\x83\xB3\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93\xE3\x80\x82"
298+#define MSGJPN298 "OLE\xE3\x81\xAE\xE5\x88\x9D\xE6\x9C\x9F\xE5\x8C\x96\xE3\x81\xAB\xE5\xA4\xB1\xE6\x95\x97\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F\xE3\x80\x82"
299+#define MSGJPN299 "\xE3\x82\xB3\xE3\x83\x9E\xE3\x83\xB3\xE3\x83\x89\xE3\x83\xA9\xE3\x82\xA4\xE3\x83\xB3\xE3\x81\xAB\xE3\x83\x9E\xE3\x82\xB9\xE3\x82\xBF\xE3\x83\xBC\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE3\x81\x8C\xE6\x8C\x87\xE5\xAE\x9A\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93"
300+#define MSGJPN300 "\xE3\x83\x87\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x88\xE3\x81\xAE\xE3\x83\x9E\xE3\x82\xB9\xE3\x82\xBF\xE3\x83\xBC\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE3\x81\x8C\xE4\xBD\xBF\xE3\x82\x8F\xE3\x82\x8C\xE3\x81\xBE\xE3\x81\x99\xEF\xBC\x8E\r\n\xE3\x83\x9E\xE3\x83\xAB\xE3\x82\xA6\xE3\x82\xA7\xE3\x82\xA2\xE3\x81\xAE\xE6\x94\xBB\xE6\x92\x83\xE3\x82\x92\xE9\x98\xB2\xE3\x81\x90\xE3\x81\x9F\xE3\x82\x81\xEF\xBC\x8C\xE5\x9B\xBA\xE6\x9C\x89\xE3\x81\xAE\xE3\x83\x9E\xE3\x82\xB9\xE3\x82\xBF\xE3\x83\xBC\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE3\x82\x92\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x81\x99\xE3\x82\x8B\xE3\x81\x93\xE3\x81\xA8\xE3\x82\x92\xE3\x81\x8A\xE3\x81\x99\xE3\x81\x99\xE3\x82\x81\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x99"
301+#define MSGJPN301 "\xE3\x83\x9E\xE3\x82\xB9\xE3\x82\xBF\xE3\x83\xBC\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE3\x81\x8C\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x81\xA8\xE4\xB8\x80\xE8\x87\xB4\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93\xEF\xBC\x8E\xE5\xAE\x89\xE5\x85\xA8\xE3\x81\xAE\xE3\x81\x9F\xE3\x82\x81\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x81\xAE\xE4\xBF\x9D\xE5\xAD\x98\xE3\x82\x92\xE8\xA1\x8C\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93\xEF\xBC\x8E"
302+#define MSGJPN302 "\xE7\xA2\xBA\xE8\xAA\x8D\xE7\x94\xA8\xE3\x83\x87\xE3\x83\xBC\xE3\x82\xBF\xE3\x81\x8C\xE5\xA3\x8A\xE3\x82\x8C\xE3\x81\xA6\xE3\x81\x84\xE3\x82\x8B\xE3\x81\x9F\xE3\x82\x81\xEF\xBC\x8C\xE3\x83\x9E\xE3\x82\xB9\xE3\x82\xBF\xE3\x83\xBC\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xAE\xE6\xAD\xA3\xE5\xBD\x93\xE6\x80\xA7\xE3\x82\x92\xE7\xA2\xBA\xE8\xAA\x8D\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93\xE3\x81\xA7\xE3\x81\x97\xE3\x81\x9F\xEF\xBC\x8E"
303+#define MSGJPN303 "\xE3\x83\x9E\xE3\x82\xB9\xE3\x82\xBF\xE3\x83\xBC\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE3\x82\x92\xE5\xA4\x89\xE6\x9B\xB4\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F"
304+#define MSGJPN304 "\xE6\x8C\x87\xE5\xAE\x9A\xE3\x81\x95\xE3\x82\x8C\xE3\x81\x9F\xE3\x83\x9E\xE3\x82\xB9\xE3\x82\xBF\xE3\x83\xBC\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE3\x81\x8C\xE7\x99\xBB\xE9\x8C\xB2\xE3\x81\x95\xE3\x82\x8C\xE3\x81\x9F\xE3\x82\x82\xE3\x81\xAE\xE3\x81\xA8\xE4\xB8\x80\xE8\x87\xB4\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93\xEF\xBC\x8E\r\n\xE5\x86\x8D\xE5\xBA\xA6\xE5\x85\xA5\xE5\x8A\x9B\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x99\xE3\x81\x8B\xEF\xBC\x9F\r\n\xE3\x80\x8C\xE3\x81\x84\xE3\x81\x84\xE3\x81\x88\xE3\x80\x8D\xE3\x82\x92\xE9\x81\xB8\xE3\x81\xB6\xE3\x81\xA8\xE8\xA8\x98\xE6\x86\xB6\xE3\x81\x95\xE3\x82\x8C\xE3\x81\x9F\x46TP\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xAF\xE5\x88\xA9\xE7\x94\xA8\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93\xEF\xBC\x8E"
305+#define MSGJPN305 "\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88\xE3\x81\xAE\xE6\xBC\xA2\xE5\xAD\x97\xE3\x82\xB3\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xAFShift_JIS"
306+#define MSGJPN306 "\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88\xE3\x81\xAE\xE6\xBC\xA2\xE5\xAD\x97\xE3\x82\xB3\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xAFUTF-8"
307+#define MSGJPN307 "\xE3\x83\xAD\xE3\x83\xBC\xE3\x82\xAB\xE3\x83\xAB\xE3\x81\xAE\xE6\xBC\xA2\xE5\xAD\x97\xE3\x82\xB3\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xAFShift_JIS"
308+#define MSGJPN308 "\xE3\x83\xAD\xE3\x83\xBC\xE3\x82\xAB\xE3\x83\xAB\xE3\x81\xAE\xE6\xBC\xA2\xE5\xAD\x97\xE3\x82\xB3\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xAF\x45UC"
309+#define MSGJPN309 "\xE3\x83\xAD\xE3\x83\xBC\xE3\x82\xAB\xE3\x83\xAB\xE3\x81\xAE\xE6\xBC\xA2\xE5\xAD\x97\xE3\x82\xB3\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xAFJIS"
310+#define MSGJPN310 "\xE3\x83\xAD\xE3\x83\xBC\xE3\x82\xAB\xE3\x83\xAB\xE3\x81\xAE\xE6\xBC\xA2\xE5\xAD\x97\xE3\x82\xB3\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xAFUTF-8"
--- /dev/null
+++ b/mesg-jpn.old.h
@@ -0,0 +1,310 @@
1+#define MSGJPN001 "接続を中止しました."
2+#define MSGJPN002 "接続を中止しました."
3+#define MSGJPN003 "\r\n再接続します.\r\n"
4+#define MSGJPN004 "切断しました"
5+#define MSGJPN005 "接続が切断されました."
6+#define MSGJPN006 "FireWallにログインできません."
7+#define MSGJPN007 "ホスト %s に接続できません."
8+#define MSGJPN008 "ログインできません."
9+#define MSGJPN009 "接続できません."
10+#define MSGJPN010 "FireWallのホスト名が設定されていません."
11+#define MSGJPN011 "ホスト名がありません."
12+#define MSGJPN012 "MD5を使用します."
13+#define MSGJPN013 "SHA-1を使用します."
14+#define MSGJPN014 "MD4(S/KEY)を使用します."
15+#define MSGJPN015 "ワンタイムパスワードが処理できません"
16+#define MSGJPN016 "ホスト %s を探しています."
17+#define MSGJPN017 "%sホスト %s (%s (%d)) に接続しています."
18+#define MSGJPN018 "%sホスト %s (%d) に接続しています."
19+#define MSGJPN019 "ホスト %s が見つかりません."
20+#define MSGJPN020 "%sホスト %s (%d) に接続しています."
21+#define MSGJPN021 "SOCKSサーバ %s が見つかりません."
22+#define MSGJPN022 "SOCKSサーバ %s (%d) に接続しています。"
23+#define MSGJPN023 "SOCKSサーバに接続できません. (Err=%d)"
24+#define MSGJPN024 "SOCKSサーバに接続できません. (Err=%d)"
25+#define MSGJPN025 "接続しました."
26+#define MSGJPN026 "接続できません."
27+#define MSGJPN027 "ソケットが作成できません."
28+#define MSGJPN028 "SOCKSサーバに接続できません. (Err=%d)"
29+#define MSGJPN029 "SOCKSサーバに接続できません. (Err=%d)"
30+#define MSGJPN030 "Listenソケットが作成できません."
31+#define MSGJPN031 "PORTコマンドが受け付けられません."
32+#define MSGJPN032 "接続はユーザによって中止されました."
33+#define MSGJPN033 "SOCKSのコマンドが送れませんでした (Cmd = %04X)"
34+#define MSGJPN034 "SOCKS5のコマンドに対するリプライが受信できませんでした"
35+#define MSGJPN035 "SOCKS4のコマンドに対するリプライが受信できませんでした"
36+#define MSGJPN036 "SOCKSサーバの認証方式が異なります."
37+#define MSGJPN037 "SOCKSサーバに認証されませんでした."
38+#define MSGJPN038 "名前"
39+#define MSGJPN039 "日付"
40+#define MSGJPN040 "サイズ"
41+#define MSGJPN041 "種類"
42+#define MSGJPN042 "名前"
43+#define MSGJPN043 "日付"
44+#define MSGJPN044 "サイズ"
45+#define MSGJPN045 "種類"
46+#define MSGJPN046 "属性"
47+#define MSGJPN047 "所有者"
48+#define MSGJPN048 "テンポラリファイルが読み出せません."
49+#define MSGJPN049 "ファイル一覧の取得に失敗しました."
50+#define MSGJPN050 "検索(ローカル)"
51+#define MSGJPN051 "検索(ホスト)"
52+#define MSGJPN052 "削除: %s"
53+#define MSGJPN053 "作成: %s"
54+#define MSGJPN054 "転送: %s"
55+#define MSGJPN055 "削除: %s"
56+#define MSGJPN056 "作成: %s"
57+#define MSGJPN057 "転送: %s"
58+#define MSGJPN058 "%d個のファイルを転送します."
59+#define MSGJPN059 "転送するファイルはありません."
60+#define MSGJPN060 "%d個のフォルダを作成します."
61+#define MSGJPN061 "作成するフォルダはありません."
62+#define MSGJPN062 "%d個のファイル/フォルダを削除します."
63+#define MSGJPN063 "削除するファイル/フォルダはありません."
64+#define MSGJPN064 "名前を変更してアップロード"
65+#define MSGJPN065 "名前を変更してダウンロード"
66+#define MSGJPN066 "削除(ローカル)"
67+#define MSGJPN067 "削除(ホスト)"
68+#define MSGJPN068 "名前変更(ローカル)"
69+#define MSGJPN069 "名前変更(ホスト)"
70+#define MSGJPN070 "フォルダ作成(ローカル)"
71+#define MSGJPN071 "フォルダ作成(ホスト)"
72+#define MSGJPN072 "フォルダ変更(ローカル)"
73+#define MSGJPN073 "フォルダ変更(ホスト)"
74+#define MSGJPN074 "ローカル側のファイル容量を計算します。"
75+#define MSGJPN075 "ホスト側のファイル容量を計算します。"
76+#define MSGJPN076 "ローカル側のファイル容量"
77+#define MSGJPN077 "ホスト側のファイル容量"
78+#define MSGJPN078 "フォルダ作成"
79+#define MSGJPN079 "フォルダ作成"
80+#define MSGJPN080 "フォルダ削除"
81+#define MSGJPN081 "ファイル削除"
82+#define MSGJPN082 "フォルダ作成"
83+#define MSGJPN083 "フォルダ削除"
84+#define MSGJPN084 "ファイル削除"
85+#define MSGJPN085 "%sという名前のファイルはダウンロードできません."
86+#define MSGJPN086 "ダウンロード"
87+#define MSGJPN087 "ファイル一覧取得"
88+#define MSGJPN088 "スキップ"
89+#define MSGJPN089 "ファイル %s はスキップします."
90+#define MSGJPN090 "コマンドが受け付けられません."
91+#define MSGJPN091 "ダウンロードのために"
92+#define MSGJPN092 "コマンドが受け付けられません."
93+#define MSGJPN093 "アドレスが取得できません."
94+#define MSGJPN094 "受信はタイムアウトで失敗しました."
95+#define MSGJPN095 "ファイル %s が作成できません."
96+#define MSGJPN096 "ディスクがいっぱいで書き込めません."
97+#define MSGJPN097 "ファイル一覧の取得を中止しました."
98+#define MSGJPN098 "ファイル一覧"
99+#define MSGJPN099 "ダウンロードを中止しました. (%d Sec. %d B/S)."
100+#define MSGJPN100 "ダウンロードを中止しました."
101+#define MSGJPN101 "ファイル一覧の取得は正常終了しました. (%d Bytes)"
102+#define MSGJPN102 "ダウンロードは正常終了しました. (%d Sec. %d B/S)."
103+#define MSGJPN103 "ダウンロードは正常終了しました. (%d Bytes)"
104+#define MSGJPN104 "アップロード"
105+#define MSGJPN105 "ファイル %s が読み出せません."
106+#define MSGJPN106 "スキップ"
107+#define MSGJPN107 "ファイル %s はスキップします."
108+#define MSGJPN108 "コマンドが受け付けられません."
109+#define MSGJPN109 "アップロードのために"
110+#define MSGJPN110 "コマンドが受け付けられません."
111+#define MSGJPN111 "アドレスが取得できません."
112+#define MSGJPN112 "ファイル %s がオープンできません."
113+#define MSGJPN113 "アップロードを中止しました. (%d Sec. %d B/S)."
114+#define MSGJPN114 "アップロードを中止しました."
115+#define MSGJPN115 "アップロードは正常終了しました. (%d Sec. %d B/S)."
116+#define MSGJPN116 "アップロードは正常終了しました."
117+#define MSGJPN117 "完了"
118+#define MSGJPN118 "中止"
119+#define MSGJPN119 "バイナリ"
120+#define MSGJPN120 "アスキー"
121+#define MSGJPN121 "無変換"
122+#define MSGJPN122 "JIS"
123+#define MSGJPN123 "EUC"
124+#define MSGJPN124 "削除(ローカル)"
125+#define MSGJPN125 "削除(ホスト)"
126+#define MSGJPN126 "WS_FTP.INIファイル"
127+#define MSGJPN127 "基本"
128+#define MSGJPN128 "拡張"
129+#define MSGJPN129 "文字コード"
130+#define MSGJPN130 "ダイアルアップ"
131+#define MSGJPN131 "高度"
132+#define MSGJPN132 "ホストの設定"
133+#define MSGJPN133 "GMT%+02d:00 (日本)"
134+#define MSGJPN134 "使用しない"
135+#define MSGJPN135 "自動認識"
136+#define MSGJPN136 "OTP MD4, S/KEY"
137+#define MSGJPN137 "OTP MD5"
138+#define MSGJPN138 "OTP SHA-1"
139+#define MSGJPN139 "自動認識"
140+#define MSGJPN140 "ACOS"
141+#define MSGJPN141 "VAX VMS"
142+#define MSGJPN142 "IRMX"
143+#define MSGJPN143 "ACOS-4"
144+#define MSGJPN144 "Stratus"
145+#define MSGJPN145 "フォルダを変更できません."
146+#define MSGJPN146 "フォルダを作成できません."
147+#define MSGJPN147 "フォルダを削除できません."
148+#define MSGJPN148 "フォルダを削除できません."
149+#define MSGJPN149 "ファイルを削除できません."
150+#define MSGJPN150 "ファイルを削除できません."
151+#define MSGJPN151 "ファイル名変更ができません."
152+#define MSGJPN152 "テンポラリフォルダ「%s」がありません"
153+#define MSGJPN153 "フォルダ「%s」を使用します"
154+#define MSGJPN154 "接続"
155+#define MSGJPN155 "クイック接続"
156+#define MSGJPN156 "切断"
157+#define MSGJPN157 "ダウンロード"
158+#define MSGJPN158 "アップロード"
159+#define MSGJPN159 "ミラーリングアップロード"
160+#define MSGJPN160 "削除"
161+#define MSGJPN161 "名前変更"
162+#define MSGJPN162 "フォルダ作成"
163+#define MSGJPN163 "一つ上のフォルダへ"
164+#define MSGJPN164 "フォルダの移動"
165+#define MSGJPN165 "アスキー転送モード"
166+#define MSGJPN166 "バイナリ転送モード"
167+#define MSGJPN167 "ファイル名で転送モード切替え"
168+#define MSGJPN168 "表示を更新"
169+#define MSGJPN169 "一覧"
170+#define MSGJPN170 "詳細"
171+#define MSGJPN171 "ホストの漢字コードはEUC"
172+#define MSGJPN172 "ホストの漢字コードはJIS"
173+#define MSGJPN173 "漢字コードの変換なし"
174+#define MSGJPN174 "半角カナを全角に変換"
175+#define MSGJPN175 "フォルダ同時移動"
176+#define MSGJPN176 "受信中止"
177+#define MSGJPN177 "設定名「%s」はありません."
178+#define MSGJPN178 "設定名が指定されていません."
179+#define MSGJPN179 "ホスト名と設定名の両方が指定されています."
180+#define MSGJPN180 "オプション「%s」が間違っています."
181+#define MSGJPN181 "ホスト名と設定名の両方が指定されています."
182+#define MSGJPN182 "ビューワの起動に失敗しました. (ERROR=%d)"
183+#define MSGJPN183 "JRE32.DLL 無し"
184+#define MSGJPN184 "JRE32.DLL Ver %x.%x (C) 山田和夫さん"
185+#define MSGJPN185 "フォルダを選択してください"
186+#define MSGJPN186 "ユーザ"
187+#define MSGJPN187 "転送1"
188+#define MSGJPN188 "転送2"
189+#define MSGJPN189 "転送3"
190+#define MSGJPN190 "ミラーリング"
191+#define MSGJPN191 "操作"
192+#define MSGJPN192 "表示"
193+#define MSGJPN193 "接続/切断"
194+#define MSGJPN194 "FireWall"
195+#define MSGJPN195 "ツール"
196+#define MSGJPN196 "サウンド"
197+#define MSGJPN197 "その他"
198+#define MSGJPN198 "オプション"
199+#define MSGJPN199 "ファイル名"
200+#define MSGJPN200 "ファイル名"
201+#define MSGJPN201 "属性"
202+#define MSGJPN202 "ファイル名"
203+#define MSGJPN203 "ファイル名"
204+#define MSGJPN204 "FWユーザ名→ FWパスワード→ SITE ホスト名"
205+#define MSGJPN205 "FWユーザ名→ FWパスワード→ USER ユーザ名@ホスト名"
206+#define MSGJPN206 "FWユーザ名→ FWパスワード"
207+#define MSGJPN207 "USER ユーザ名@ホスト名"
208+#define MSGJPN208 "OPEN ホスト名"
209+#define MSGJPN209 "SOCKS4"
210+#define MSGJPN210 "SOCKS5 (認証なし)"
211+#define MSGJPN211 "SOCKS5 (ユーザ名、パスワード認証)"
212+#define MSGJPN212 "使用しない"
213+#define MSGJPN213 "自動認識"
214+#define MSGJPN214 "OTP MD4,S/KEY"
215+#define MSGJPN215 "OTP MD5"
216+#define MSGJPN216 "OTP SHA-1"
217+#define MSGJPN217 "ビューワの選択"
218+#define MSGJPN218 "実行ファイル\0*.exe;*.com;*.bat\0全てのファイル\0*\0"
219+#define MSGJPN219 "Waveファイル"
220+#define MSGJPN220 "ダイアルアップを切断しています."
221+#define MSGJPN221 "ダイアルアップで接続しています."
222+#define MSGJPN222 "ダイアルアップが使えません(RasDialDlg)"
223+#define MSGJPN223 "%s に接続しています..."
224+#define MSGJPN224 "不明なエラー"
225+#define MSGJPN225 "ダイアルアップ接続"
226+#define MSGJPN226 "ポートを開いています..."
227+#define MSGJPN227 "ポートが開かれました"
228+#define MSGJPN228 "ダイアル中..."
229+#define MSGJPN229 "ダイアル完了"
230+#define MSGJPN230 "全デバイスが接続されました"
231+#define MSGJPN231 "ユーザ名とパスワードを検証中..."
232+#define MSGJPN232 "再検証中..."
233+#define MSGJPN233 "パスワードを変更して下さい"
234+#define MSGJPN234 "検証が終了しました"
235+#define MSGJPN235 "接続しました"
236+#define MSGJPN236 "切断しました"
237+#define MSGJPN237 "接続処理中..."
238+#define MSGJPN238 "%s への接続"
239+#define MSGJPN239 "# このファイルは編集しないでください。\n"
240+#define MSGJPN240 "INIファイルに設定が保存できません"
241+#define MSGJPN241 "送信はタイムアウトで失敗しました."
242+#define MSGJPN242 "受信はタイムアウトで失敗しました."
243+#define MSGJPN243 "受信はタイムアウトで失敗しました."
244+#define MSGJPN244 "固定長の受信が失敗しました"
245+#define MSGJPN245 "ローカル"
246+#define MSGJPN246 "ホスト"
247+#define MSGJPN247 "選択%d個(%s)"
248+#define MSGJPN248 "ローカル空 %s"
249+#define MSGJPN249 "転送待ちファイル%d個"
250+#define MSGJPN250 "受信中 %s"
251+#define MSGJPN251 "Err:シード文字列"
252+#define MSGJPN252 "Err:シード文字列"
253+#define MSGJPN253 "Err:シーケンス番号"
254+#define MSGJPN254 "MS Pゴシック"
255+#define MSGJPN255 "アップロード(&U)"
256+#define MSGJPN256 "名前を変えてアップロード(&P)..."
257+#define MSGJPN257 "全てをアップロード"
258+#define MSGJPN258 "削除(&R)"
259+#define MSGJPN259 "名前変更(&N)..."
260+#define MSGJPN260 "フォルダ作成(&K)..."
261+#define MSGJPN261 "ファイル容量計算(&Z)"
262+#define MSGJPN262 "最新の情報に更新(&F)"
263+#define MSGJPN263 "ダウンロード(&D)"
264+#define MSGJPN264 "名前を変えてダウンロード(&W)..."
265+#define MSGJPN265 "ファイルとしてダウンロード(&I)"
266+#define MSGJPN266 "全てをダウンロード"
267+#define MSGJPN267 "削除(&R)"
268+#define MSGJPN268 "名前変更(&N)..."
269+#define MSGJPN269 "属性変更(&A)..."
270+#define MSGJPN270 "フォルダ作成(&K)..."
271+#define MSGJPN271 "URLをクリップボードへコピー(&C)"
272+#define MSGJPN272 "ファイル容量計算(&Z)"
273+#define MSGJPN273 "最新の情報に更新(&F)"
274+#define MSGJPN274 "開く(&O)"
275+#define MSGJPN275 "%sで開く(&%d)"
276+#define MSGJPN276 "WS_FTP.INI\0ws_ftp.ini\0全てのファイル\0*\0"
277+#define MSGJPN277 "Waveファイル\0*.wav\0全てのファイル\0*\0"
278+#define MSGJPN278 "理由:%s"
279+#define MSGJPN279 "Listenソケットが取得できません"
280+#define MSGJPN280 "Dataソケットが取得できません"
281+#define MSGJPN281 "PASVモードで接続できません"
282+#define MSGJPN282 "INIファイル名が指定されていません"
283+#define MSGJPN283 "INIファイル指定:"
284+#define MSGJPN284 "http://www2.biglobe.ne.jp/~sota/"
285+#define MSGJPN285 "レジストリエディタが起動できませんでした"
286+#define MSGJPN286 "設定ファイルの保存"
287+#define MSGJPN287 "Regファイル\0*.reg\0全てのファイル\0*\0"
288+#define MSGJPN288 "INIファイル\0*.ini\0全てのファイル\0*\0"
289+#define MSGJPN289 "Agilent Logic analyzer"
290+#define MSGJPN290 "Regファイル\0*.reg\0INIファイル\0*.ini\0全てのファイル\0*\0"
291+#define MSGJPN291 "設定をファイルから復元"
292+#define MSGJPN292 "設定をファイルから復元するためには、FFFTPを再起動してください。"
293+#define MSGJPN293 "設定ファイルは拡張子が.regか.iniでなければなりません。"
294+#define MSGJPN294 "USER FWユーザ名:FWパスワード@ホスト名"
295+#define MSGJPN295 "シバソク WL"
296+#define MSGJPN296 "読み取り専用ファイルです。読み取り専用属性を解除しますか?"
297+#define MSGJPN297 "%s は不正なファイル名です。\r\nこのファイルはダウンロードされません。"
298+#define MSGJPN298 "OLEの初期化に失敗しました。"
299+#define MSGJPN299 "コマンドラインにマスターパスワードが指定されていません"
300+#define MSGJPN300 "デフォルトのマスターパスワードが使われます.\r\nマルウェアの攻撃を防ぐため,固有のマスターパスワードを設定することをおすすめします"
301+#define MSGJPN301 "マスターパスワードが設定と一致しません.安全のため設定の保存を行いません."
302+#define MSGJPN302 "確認用データが壊れているため,マスターパスワードの正当性を確認できませんでした."
303+#define MSGJPN303 "マスターパスワードを変更しました"
304+#define MSGJPN304 "指定されたマスターパスワードが登録されたものと一致しません.\r\n再度入力しますか?\r\n「いいえ」を選ぶと記憶されたFTPパスワードは利用できません."
305+#define MSGJPN305 "ホストの漢字コードはShift_JIS"
306+#define MSGJPN306 "ホストの漢字コードはUTF-8"
307+#define MSGJPN307 "ローカルの漢字コードはShift_JIS"
308+#define MSGJPN308 "ローカルの漢字コードはEUC"
309+#define MSGJPN309 "ローカルの漢字コードはJIS"
310+#define MSGJPN310 "ローカルの漢字コードはUTF-8"
--- a/remote.c
+++ b/remote.c
@@ -1307,8 +1307,20 @@ int ChangeFnameRemote2Local(char *Fname, int Max)
13071307 cInfo.Buf = Buf;
13081308 cInfo.BufSize = Max - 1;
13091309
1310+ // ここで全てUTF-8へ変換する
1311+ // TODO: SJIS以外も直接UTF-8へ変換
13101312 switch(AskHostNameKanji())
13111313 {
1314+ case KANJI_SJIS :
1315+ ConvSJIStoUTF8N(&cInfo);
1316+ *(Buf + cInfo.OutLen) = NUL;
1317+ strcpy(Fname, Buf);
1318+ Pos = strchr(Fname, NUL);
1319+ FlushRestData(&cInfo);
1320+ *(Buf + cInfo.OutLen) = NUL;
1321+ strcpy(Pos, Buf);
1322+ break;
1323+
13121324 case KANJI_JIS :
13131325 ConvJIStoSJIS(&cInfo);
13141326 *(Buf + cInfo.OutLen) = NUL;
@@ -1317,6 +1329,20 @@ int ChangeFnameRemote2Local(char *Fname, int Max)
13171329 FlushRestData(&cInfo);
13181330 *(Buf + cInfo.OutLen) = NUL;
13191331 strcpy(Pos, Buf);
1332+ // TODO
1333+ InitCodeConvInfo(&cInfo);
1334+ cInfo.KanaCnv = NO;
1335+ cInfo.Str = Pos;
1336+ cInfo.StrLen = strlen(Pos);
1337+ cInfo.Buf = Buf;
1338+ cInfo.BufSize = Max - 1;
1339+ ConvSJIStoUTF8N(&cInfo);
1340+ *(Buf + cInfo.OutLen) = NUL;
1341+ strcpy(Fname, Buf);
1342+ Pos = strchr(Fname, NUL);
1343+ FlushRestData(&cInfo);
1344+ *(Buf + cInfo.OutLen) = NUL;
1345+ strcpy(Pos, Buf);
13201346 break;
13211347
13221348 case KANJI_EUC :
@@ -1327,6 +1353,20 @@ int ChangeFnameRemote2Local(char *Fname, int Max)
13271353 FlushRestData(&cInfo);
13281354 *(Buf + cInfo.OutLen) = NUL;
13291355 strcpy(Pos, Buf);
1356+ // TODO
1357+ InitCodeConvInfo(&cInfo);
1358+ cInfo.KanaCnv = NO;
1359+ cInfo.Str = Pos;
1360+ cInfo.StrLen = strlen(Pos);
1361+ cInfo.Buf = Buf;
1362+ cInfo.BufSize = Max - 1;
1363+ ConvSJIStoUTF8N(&cInfo);
1364+ *(Buf + cInfo.OutLen) = NUL;
1365+ strcpy(Fname, Buf);
1366+ Pos = strchr(Fname, NUL);
1367+ FlushRestData(&cInfo);
1368+ *(Buf + cInfo.OutLen) = NUL;
1369+ strcpy(Pos, Buf);
13301370 break;
13311371
13321372 case KANJI_SMB_HEX :
@@ -1338,10 +1378,14 @@ int ChangeFnameRemote2Local(char *Fname, int Max)
13381378 FlushRestData(&cInfo);
13391379 *(Buf + cInfo.OutLen) = NUL;
13401380 strcpy(Pos, Buf);
1341- break;
1342-
1343- case KANJI_UTF8N :
1344- ConvUTF8NtoSJIS(&cInfo);
1381+ // TODO
1382+ InitCodeConvInfo(&cInfo);
1383+ cInfo.KanaCnv = NO;
1384+ cInfo.Str = Pos;
1385+ cInfo.StrLen = strlen(Pos);
1386+ cInfo.Buf = Buf;
1387+ cInfo.BufSize = Max - 1;
1388+ ConvSJIStoUTF8N(&cInfo);
13451389 *(Buf + cInfo.OutLen) = NUL;
13461390 strcpy(Fname, Buf);
13471391 Pos = strchr(Fname, NUL);
@@ -1349,6 +1393,16 @@ int ChangeFnameRemote2Local(char *Fname, int Max)
13491393 *(Buf + cInfo.OutLen) = NUL;
13501394 strcpy(Pos, Buf);
13511395 break;
1396+
1397+// case KANJI_UTF8N :
1398+// ConvUTF8NtoSJIS(&cInfo);
1399+// *(Buf + cInfo.OutLen) = NUL;
1400+// strcpy(Fname, Buf);
1401+// Pos = strchr(Fname, NUL);
1402+// FlushRestData(&cInfo);
1403+// *(Buf + cInfo.OutLen) = NUL;
1404+// strcpy(Pos, Buf);
1405+// break;
13521406 }
13531407 free(Buf);
13541408 Sts = SUCCESS;
@@ -1385,9 +1439,35 @@ int ChangeFnameLocal2Remote(char *Fname, int Max)
13851439 cInfo.Buf = Buf;
13861440 cInfo.BufSize = Max - 1;
13871441
1442+ // ここで全てUTF-8から変換する
1443+ // TODO: SJIS以外も直接UTF-8から変換
13881444 switch(AskHostNameKanji())
13891445 {
1446+ case KANJI_SJIS :
1447+ ConvUTF8NtoSJIS(&cInfo);
1448+ *(Buf + cInfo.OutLen) = NUL;
1449+ strcpy(Fname, Buf);
1450+ Pos = strchr(Fname, NUL);
1451+ FlushRestData(&cInfo);
1452+ *(Buf + cInfo.OutLen) = NUL;
1453+ strcpy(Pos, Buf);
1454+ break;
1455+
13901456 case KANJI_JIS :
1457+ ConvUTF8NtoSJIS(&cInfo);
1458+ *(Buf + cInfo.OutLen) = NUL;
1459+ strcpy(Fname, Buf);
1460+ Pos = strchr(Fname, NUL);
1461+ FlushRestData(&cInfo);
1462+ *(Buf + cInfo.OutLen) = NUL;
1463+ strcpy(Pos, Buf);
1464+ // TODO
1465+ InitCodeConvInfo(&cInfo);
1466+ cInfo.KanaCnv = NO;
1467+ cInfo.Str = Pos;
1468+ cInfo.StrLen = strlen(Pos);
1469+ cInfo.Buf = Buf;
1470+ cInfo.BufSize = Max - 1;
13911471 ConvSJIStoJIS(&cInfo);
13921472 *(Buf + cInfo.OutLen) = NUL;
13931473 strcpy(Fname, Buf);
@@ -1398,6 +1478,20 @@ int ChangeFnameLocal2Remote(char *Fname, int Max)
13981478 break;
13991479
14001480 case KANJI_EUC :
1481+ ConvUTF8NtoSJIS(&cInfo);
1482+ *(Buf + cInfo.OutLen) = NUL;
1483+ strcpy(Fname, Buf);
1484+ Pos = strchr(Fname, NUL);
1485+ FlushRestData(&cInfo);
1486+ *(Buf + cInfo.OutLen) = NUL;
1487+ strcpy(Pos, Buf);
1488+ // TODO
1489+ InitCodeConvInfo(&cInfo);
1490+ cInfo.KanaCnv = NO;
1491+ cInfo.Str = Pos;
1492+ cInfo.StrLen = strlen(Pos);
1493+ cInfo.Buf = Buf;
1494+ cInfo.BufSize = Max - 1;
14011495 ConvSJIStoEUC(&cInfo);
14021496 *(Buf + cInfo.OutLen) = NUL;
14031497 strcpy(Fname, Buf);
@@ -1408,6 +1502,20 @@ int ChangeFnameLocal2Remote(char *Fname, int Max)
14081502 break;
14091503
14101504 case KANJI_SMB_HEX :
1505+ ConvUTF8NtoSJIS(&cInfo);
1506+ *(Buf + cInfo.OutLen) = NUL;
1507+ strcpy(Fname, Buf);
1508+ Pos = strchr(Fname, NUL);
1509+ FlushRestData(&cInfo);
1510+ *(Buf + cInfo.OutLen) = NUL;
1511+ strcpy(Pos, Buf);
1512+ // TODO
1513+ InitCodeConvInfo(&cInfo);
1514+ cInfo.KanaCnv = NO;
1515+ cInfo.Str = Pos;
1516+ cInfo.StrLen = strlen(Pos);
1517+ cInfo.Buf = Buf;
1518+ cInfo.BufSize = Max - 1;
14111519 ConvSJIStoSMB_HEX(&cInfo);
14121520 *(Buf + cInfo.OutLen) = NUL;
14131521 strcpy(Fname, Buf);
@@ -1418,17 +1526,21 @@ int ChangeFnameLocal2Remote(char *Fname, int Max)
14181526 break;
14191527
14201528 case KANJI_SMB_CAP :
1421- ConvSJIStoSMB_CAP(&cInfo);
1529+ ConvUTF8NtoSJIS(&cInfo);
14221530 *(Buf + cInfo.OutLen) = NUL;
14231531 strcpy(Fname, Buf);
14241532 Pos = strchr(Fname, NUL);
14251533 FlushRestData(&cInfo);
14261534 *(Buf + cInfo.OutLen) = NUL;
14271535 strcpy(Pos, Buf);
1428- break;
1429-
1430- case KANJI_UTF8N :
1431- ConvSJIStoUTF8N(&cInfo);
1536+ // TODO
1537+ InitCodeConvInfo(&cInfo);
1538+ cInfo.KanaCnv = NO;
1539+ cInfo.Str = Pos;
1540+ cInfo.StrLen = strlen(Pos);
1541+ cInfo.Buf = Buf;
1542+ cInfo.BufSize = Max - 1;
1543+ ConvSJIStoSMB_CAP(&cInfo);
14321544 *(Buf + cInfo.OutLen) = NUL;
14331545 strcpy(Fname, Buf);
14341546 Pos = strchr(Fname, NUL);
@@ -1436,6 +1548,16 @@ int ChangeFnameLocal2Remote(char *Fname, int Max)
14361548 *(Buf + cInfo.OutLen) = NUL;
14371549 strcpy(Pos, Buf);
14381550 break;
1551+
1552+// case KANJI_UTF8N :
1553+// ConvSJIStoUTF8N(&cInfo);
1554+// *(Buf + cInfo.OutLen) = NUL;
1555+// strcpy(Fname, Buf);
1556+// Pos = strchr(Fname, NUL);
1557+// FlushRestData(&cInfo);
1558+// *(Buf + cInfo.OutLen) = NUL;
1559+// strcpy(Pos, Buf);
1560+// break;
14391561 }
14401562 free(Buf);
14411563 Sts = SUCCESS;
--- a/toolmenu.c
+++ b/toolmenu.c
@@ -90,6 +90,9 @@ static int TmpTransMode;
9090 static int TmpHostKanjiCode;
9191 static int TmpHostKanaCnv;
9292
93+// TODO: ローカルの漢字コードをShift_JIS以外にも対応
94+static int TmpLocalKanjiCode;
95+
9396 static int TmpLocalFileSort;
9497 static int TmpLocalDirSort;
9598 static int TmpRemoteFileSort;
@@ -133,8 +136,15 @@ static TBBUTTON TbarDataMain[] = {
133136 { 8, MENU_BINARY, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },
134137 { 17, MENU_AUTO, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },
135138 { 0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0 },
139+ { 27, MENU_L_KNJ_SJIS, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },
140+ { 20, MENU_L_KNJ_EUC, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },
141+ { 21, MENU_L_KNJ_JIS, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },
142+ { 28, MENU_L_KNJ_UTF8N, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },
143+ { 0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0 },
144+ { 27, MENU_KNJ_SJIS, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },
136145 { 20, MENU_KNJ_EUC, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },
137146 { 21, MENU_KNJ_JIS, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },
147+ { 28, MENU_KNJ_UTF8N, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },
138148 { 22, MENU_KNJ_NONE, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },
139149 { 0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0 },
140150 { 23, MENU_KANACNV, TBSTATE_ENABLED, TBSTYLE_CHECK, 0, 0 },
@@ -185,7 +195,8 @@ static const int HideMenus[] = {
185195 MENU_HELP, MENU_HELP_TROUBLE, MENU_ABOUT,
186196 MENU_REGINIT,
187197 MENU_TEXT, MENU_BINARY, MENU_AUTO,
188- MENU_KNJ_EUC, MENU_KNJ_JIS, MENU_KNJ_NONE,
198+ MENU_KNJ_SJIS, MENU_KNJ_EUC, MENU_KNJ_JIS, MENU_KNJ_UTF8N, MENU_KNJ_NONE,
199+ MENU_L_KNJ_SJIS, MENU_L_KNJ_EUC, MENU_L_KNJ_JIS, MENU_L_KNJ_UTF8N,
189200 MENU_KANACNV,
190201 MENU_LOCAL_UPDIR, MENU_LOCAL_CHDIR,
191202 MENU_REMOTE_UPDIR, MENU_REMOTE_CHDIR,
@@ -821,6 +832,7 @@ void SetTransferTypeImm(int Mode)
821832 {
822833 TmpTransMode = Mode;
823834 HideHostKanjiButton();
835+ HideLocalKanjiButton();
824836 return;
825837 }
826838
@@ -851,6 +863,7 @@ void SetTransferType(int Type)
851863 break;
852864 }
853865 HideHostKanjiButton();
866+ HideLocalKanjiButton();
854867 return;
855868 }
856869
@@ -992,6 +1005,11 @@ void SetHostKanjiCode(int Type)
9921005 {
9931006 switch(Type)
9941007 {
1008+ // UTF-8対応
1009+ case MENU_KNJ_SJIS :
1010+ TmpHostKanjiCode = KANJI_SJIS;
1011+ break;
1012+
9951013 case MENU_KNJ_EUC :
9961014 TmpHostKanjiCode = KANJI_EUC;
9971015 break;
@@ -1000,6 +1018,10 @@ void SetHostKanjiCode(int Type)
10001018 TmpHostKanjiCode = KANJI_JIS;
10011019 break;
10021020
1021+ case MENU_KNJ_UTF8N :
1022+ TmpHostKanjiCode = KANJI_UTF8N;
1023+ break;
1024+
10031025 default :
10041026 TmpHostKanjiCode = KANJI_NOCNV;
10051027 break;
@@ -1023,6 +1045,11 @@ void DispHostKanjiCode(void)
10231045 {
10241046 switch(TmpHostKanjiCode)
10251047 {
1048+ // UTF-8対応
1049+ case KANJI_SJIS :
1050+ SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_KNJ_SJIS, MAKELONG(TRUE, 0));
1051+ break;
1052+
10261053 case KANJI_EUC :
10271054 SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_KNJ_EUC, MAKELONG(TRUE, 0));
10281055 break;
@@ -1031,6 +1058,10 @@ void DispHostKanjiCode(void)
10311058 SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_KNJ_JIS, MAKELONG(TRUE, 0));
10321059 break;
10331060
1061+ case KANJI_UTF8N :
1062+ SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_KNJ_UTF8N, MAKELONG(TRUE, 0));
1063+ break;
1064+
10341065 default :
10351066 SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_KNJ_NONE, MAKELONG(TRUE, 0));
10361067 break;
@@ -1067,16 +1098,21 @@ void HideHostKanjiButton(void)
10671098 {
10681099 switch(TmpTransMode)
10691100 {
1101+ // UTF-8対応
10701102 case TYPE_I :
1103+ SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_SJIS, MAKELONG(FALSE, 0));
10711104 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_EUC, MAKELONG(FALSE, 0));
10721105 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_JIS, MAKELONG(FALSE, 0));
1106+ SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_UTF8N, MAKELONG(FALSE, 0));
10731107 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_NONE, MAKELONG(FALSE, 0));
10741108 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(FALSE, 0));
10751109 break;
10761110
10771111 default :
1112+ SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_SJIS, MAKELONG(TRUE, 0));
10781113 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_EUC, MAKELONG(TRUE, 0));
10791114 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_JIS, MAKELONG(TRUE, 0));
1115+ SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_UTF8N, MAKELONG(TRUE, 0));
10801116 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_NONE, MAKELONG(TRUE, 0));
10811117 if(TmpHostKanjiCode != KANJI_NOCNV)
10821118 SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(TRUE, 0));
@@ -1088,6 +1124,99 @@ void HideHostKanjiButton(void)
10881124 }
10891125
10901126
1127+// ローカルの漢字コード
1128+// テキストモード転送時に使用
1129+// ホスト側が無変換の時はローカルも無変換
1130+
1131+void SetLocalKanjiCodeImm(int Mode)
1132+{
1133+ TmpLocalKanjiCode = Mode;
1134+ DispLocalKanjiCode();
1135+ HideLocalKanjiButton();
1136+ return;
1137+}
1138+
1139+void SetLocalKanjiCode(int Type)
1140+{
1141+ switch(Type)
1142+ {
1143+ // UTF-8対応
1144+ case MENU_L_KNJ_SJIS :
1145+ TmpLocalKanjiCode = KANJI_SJIS;
1146+ break;
1147+
1148+ case MENU_L_KNJ_EUC :
1149+// TmpLocalKanjiCode = KANJI_EUC;
1150+ break;
1151+
1152+ case MENU_L_KNJ_JIS :
1153+// TmpLocalKanjiCode = KANJI_JIS;
1154+ break;
1155+
1156+ case MENU_L_KNJ_UTF8N :
1157+ TmpLocalKanjiCode = KANJI_UTF8N;
1158+ break;
1159+ }
1160+ DispLocalKanjiCode();
1161+ HideLocalKanjiButton();
1162+ return;
1163+}
1164+
1165+void DispLocalKanjiCode(void)
1166+{
1167+ switch(TmpLocalKanjiCode)
1168+ {
1169+ // UTF-8対応
1170+ case KANJI_SJIS :
1171+ SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_L_KNJ_SJIS, MAKELONG(TRUE, 0));
1172+ break;
1173+
1174+ case KANJI_EUC :
1175+// SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_L_KNJ_EUC, MAKELONG(TRUE, 0));
1176+ break;
1177+
1178+ case KANJI_JIS :
1179+// SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_L_KNJ_JIS, MAKELONG(TRUE, 0));
1180+ break;
1181+
1182+ case KANJI_UTF8N :
1183+ SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_L_KNJ_UTF8N, MAKELONG(TRUE, 0));
1184+ break;
1185+ }
1186+ return;
1187+}
1188+
1189+int AskLocalKanjiCode(void)
1190+{
1191+ return(TmpLocalKanjiCode);
1192+}
1193+
1194+void HideLocalKanjiButton(void)
1195+{
1196+ switch(TmpTransMode)
1197+ {
1198+ // UTF-8対応
1199+ case TYPE_I :
1200+ SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_SJIS, MAKELONG(FALSE, 0));
1201+ SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_EUC, MAKELONG(FALSE, 0));
1202+ SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_JIS, MAKELONG(FALSE, 0));
1203+ SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_UTF8N, MAKELONG(FALSE, 0));
1204+ break;
1205+
1206+ default :
1207+ SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_SJIS, MAKELONG(TRUE, 0));
1208+// SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_EUC, MAKELONG(TRUE, 0));
1209+// SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_JIS, MAKELONG(TRUE, 0));
1210+ SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_UTF8N, MAKELONG(TRUE, 0));
1211+ // TODO: 現在EUCとJISは非対応
1212+ SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_EUC, MAKELONG(FALSE, 0));
1213+ SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_JIS, MAKELONG(FALSE, 0));
1214+ break;
1215+ }
1216+ return;
1217+}
1218+
1219+
10911220 /*===================================================
10921221 * 半角変換モード
10931222 *===================================================*/