Revision: 9147 https://osdn.net/projects/ttssh2/scm/svn/commits/9147 Author: zmatsuo Date: 2021-02-06 14:44:50 +0900 (Sat, 06 Feb 2021) Log Message: ----------- ツールチップを表示するようにした - 送信方法をツールチップで出すようにした - とりあえず日本語のみ(仕様調査中) - 吹き出し型ツールチップを生成 - common/tipwin と統合を考える - 9x系で動作しない? Modified Paths: -------------- trunk/installer/release/lang_utf8/Japanese.lng trunk/teraterm/teraterm/sendfiledlg.cpp -------------- next part -------------- Modified: trunk/installer/release/lang_utf8/Japanese.lng =================================================================== --- trunk/installer/release/lang_utf8/Japanese.lng 2021-02-06 05:44:30 UTC (rev 9146) +++ trunk/installer/release/lang_utf8/Japanese.lng 2021-02-06 05:44:50 UTC (rev 9147) @@ -544,6 +544,9 @@ MSG_INI_ERROR=Tera Term: エラー MSG_INI_WRITE_ERROR=iniファイルに書き込みができません +; sendfile +DLG_SENDFILE_TERATERM4=Tera Term 4と同じ方法で送信 +DLG_SENDFILE_TERATERM4_TOOLTIP=Tera Term 4の場合\n・ファイルから読み込みながら送信する\n・テキストファイルのエンコードは自動判定されない\nTera Term 5の場合\n・ファイルをメモリに読み込んでから送信する\n・テキストファイルのエンコードは自動判定される [TTSSH] ; font Modified: trunk/teraterm/teraterm/sendfiledlg.cpp =================================================================== --- trunk/teraterm/teraterm/sendfiledlg.cpp 2021-02-06 05:44:30 UTC (rev 9146) +++ trunk/teraterm/teraterm/sendfiledlg.cpp 2021-02-06 05:44:50 UTC (rev 9147) @@ -45,9 +45,63 @@ #include "sendfiledlg.h" +typedef struct tagTipWinData { + HWND hDlg; + HWND hTip; +} TipWin2; + +static TipWin2 *TipWin2Create(HINSTANCE hInstance, HWND hDlg) +{ + HINSTANCE hInst = hInstance; + if (hInstance == NULL) { + hInst = (HINSTANCE)GetWindowLongPtr(hDlg, GWLP_HINSTANCE); + } + + HWND hTip = CreateWindowExW(NULL, TOOLTIPS_CLASSW, NULL, + WS_POPUP |TTS_ALWAYSTIP | TTS_BALLOON, + CW_USEDEFAULT, CW_USEDEFAULT, + CW_USEDEFAULT, CW_USEDEFAULT, + hDlg, NULL, + hInst, NULL); + if (hTip == NULL) { + return NULL; + } + SendMessageW(hTip, TTM_SETMAXTIPWIDTH, 0, INT_MAX); + + TipWin2 *tWin = (TipWin2 *)calloc(sizeof(TipWin2), 1); + if (tWin == NULL) { + return NULL; + } + tWin->hTip = hTip; + tWin->hDlg = hDlg; + + return tWin; +} + +static void TipWin2Destroy(TipWin2 *tWin) +{ + DestroyWindow(tWin->hTip); + tWin->hTip = NULL; + free(tWin); +} + +static BOOL TipWin2SetTextW(TipWin2 *tWin, int id, const wchar_t *text) +{ + TOOLINFOW toolInfo = {}; + toolInfo.cbSize = sizeof(toolInfo); + toolInfo.hwnd = tWin->hDlg; + toolInfo.uFlags = TTF_IDISHWND | TTF_SUBCLASS; // TTF_IDISHWND \x82\xAA\x82\xA0\x82\xEA\x82\xCErect\x82͎Q\x8FƂ\xB3\x82\xEA\x82Ȃ\xA2 + toolInfo.uId = (UINT_PTR)GetDlgItem(tWin->hDlg, id); + toolInfo.lpszText = (LPWSTR)text; // text \x82\xCD SendMessage() \x8E\x9E\x82ɑ\xB6\x8D݂\xB7\x82\xEA\x82Ηǂ\xA2 + SendMessageW(tWin->hTip, TTM_ADDTOOLW, 0, (LPARAM)&toolInfo); + + return TRUE; +} + typedef struct { sendfiledlgdata *create_param; // work + TipWin2 *tip; UINT MsgDlgHelp; } SendFileDlgWork_t; @@ -60,6 +114,7 @@ {IDC_SENDFILE_DELAYTYPE_LABEL, "DLG_SENDFILE_DELAYTYPE_TITLE"}, {IDC_SENDFILE_SEND_SIZE_LABEL, "DLG_SENDFILE_SEND_SIZE_TITLE"}, {IDC_SENDFILE_DELAYTIME_LABEL, "DLG_SENDFILE_DELAYTIME_TITLE"}, + {IDC_SENDFILE_CHECK_4, "DLG_SENDFILE_TERATERM4"}, {IDCANCEL, "BTN_CANCEL"}, {IDOK, "BTN_OK"}, }; @@ -84,7 +139,7 @@ SetDlgTexts(hDlgWnd, TextInfos, _countof(TextInfos), data->UILanguageFile); CenterWindow(hDlgWnd, GetParent(hDlgWnd)); - SetI18nList("TeraTerm", hDlgWnd, IDC_SENDFILE_DELAYTYPE_DROPDOWN, delaytype_list, _countof(delaytype_list), + SetI18nList("Tera Term", hDlgWnd, IDC_SENDFILE_DELAYTYPE_DROPDOWN, delaytype_list, _countof(delaytype_list), data->UILanguageFile, 0); for (size_t i = 0; i < _countof(send_size_list); i++) { @@ -99,8 +154,24 @@ EnableWindow(GetDlgItem(hDlgWnd, IDC_SENDFILE_SEND_SIZE_DROPDOWN), FALSE); EnableWindow(GetDlgItem(hDlgWnd, IDC_SENDFILE_DELAYTIME_EDIT), FALSE); + TipWin2 *tip = TipWin2Create(NULL, hDlgWnd); + work->tip = tip; + wchar_t *text = TTGetLangStrW("Tera Term", "DLG_SENDFILE_TERATERM4_TOOLTIP", NULL, data->UILanguageFile); + if (text != NULL) { + TipWin2SetTextW(tip, IDC_SENDFILE_CHECK_4, text); + free(text); + } + //TipWin2SetTextW(tip, IDC_SENDFILE_FILENAME_EDIT, L"\x83t\x83@\x83C\x83\x8B\x96\xBC\x82\xF0\x93\xFC\x82\xEA\x82\xE9"); // test + //TipWin2SetTextW(tip, IDC_SENDFILE_FILENAME_BUTTON, L"\x83t\x83@\x83C\x83\x8B\x91I\x91\xF0"); // test + return TRUE; } + case WM_DESTROY: { + TipWin2Destroy(work->tip); + work->tip = NULL; + free(work); + return FALSE; + } case WM_COMMAND: switch (wp) { case IDOK | (BN_CLICKED << 16): {