OSDN Git Service

Fix bugs of automatic software update.
[ffftp/ffftp.git] / toolmenu.c
index 786a754..9678c2b 100644 (file)
@@ -28,6 +28,8 @@
 /============================================================================*/\r
 \r
 #define  STRICT\r
+// IPv6対応\r
+#include <winsock2.h>\r
 #include <windows.h>\r
 #include <stdio.h>\r
 #include <stdlib.h>\r
@@ -37,7 +39,8 @@
 #include <windowsx.h>\r
 #include <commctrl.h>\r
 #include <stdarg.h>\r
-#include <winsock.h>\r
+// IPv6対応\r
+//#include <winsock.h>\r
 \r
 #include "common.h"\r
 #include "resource.h"\r
@@ -71,6 +74,8 @@ extern int LocalWidth;
 extern char ViewerName[VIEWERS][FMAX_PATH+1];\r
 extern int TransMode;\r
 extern int SortSave;\r
+// UTF-8対応\r
+extern int LocalKanjiCode;\r
 \r
 /*===== ローカルなワーク =====*/\r
 \r
@@ -100,7 +105,9 @@ static int TmpRemoteDirSort;
 \r
 static int SyncMove = NO;\r
 \r
-static int HideUI = NO;\r
+// デッドロック対策\r
+//static int HideUI = NO;\r
+static int HideUI = 0;\r
 \r
 \r
 /* 2007/09/21 sunasunamix  ここから *********************/\r
@@ -230,68 +237,132 @@ int MakeToolBarWindow(HWND hWnd, HINSTANCE hInst)
        char *Pos;\r
        int Tmp2;\r
        DWORD NoDrives;\r
+       // 高DPI対応\r
+       HBITMAP hOriginal;\r
+       HBITMAP hResized;\r
 \r
        /*===== メインのツールバー =====*/\r
 \r
+       // 高DPI対応\r
+//     hWndTbarMain = CreateToolbarEx(\r
+//                             hWnd,\r
+//                             WS_CHILD | WS_VISIBLE | TBSTYLE_TOOLTIPS | CCS_TOP | TBSTYLE_FLAT,\r
+//                             1,\r
+//                             27,\r
+//                             hInst,\r
+//                             main_toolbar_bmp,\r
+//                             TbarDataMain,\r
+//                             sizeof(TbarDataMain)/sizeof(TBBUTTON),\r
+//                             16,16,\r
+//                             16,16,\r
+//                             sizeof(TBBUTTON));\r
+       hOriginal = LoadImage(hInst, MAKEINTRESOURCE(main_toolbar_bmp), IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE | LR_LOADMAP3DCOLORS);\r
+       if(hOriginal != NULL)\r
+       {\r
+               hResized = ResizeBitmap(hOriginal, 64, 64, 16, 64);\r
+               DeleteObject(hOriginal);\r
+       }\r
        hWndTbarMain = CreateToolbarEx(\r
                                hWnd,\r
                                WS_CHILD | WS_VISIBLE | TBSTYLE_TOOLTIPS | CCS_TOP | TBSTYLE_FLAT,\r
                                1,\r
-                               27,\r
-                               hInst,\r
-                               main_toolbar_bmp,\r
+                               30,\r
+                               NULL,\r
+                               (UINT_PTR)hResized,\r
                                TbarDataMain,\r
                                sizeof(TbarDataMain)/sizeof(TBBUTTON),\r
-                               16,16,\r
-                               16,16,\r
+                               CalcPixelX(16),CalcPixelY(16),\r
+                               CalcPixelX(16),CalcPixelY(16),\r
                                sizeof(TBBUTTON));\r
