[Ttssh2-commit] [9147] ツールチップを表示するようにした

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2021年 2月 6日 (土) 14:44:50 JST


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): {


Ttssh2-commit メーリングリストの案内
Back to archive index