• R/O
  • SSH
  • HTTPS

ttssh2: 提交


Commit MetaInfo

修订版8651 (tree)
时间2020-03-29 01:04:24
作者zmatsuo

Log Message

Var2Clipb を Unicode 対応にした

更改概述

差异

--- branches/unicode_macro_2/teraterm/ttpmacro/ttl_gui.cpp (revision 8650)
+++ branches/unicode_macro_2/teraterm/ttpmacro/ttl_gui.cpp (revision 8651)
@@ -31,7 +31,9 @@
3131
3232 #include "teraterm.h"
3333 #include <stdlib.h>
34+#define _CRTDBG_MAP_ALLOC
3435 #include <stdio.h>
36+#include <crtdbg.h>
3537 #include <string.h>
3638 #include <mbstring.h>
3739 #include <time.h>
@@ -50,6 +52,7 @@
5052 #include "ttl_gui.h"
5153 #include "codeconv.h"
5254 #include "layer_for_unicode.h"
55+#include "ttlib.h"
5356
5457 // add 'clipb2var' (2006.9.17 maya)
5558 WORD TTLClipb2Var()
@@ -184,44 +187,16 @@
184187 {
185188 WORD Err;
186189 TStrVal Str;
187- HGLOBAL hText;
188- LPSTR clipbText;
189- int wide_len;
190- HGLOBAL wide_hText;
191- LPWSTR wide_buf;
192190
193191 Err = 0;
194192 GetStrVal(Str,&Err);
195193 if (Err!=0) return Err;
196194
197- hText = GlobalAlloc(GHND, sizeof(Str));
198- clipbText = (LPSTR)GlobalLock(hText);
199- strncpy_s(clipbText, sizeof(Str), Str, _TRUNCATE);
200- GlobalUnlock(hText);
195+ BOOL r = CBSetTextW(NULL, wc::fromUtf8(Str), 0);
196+ // 0 == クリップボードを開けなかった
197+ // 1 == クリップボードへのコピーに成功した
198+ SetResult(r ? 1 : 0);
201199
202- wide_len = MultiByteToWideChar(CP_ACP, 0, clipbText, -1, NULL, 0);
203- wide_hText = GlobalAlloc(GMEM_MOVEABLE, sizeof(WCHAR) * wide_len);
204- if (wide_hText) {
205- wide_buf = (LPWSTR)GlobalLock(wide_hText);
206- MultiByteToWideChar(CP_ACP, 0, clipbText, -1, wide_buf, wide_len);
207- GlobalUnlock(wide_hText);
208- }
209-
210- if (OpenClipboard(NULL) == 0) {
211- SetResult(0);
212- }
213- else {
214- EmptyClipboard();
215- SetClipboardData(CF_TEXT, hText);
216-
217- if (wide_buf) {
218- SetClipboardData(CF_UNICODETEXT, wide_hText);
219- }
220-
221- CloseClipboard();
222- SetResult(1);
223- }
224-
225200 return Err;
226201 }
227202
Show on old repository browser