+       if(hResized != NULL)\r
+               DeleteObject(hOriginal);\r
+       hResized = NULL;\r
 \r
        if(hWndTbarMain != NULL)\r
        {\r
                /* 2007/09/21 sunasunamix  ここから *********************/\r
-               pOldTbarMainProc = (WNDPROC)SetWindowLong(hWndTbarMain, GWL_WNDPROC, (DWORD)CountermeasureTbarMainProc);\r
+               // 64ビット対応\r
+//             pOldTbarMainProc = (WNDPROC)SetWindowLong(hWndTbarMain, GWL_WNDPROC, (DWORD)CountermeasureTbarMainProc);\r
+               pOldTbarMainProc = (WNDPROC)SetWindowLongPtr(hWndTbarMain, GWLP_WNDPROC, (LONG_PTR)CountermeasureTbarMainProc);\r
                /********************************************* ここまで */\r
 \r
                GetClientRect(hWnd, &Rect1);\r
-               MoveWindow(hWndTbarMain, 0, 0, Rect1.right, TOOLWIN_HEIGHT, FALSE);\r
+               // 高DPI対応\r
+//             MoveWindow(hWndTbarMain, 0, 0, Rect1.right, TOOLWIN_HEIGHT, FALSE);\r
+               MoveWindow(hWndTbarMain, 0, 0, Rect1.right, AskToolWinHeight(), FALSE);\r
        }\r
 \r
        /*===== ローカルのツールバー =====*/\r
 \r
+       // 高DPI対応\r
+//     hWndTbarLocal = CreateToolbarEx(\r
+//                             hWnd,\r
+//                             WS_CHILD | WS_VISIBLE | TBSTYLE_TOOLTIPS | CCS_NORESIZE | TBSTYLE_FLAT,\r
+//                             2,\r
+//                             2,\r
+//                             hInst,\r
+//                             remote_toolbar_bmp,\r
+//                             TbarDataLocal,\r
+//                             sizeof(TbarDataLocal)/sizeof(TBBUTTON),\r
+//                             16,16,\r
+//                             16,16,\r
+//                             sizeof(TBBUTTON));\r
+       hOriginal = LoadImage(hInst, MAKEINTRESOURCE(remote_toolbar_bmp), IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE | LR_LOADMAP3DCOLORS);\r
+       if(hOriginal != NULL)\r
+       {\r
+               hResized = ResizeBitmap(hOriginal, 64, 64, 16, 64);\r
+               DeleteObject(hOriginal);\r
+       }\r
        hWndTbarLocal = CreateToolbarEx(\r
                                hWnd,\r
                                WS_CHILD | WS_VISIBLE | TBSTYLE_TOOLTIPS | CCS_NORESIZE | TBSTYLE_FLAT,\r
                                2,\r
                                2,\r
-                               hInst,\r
-                               remote_toolbar_bmp,\r
+                               NULL,\r
+                               (UINT_PTR)hResized,\r
                                TbarDataLocal,\r
                                sizeof(TbarDataLocal)/sizeof(TBBUTTON),\r
-                               16,16,\r
-                               16,16,\r
+                               CalcPixelX(16),CalcPixelY(16),\r
+                               CalcPixelX(16),CalcPixelY(16),\r
                                sizeof(TBBUTTON));\r
