| 1 |
/* |
/* |
| 2 |
* Copyright (C) 1994-1998 T. Teranishi |
* Copyright (C) 1994-1998 T. Teranishi |
| 3 |
* (C) 2004-2019 TeraTerm Project |
* (C) 2004-2020 TeraTerm Project |
| 4 |
* All rights reserved. |
* All rights reserved. |
| 5 |
* |
* |
| 6 |
* Redistribution and use in source and binary forms, with or without |
* Redistribution and use in source and binary forms, with or without |
| 58 |
|
|
| 59 |
#define DllExport __declspec(dllexport) |
#define DllExport __declspec(dllexport) |
| 60 |
#include "ttcommon.h" |
#include "ttcommon.h" |
| 61 |
|
#include "layer_for_unicode.h" |
| 62 |
|
|
| 63 |
|
|
| 64 |
// TMap を格納するファイルマッピングオブジェクト(共有メモリ)の名前 |
// TMap を格納するファイルマッピングオブジェクト(共有メモリ)の名前 |
| 77 |
#define VTCLASSNAME _T("VTWin32") |
#define VTCLASSNAME _T("VTWin32") |
| 78 |
#define TEKCLASSNAME _T("TEKWin32") |
#define TEKCLASSNAME _T("TEKWin32") |
| 79 |
|
|
|
#ifdef UNICODE |
|
|
static HWND(WINAPI *pHtmlHelp)(HWND hwndCaller, LPCWSTR pszFile, UINT uCommand, DWORD_PTR dwData); |
|
|
#define HTMLHELP_API_NAME "HtmlHelpW" |
|
|
#else |
|
|
static HWND(WINAPI *pHtmlHelp)(HWND hwndCaller, LPCSTR pszFile, UINT uCommand, DWORD_PTR dwData); |
|
|
#define HTMLHELP_API_NAME "HtmlHelpA" |
|
|
#endif |
|
|
|
|
| 80 |
enum window_style { |
enum window_style { |
| 81 |
WIN_CASCADE, |
WIN_CASCADE, |
| 82 |
WIN_STACKED, |
WIN_STACKED, |
| 943 |
int i; |
int i; |
| 944 |
char Temp[MAXPATHLEN]; |
char Temp[MAXPATHLEN]; |
| 945 |
HWND Hw; |
HWND Hw; |
| 946 |
|
wchar_t uimsg[MAX_UIMSG]; |
| 947 |
|
|
| 948 |
// delete all items in Window menu |
// delete all items in Window menu |
| 949 |
i = GetMenuItemCount(menu); |
i = GetMenuItemCount(menu); |
| 975 |
UnregWin(Hw); |
UnregWin(Hw); |
| 976 |
} |
} |
| 977 |
} |
} |
|
get_lang_msg("MENU_WINDOW_WINDOW", buf, buflen, "&Window", langFile); |
|
| 978 |
if (VTFlag == 1) { |
if (VTFlag == 1) { |
| 979 |
AppendMenu(menu, MF_SEPARATOR, 0, NULL); |
static const DlgTextInfo MenuTextInfo[] = { |
| 980 |
AppendMenu(menu,MF_ENABLED | MF_STRING,ID_WINDOW_WINDOW, buf); |
{ ID_WINDOW_WINDOW, "MENU_WINDOW_WINDOW" }, |
| 981 |
|
{ ID_WINDOW_MINIMIZEALL, "MENU_WINDOW_MINIMIZEALL" }, |
| 982 |
get_lang_msg("MENU_WINDOW_MINIMIZEALL", buf, buflen, "&Minimize All", langFile); |
{ ID_WINDOW_RESTOREALL, "MENU_WINDOW_RESTOREALL" }, |
| 983 |
AppendMenu(menu, MF_ENABLED | MF_STRING, ID_WINDOW_MINIMIZEALL, buf); |
{ ID_WINDOW_CASCADEALL, "MENU_WINDOW_CASCADE" }, |
| 984 |
|
{ ID_WINDOW_STACKED, "MENU_WINDOW_STACKED" }, |
| 985 |
get_lang_msg("MENU_WINDOW_RESTOREALL", buf, buflen, "&Restore All", langFile); |
{ ID_WINDOW_SIDEBYSIDE, "MENU_WINDOW_SIDEBYSIDE" }, |
| 986 |
AppendMenu(menu, MF_ENABLED | MF_STRING, ID_WINDOW_RESTOREALL, buf); |
}; |
| 987 |
|
|
| 988 |
get_lang_msg("MENU_WINDOW_CASCADE", buf, buflen, "&Cascade", langFile); |
AppendMenu(menu, MF_SEPARATOR, 0, NULL); |
| 989 |
AppendMenu(menu, MF_ENABLED | MF_STRING, ID_WINDOW_CASCADEALL, buf); |
AppendMenu(menu, MF_ENABLED | MF_STRING, ID_WINDOW_WINDOW, "&Window"); |
| 990 |
|
AppendMenu(menu, MF_ENABLED | MF_STRING, ID_WINDOW_MINIMIZEALL, "&Minimize All"); |
| 991 |
get_lang_msg("MENU_WINDOW_STACKED", buf, buflen, "&Stacked", langFile); |
AppendMenu(menu, MF_ENABLED | MF_STRING, ID_WINDOW_RESTOREALL, "&Restore All"); |
| 992 |
AppendMenu(menu, MF_ENABLED | MF_STRING, ID_WINDOW_STACKED, buf); |
AppendMenu(menu, MF_ENABLED | MF_STRING, ID_WINDOW_CASCADEALL, "&Cascade"); |
| 993 |
|
AppendMenu(menu, MF_ENABLED | MF_STRING, ID_WINDOW_STACKED, "&Stacked"); |
| 994 |
|
AppendMenu(menu, MF_ENABLED | MF_STRING, ID_WINDOW_SIDEBYSIDE, "Side &by Side"); |
| 995 |
|
|
| 996 |
get_lang_msg("MENU_WINDOW_SIDEBYSIDE", buf, buflen, "Side &by Side", langFile); |
SetI18nMenuStrs("Tera Term", menu, MenuTextInfo, _countof(MenuTextInfo), langFile); |
|
AppendMenu(menu, MF_ENABLED | MF_STRING, ID_WINDOW_SIDEBYSIDE, buf); |
|
| 997 |
|
|
| 998 |
if (pm->WinUndoFlag) { |
if (pm->WinUndoFlag) { |
| 999 |
if (pm->WinUndoStyle == WIN_CASCADE) |
if (pm->WinUndoStyle == WIN_CASCADE) |
| 1000 |
get_lang_msg("MENU_WINDOW_CASCADE_UNDO", buf, buflen, "&Undo - Cascade", langFile); |
get_lang_msgW("MENU_WINDOW_CASCADE_UNDO", uimsg, _countof(uimsg), L"&Undo - Cascade", langFile); |
| 1001 |
else if (pm->WinUndoStyle == WIN_STACKED) |
else if (pm->WinUndoStyle == WIN_STACKED) |
| 1002 |
get_lang_msg("MENU_WINDOW_STACKED_UNDO", buf, buflen, "&Undo - Stacked", langFile); |
get_lang_msgW("MENU_WINDOW_STACKED_UNDO", uimsg, _countof(uimsg), L"&Undo - Stacked", langFile); |
| 1003 |
else |
else |
| 1004 |
get_lang_msg("MENU_WINDOW_SIDEBYSIDE_UNDO", buf, buflen, "&Undo - Side by Side", langFile); |
get_lang_msgW("MENU_WINDOW_SIDEBYSIDE_UNDO", uimsg, _countof(uimsg), L"&Undo - Side by Side", langFile); |
| 1005 |
AppendMenu(menu, MF_ENABLED | MF_STRING, ID_WINDOW_UNDO, buf); |
_AppendMenuW(menu, MF_ENABLED | MF_STRING, ID_WINDOW_UNDO, uimsg); // TODO UNICODE |
| 1006 |
} |
} |
| 1007 |
|
|
| 1008 |
} |
} |
| 1009 |
else { |
else { |
| 1010 |
AppendMenu(menu,MF_ENABLED | MF_STRING,ID_TEKWINDOW_WINDOW, buf); |
get_lang_msgW("MENU_WINDOW_WINDOW", uimsg, _countof(uimsg), L"&Window", langFile); |
| 1011 |
|
_AppendMenuW(menu,MF_ENABLED | MF_STRING,ID_TEKWINDOW_WINDOW, uimsg); |
| 1012 |
} |
} |
| 1013 |
} |
} |
| 1014 |
|
|
| 1166 |
char HomeDir[MAX_PATH]; |
char HomeDir[MAX_PATH]; |
| 1167 |
char Temp[MAX_PATH]; |
char Temp[MAX_PATH]; |
| 1168 |
HWND HWin; |
HWND HWin; |
| 1169 |
TCHAR HelpFN[MAX_PATH]; |
wchar_t HelpFN[MAX_PATH]; |
| 1170 |
TCHAR uimsg[MAX_UIMSG]; |
wchar_t uimsg[MAX_UIMSG]; |
| 1171 |
TCHAR dllName[MAX_PATH]; |
wchar_t *HomeDirT; |
|
const TCHAR *HomeDirT; |
|
|
const TCHAR *errorFile; |
|
|
TCHAR buf[MAX_PATH]; |
|
| 1172 |
|
|
| 1173 |
/* Get home directory */ |
/* Get home directory */ |
| 1174 |
if (GetModuleFileNameA(NULL,Temp,_countof(Temp)) == 0) { |
if (GetModuleFileNameA(NULL,Temp,_countof(Temp)) == 0) { |
| 1175 |
return; |
return; |
| 1176 |
} |
} |
| 1177 |
ExtractDirName(Temp, HomeDir); |
ExtractDirName(Temp, HomeDir); |
| 1178 |
HomeDirT = ToTcharA(HomeDir); |
HomeDirT = ToWcharA(HomeDir); |
| 1179 |
|
|
| 1180 |
get_lang_msgT("HELPFILE", uimsg, _countof(uimsg), |
get_lang_msgW("HELPFILE", uimsg, _countof(uimsg), L"teraterm.chm", UILanguageFile); |
|
_T("teraterm.chm"), UILanguageFile); |
|
| 1181 |
|
|
|
if (pHtmlHelp == NULL) { |
|
|
HINSTANCE hDll; |
|
|
GetSystemDirectory(dllName, _countof(dllName)); |
|
|
_tcscat_s(dllName, _countof(dllName), _T("\\hhctrl.ocx")); |
|
|
hDll = LoadLibrary(dllName); |
|
|
if (hDll == NULL) { |
|
|
errorFile = dllName; |
|
|
goto error; |
|
|
} |
|
|
pHtmlHelp = (void *)GetProcAddress(hDll, HTMLHELP_API_NAME); |
|
|
if (pHtmlHelp == NULL) { |
|
|
errorFile = dllName; |
|
|
goto error; |
|
|
} |
|
|
} |
|
| 1182 |
// ヘルプのオーナーは常にデスクトップになる (2007.5.12 maya) |
// ヘルプのオーナーは常にデスクトップになる (2007.5.12 maya) |
| 1183 |
HWin = GetDesktopWindow(); |
HWin = GetDesktopWindow(); |
| 1184 |
_sntprintf_s(HelpFN, _countof(HelpFN), _TRUNCATE, _T("%s\\%s"), (TCHAR *)HomeDirT, uimsg); |
_snwprintf_s(HelpFN, _countof(HelpFN), _TRUNCATE, L"%s\\%s", HomeDirT, uimsg); |
| 1185 |
if (pHtmlHelp != NULL && pHtmlHelp(HWin, HelpFN, Command, Data) == NULL && Command != HH_CLOSE_ALL) { |
if (_HtmlHelpW(HWin, HelpFN, Command, Data) == NULL && Command != HH_CLOSE_ALL) { |
|
errorFile = HelpFN; |
|
| 1186 |
goto error; |
goto error; |
| 1187 |
} |
} |
| 1188 |
goto finish; |
goto finish; |
| 1189 |
|
|
| 1190 |
error: |
error: |
| 1191 |
get_lang_msgT("MSG_OPENHELP_ERROR", uimsg, _countof(uimsg), |
{ |
| 1192 |
_T("Can't open HTML help file(%s)."), UILanguageFile); |
wchar_t buf[MAX_PATH]; |
| 1193 |
_sntprintf_s(buf, _countof(buf), _TRUNCATE, uimsg, HelpFN); |
get_lang_msgW("MSG_OPENHELP_ERROR", uimsg, _countof(uimsg), |
| 1194 |
MessageBox(HWin, buf, _T("Tera Term: HTML help"), MB_OK | MB_ICONERROR); |
L"Can't open HTML help file(%s).", UILanguageFile); |
| 1195 |
|
_snwprintf_s(buf, _countof(buf), _TRUNCATE, uimsg, HelpFN); |
| 1196 |
|
_MessageBoxW(HWin, buf, L"Tera Term: HTML help", MB_OK | MB_ICONERROR); |
| 1197 |
|
} |
| 1198 |
|
|
| 1199 |
finish: |
finish: |
| 1200 |
free((void *)HomeDirT); |
free(HomeDirT); |
| 1201 |
} |
} |
| 1202 |
|
|
| 1203 |
HWND WINAPI GetNthWin(int n) |
HWND WINAPI GetNthWin(int n) |