+       if(hResized != NULL)\r
+               DeleteObject(hOriginal);\r
+       hResized = NULL;\r
 \r
        if(hWndTbarLocal != NULL)\r
        {\r
                /* 2007/09/21 sunasunamix  ここから *********************/\r
-               pOldTbarLocalProc = (WNDPROC)SetWindowLong(hWndTbarLocal, GWL_WNDPROC, (DWORD)CountermeasureTbarLocalProc);\r
+               // 64ビット対応\r
+//             pOldTbarLocalProc = (WNDPROC)SetWindowLong(hWndTbarLocal, GWL_WNDPROC, (DWORD)CountermeasureTbarLocalProc);\r
+               pOldTbarLocalProc = (WNDPROC)SetWindowLongPtr(hWndTbarLocal, GWLP_WNDPROC, (LONG_PTR)CountermeasureTbarLocalProc);\r
                /********************************************* ここまで */\r
 \r
-               MoveWindow(hWndTbarLocal, 0, TOOLWIN_HEIGHT, LocalWidth, TOOLWIN_HEIGHT, FALSE);\r
+               // 高DPI対応\r
+//             MoveWindow(hWndTbarLocal, 0, TOOLWIN_HEIGHT, LocalWidth, TOOLWIN_HEIGHT, FALSE);\r
+               MoveWindow(hWndTbarLocal, 0, AskToolWinHeight(), LocalWidth, AskToolWinHeight(), FALSE);\r
 \r
                /*===== ローカルのディレクトリ名ウインドウ =====*/\r
 \r
                SendMessage(hWndTbarLocal, TB_GETITEMRECT, 3, (LPARAM)&Rect1);\r
-#ifndef ENGLISH\r
-               DlgFont = CreateFont(Rect1.bottom-Rect1.top-8, 0, 0, 0, 0, FALSE,FALSE,FALSE,SHIFTJIS_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,MSGJPN254);\r
-#else\r
-               DlgFont = CreateFont(Rect1.bottom-Rect1.top-8, 0, 0, 0, 0, FALSE,FALSE,FALSE,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,MSGJPN254);\r
-#endif\r
-\r
+               // UTF-8対応\r
+               // 高DPI対応\r
+//#ifndef FFFTP_ENGLISH\r
+//             DlgFont = CreateFont(Rect1.bottom-Rect1.top-8, 0, 0, 0, 0, FALSE,FALSE,FALSE,SHIFTJIS_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,MSGJPN254);\r
+//#else\r
+//             DlgFont = CreateFont(Rect1.bottom-Rect1.top-8, 0, 0, 0, 0, FALSE,FALSE,FALSE,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,MSGJPN254);\r
+//#endif\r
+               DlgFont = CreateFont(Rect1.bottom-Rect1.top-CalcPixelY(8), 0, 0, 0, 0, FALSE,FALSE,FALSE,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,MSGJPN254);\r
+\r
+               // 高DPI対応\r
+//             hWndDirLocal = CreateWindowEx(WS_EX_CLIENTEDGE,\r
+//                                     "COMBOBOX", "",\r
+//                                     WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | CBS_DROPDOWN | CBS_SORT | CBS_AUTOHSCROLL,\r
+//                                     Rect1.right, Rect1.top, LocalWidth - Rect1.right, 200,\r
+//                                     hWndTbarLocal, (HMENU)COMBO_LOCAL, hInst, NULL);\r
                hWndDirLocal = CreateWindowEx(WS_EX_CLIENTEDGE,\r
                                        "COMBOBOX", "",\r
                                        WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | CBS_DROPDOWN | CBS_SORT | CBS_AUTOHSCROLL,\r
-                                       Rect1.right, Rect1.top, LocalWidth - Rect1.right, 200,\r
+                                       Rect1.right, Rect1.top, LocalWidth - Rect1.right, CalcPixelY(200),\r
                                        hWndTbarLocal, (HMENU)COMBO_LOCAL, hInst, NULL);\r
 \r
                if(hWndDirLocal != NULL)\r
@@ -299,14 +370,16 @@ int MakeToolBarWindow(HWND hWnd, HINSTANCE hInst)
                        /* エディットコントロールを探す */\r
                        hWndDirLocalEdit = GetWindow(hWndDirLocal, GW_CHILD);\r
                        if(hWndDirLocalEdit != NULL)\r
-                               HistEditBoxProcPtr = (WNDPROC)SetWindowLong(hWndDirLocalEdit, GWL_WNDPROC, (LONG)HistEditBoxWndProc);\r
+                               // 64ビット対応\r
+//                             HistEditBoxProcPtr = (WNDPROC)SetWindowLong(hWndDirLocalEdit, GWL_WNDPROC, (LONG)HistEditBoxWndProc);\r
+                               HistEditBoxProcPtr = (WNDPROC)SetWindowLongPtr(hWndDirLocalEdit, GWLP_WNDPROC, (LONG_PTR)HistEditBoxWndProc);\r
 \r
                        SendMessage(hWndDirLocal, WM_SETFONT, (WPARAM)DlgFont, MAKELPARAM(TRUE, 0));\r
                        SendMessage(hWndDirLocal, CB_LIMITTEXT, FMAX_PATH, 0);\r
 \r
                        /* ドライブ名をセットしておく */\r
                        GetLogicalDriveStrings(FMAX_PATH, Tmp);\r
-                       NoDrives = LoadHideDriveListRegistory();\r
+                       NoDrives = LoadHideDriveListRegistry();\r
                        Pos = Tmp;\r
                        while(*Pos != NUL)\r
                        {\r
@@ -321,34 +394,66 @@ int MakeToolBarWindow(HWND hWnd, HINSTANCE hInst)
 \r
        /*===== ホストのツールバー =====*/\r
 \r
+       // 高DPI対応\r
+//     hWndTbarRemote = CreateToolbarEx(\r
+//                             hWnd,\r
+//                             WS_CHILD | WS_VISIBLE | TBSTYLE_TOOLTIPS | CCS_NORESIZE | TBSTYLE_FLAT,\r
+//                             3,\r
+//                             2,\r
+//                             hInst,\r
+//                             remote_toolbar_bmp,\r
+//                             TbarDataRemote,\r
+//                             sizeof(TbarDataRemote)/sizeof(TBBUTTON),\r
+//                             16,16,\r
+//                             16,16,\r
+//                             sizeof(TBBUTTON));\r
+       hOriginal = LoadImage(hInst, MAKEINTRESOURCE(remote_toolbar_bmp), IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE | LR_LOADMAP3DCOLORS);\r
+       if(hOriginal != NULL)\r
+       {\r
+               hResized = ResizeBitmap(hOriginal, 64, 64, 16, 64);\r
+               DeleteObject(hOriginal);\r
+       }\r
        hWndTbarRemote = CreateToolbarEx(\r
                                hWnd,\r
                                WS_CHILD | WS_VISIBLE | TBSTYLE_TOOLTIPS | CCS_NORESIZE | TBSTYLE_FLAT,\r
                                3,\r
                                2,\r
-                               hInst,\r
-                               remote_toolbar_bmp,\r
+                               NULL,\r
+                               (UINT_PTR)hResized,\r
                                TbarDataRemote,\r
                                sizeof(TbarDataRemote)/sizeof(TBBUTTON),\r
-                               16,16,\r
-                               16,16,\r
+                               CalcPixelX(16),CalcPixelY(16),\r
+                               CalcPixelX(16),CalcPixelY(16),\r
                                sizeof(TBBUTTON));\r
+       if(hResized != NULL)\r
+               DeleteObject(hOriginal);\r
+       hResized = NULL;\r
 \r
        if(hWndTbarRemote != NULL)\r
        {\r
                /* 2007/09/21 sunasunamix  ここから *********************/\r
-               pOldTbarRemoteProc = (WNDPROC)SetWindowLong(hWndTbarRemote, GWL_WNDPROC, (DWORD)CountermeasureTbarRemoteProc);\r
+               // 64ビット対応\r
+//             pOldTbarRemoteProc = (WNDPROC)SetWindowLong(hWndTbarRemote, GWL_WNDPROC, (DWORD)CountermeasureTbarRemoteProc);\r
+               pOldTbarRemoteProc = (WNDPROC)SetWindowLongPtr(hWndTbarRemote, GWLP_WNDPROC, (LONG_PTR)CountermeasureTbarRemoteProc);\r
                /********************************************* ここまで */\r
 \r
-               MoveWindow(hWndTbarRemote, LocalWidth + SepaWidth, TOOLWIN_HEIGHT, RemoteWidth, TOOLWIN_HEIGHT, FALSE);\r
+               // 高DPI対応\r
+//             MoveWindow(hWndTbarRemote, LocalWidth + SepaWidth, TOOLWIN_HEIGHT, RemoteWidth, TOOLWIN_HEIGHT, FALSE);\r
+               MoveWindow(hWndTbarRemote, LocalWidth + SepaWidth, AskToolWinHeight(), RemoteWidth, AskToolWinHeight(), FALSE);\r
 \r
                /*===== ホストのディレクトリ名ウインドウ =====*/\r
 \r
                SendMessage(hWndTbarRemote, TB_GETITEMRECT, 3, (LPARAM)&Rect1);\r
+               // 高DPI対応\r
+//             hWndDirRemote = CreateWindowEx(WS_EX_CLIENTEDGE,\r
+//                                     "COMBOBOX", "",\r
+//                                     WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | CBS_DROPDOWN | CBS_AUTOHSCROLL,\r
+//                                     Rect1.right, Rect1.top, RemoteWidth - Rect1.right, 200,\r
+//                                     hWndTbarRemote, (HMENU)COMBO_REMOTE, hInst, NULL);\r
                hWndDirRemote = CreateWindowEx(WS_EX_CLIENTEDGE,\r
                                        "COMBOBOX", "",\r
                                        WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | CBS_DROPDOWN | CBS_AUTOHSCROLL,\r
-                                       Rect1.right, Rect1.top, RemoteWidth - Rect1.right, 200,\r
+                                       Rect1.right, Rect1.top, RemoteWidth - Rect1.right, CalcPixelY(200),\r
                                        hWndTbarRemote, (HMENU)COMBO_REMOTE, hInst, NULL);\r
 \r
                if(hWndDirRemote != NULL)\r
@@ -356,7 +461,9 @@ int MakeToolBarWindow(HWND hWnd, HINSTANCE hInst)
                        /* エディットコントロールを探す */\r
                        hWndDirRemoteEdit = GetWindow(hWndDirRemote, GW_CHILD);\r
                        if(hWndDirRemoteEdit != NULL)\r
-                               HistEditBoxProcPtr = (WNDPROC)SetWindowLong(hWndDirRemoteEdit, GWL_WNDPROC, (LONG)HistEditBoxWndProc);\r
+                               // 64ビット対応\r
+//                             HistEditBoxProcPtr = (WNDPROC)SetWindowLong(hWndDirRemoteEdit, GWL_WNDPROC, (LONG)HistEditBoxWndProc);\r
+                               HistEditBoxProcPtr = (WNDPROC)SetWindowLongPtr(hWndDirRemoteEdit, GWLP_WNDPROC, (LONG_PTR)HistEditBoxWndProc);\r
 \r
                        SendMessage(hWndDirRemote, WM_SETFONT, (WPARAM)DlgFont, MAKELPARAM(TRUE, 0));\r
                        SendMessage(hWndDirRemote, CB_LIMITTEXT, FMAX_PATH, 0);\r
@@ -425,7 +532,7 @@ static LRESULT CALLBACK HistEditBoxWndProc(HWND hWnd, UINT message, WPARAM wPara
                default :\r
                        return(CallWindowProc(HistEditBoxProcPtr, hWnd, message, wParam, lParam));\r
        }\r
-    return(0L);\r
+       return(0L);\r
 }\r
 \r
 \r
@@ -575,7 +682,9 @@ HWND GetRemoteTbarWnd(void)
 \r
 int GetHideUI(void)\r
 {\r
-       return(HideUI);\r
+       // デッドロック対策\r
+//     return(HideUI);\r
+       return (HideUI > 0 ? YES : NO);\r
 }\r
 \r
 \r
@@ -595,7 +704,9 @@ void MakeButtonsFocus(void)
        int Count;\r
        int Win;\r
 \r
-       if(HideUI == NO)\r
+       // デッドロック対策\r
+//     if(HideUI == NO)\r
+       if(HideUI == 0)\r
        {\r
                hWndMain = GetMainHwnd();\r
                hWndFocus = GetFocus();\r
@@ -753,7 +864,9 @@ void DisableUserOpe(void)
 {\r
        int i;\r
 \r
-       HideUI = YES;\r
+       // デッドロック対策\r
+//     HideUI = YES;\r
+       HideUI++;\r
 \r
        for(i = 0; i < sizeof(HideMenus) / sizeof(int); i++)\r
        {\r
@@ -766,6 +879,10 @@ void DisableUserOpe(void)
        EnableWindow(hWndDirLocal, FALSE);\r
        EnableWindow(hWndDirRemote, FALSE);\r
 \r
+       // 特定の操作を行うと異常終了するバグ修正\r
+       EnableWindow(GetLocalHwnd(), FALSE);\r
+       EnableWindow(GetRemoteHwnd(), FALSE);\r
+\r
        return;\r
 }\r
 \r
@@ -783,7 +900,11 @@ void EnableUserOpe(void)
 {\r
        int i;\r
 \r
-       if(HideUI == YES)\r
+       // デッドロック対策\r
+//     if(HideUI == YES)\r
+       if(HideUI > 0)\r
+               HideUI--;\r
+       if(HideUI == 0)\r
        {\r
                for(i = 0; i < sizeof(HideMenus) / sizeof(int); i++)\r
                {\r
@@ -795,11 +916,20 @@ void EnableUserOpe(void)
                EnableWindow(hWndDirLocal, TRUE);\r
                EnableWindow(hWndDirRemote, TRUE);\r
 \r
+               // 特定の操作を行うと異常終了するバグ修正\r
+               EnableWindow(GetLocalHwnd(), TRUE);\r
+               EnableWindow(GetRemoteHwnd(), TRUE);\r
+\r
                // 選択不可な漢字コードのボタンが表示されるバグを修正\r
                HideHostKanjiButton();\r
                HideLocalKanjiButton();\r
 \r
-               HideUI = NO;\r
+               // バグ修正\r
+//             HideUI = NO;\r
+\r
+               // バグ修正\r
+               SetFocus(NULL);\r
+               SetFocus(GetMainHwnd());\r
 \r
                MakeButtonsFocus();\r
        }\r
@@ -819,7 +949,9 @@ void EnableUserOpe(void)
 \r
 int AskUserOpeDisabled(void)\r
 {\r
-       return(HideUI);\r
+       // デッドロック対策\r
+//     return(HideUI);\r
+       return (HideUI > 0 ? YES : NO);\r
 }\r
 \r
 \r
@@ -1275,6 +1407,12 @@ void HideLocalKanjiButton(void)
        return;\r
 }\r
 \r
+void SaveLocalKanjiCode(void)\r
+{\r
+       LocalKanjiCode = TmpLocalKanjiCode;\r
+       return;\r
+}\r
+\r
 \r
 /*===================================================\r
 *                      半角変換モード\r
@@ -1745,7 +1883,9 @@ void LocalRbuttonMenu(int Pos)
        UINT Flg3;\r
        int Count;\r
 \r
-       if(HideUI == NO)\r
+       // デッドロック対策\r
+//     if(HideUI == NO)\r
+       if(HideUI == 0)\r
        {\r
                Flg1 = 0;\r
                if(AskConnecting() == NO)\r
@@ -1810,7 +1950,9 @@ void RemoteRbuttonMenu(int Pos)
        UINT Flg3;\r
        int Count;\r
 \r
-       if(HideUI == NO)\r
+       // デッドロック対策\r
+//     if(HideUI == NO)\r
+       if(HideUI == 0)\r
        {\r
                Flg1 = 0;\r
                if(AskConnecting() == NO)\r
@@ -1833,9 +1975,20 @@ void RemoteRbuttonMenu(int Pos)
                AppendMenu(hMenu, MF_STRING | Flg1, MENU_DOWNLOAD_ALL, MSGJPN266);\r
                AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_DELETE, MSGJPN267);\r
                AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_RENAME, MSGJPN268);\r
+#if defined(HAVE_TANDEM)\r
+               /* HP NonStop Server では CHMOD の仕様が異なるため使用不可 */\r
+               if (AskRealHostType() != HTYPE_TANDEM)\r
+#endif\r
                AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_CHMOD, MSGJPN269);\r
                AppendMenu(hMenu, MF_STRING | Flg1, MENU_MKDIR, MSGJPN270);\r
                AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_URL_COPY, MSGJPN271);\r
+#if defined(HAVE_TANDEM)\r
+               /* OSS モードのときに表示されるように AskRealHostType() を使用する */\r
+               if (AskRealHostType() == HTYPE_TANDEM)\r
+                       AppendMenu(hMenu, MF_STRING | Flg1, MENU_SWITCH_OSS, MSGJPN2001);\r
+#endif\r
+               // 上位のディレクトリへ移動対応\r
+               AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_REMOTE_MOVE_UPDIR, MSGJPN355);\r
                AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);\r
                AppendMenu(hMenu, MF_STRING | Flg1, MENU_FILESIZE, MSGJPN272);\r
                AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);\r
@@ -1874,7 +2027,9 @@ static void AddOpenMenu(HMENU hMenu, UINT Flg)
        char Tmp[FMAX_PATH+1];\r
        int i;\r
 \r
-       AppendMenu(hMenu, MF_STRING | Flg, MENU_DCLICK, MSGJPN274);\r
+       // ローカルフォルダを開く\r
+//     AppendMenu(hMenu, MF_STRING | Flg, MENU_DCLICK, MSGJPN274);\r
+       AppendMenu(hMenu, MF_STRING | Flg, MENU_OPEN, MSGJPN274);\r
        for(i = 0; i < VIEWERS; i++)\r
        {\r
                if(strlen(ViewerName[i]) != 0)\r
@@ -1896,7 +2051,9 @@ static LRESULT CALLBACK CountermeasureTbarMainProc(HWND hWnd,UINT uMessage,WPARA
 {\r
        switch (uMessage) {\r
        case WM_DESTROY :\r
-               SetWindowLong(hWnd,GWL_WNDPROC,(DWORD)pOldTbarMainProc);\r
+               // 64ビット対応\r
+//             SetWindowLong(hWnd,GWL_WNDPROC,(DWORD)pOldTbarMainProc);\r
+               SetWindowLongPtr(hWnd,GWLP_WNDPROC,(LONG_PTR)pOldTbarMainProc);\r
                break;\r
        case WM_RBUTTONDBLCLK :\r
        case WM_RBUTTONDOWN :\r
@@ -1913,7 +2070,9 @@ static LRESULT CALLBACK CountermeasureTbarLocalProc(HWND hWnd,UINT uMessage,WPAR
 {\r
        switch (uMessage) {\r
        case WM_DESTROY :\r
-               SetWindowLong(hWnd,GWL_WNDPROC,(DWORD)pOldTbarLocalProc);\r
+               // 64ビット対応\r
+//             SetWindowLong(hWnd,GWL_WNDPROC,(DWORD)pOldTbarLocalProc);\r
+               SetWindowLongPtr(hWnd,GWLP_WNDPROC,(LONG_PTR)pOldTbarLocalProc);\r
                break;\r
        case WM_RBUTTONDBLCLK :\r
        case WM_RBUTTONDOWN :\r
@@ -1930,7 +2089,9 @@ static LRESULT CALLBACK CountermeasureTbarRemoteProc(HWND hWnd,UINT uMessage,WPA
 {\r
        switch (uMessage) {\r
        case WM_DESTROY :\r
-               SetWindowLong(hWnd,GWL_WNDPROC,(DWORD)pOldTbarRemoteProc);\r
+               // 64ビット対応\r
+//             SetWindowLong(hWnd,GWL_WNDPROC,(DWORD)pOldTbarRemoteProc);\r
+               SetWindowLongPtr(hWnd,GWLP_WNDPROC,(LONG_PTR)pOldTbarRemoteProc);\r
                break;\r
        case WM_RBUTTONDBLCLK :\r
        case WM_RBUTTONDOWN :\r