Revision: 8694 https://osdn.net/projects/ttssh2/scm/svn/commits/8694 Author: zmatsuo Date: 2020-04-12 00:54:46 +0900 (Sun, 12 Apr 2020) Log Message: ----------- CBSetTextW() を teraterm/common へ移動 - clipboar.c から ttlib_static_cpp.cpp へ Modified Paths: -------------- trunk/teraterm/common/ttlib.h trunk/teraterm/common/ttlib_static_cpp.cpp trunk/teraterm/teraterm/clipboar.c trunk/teraterm/teraterm/clipboar.h -------------- next part -------------- Modified: trunk/teraterm/common/ttlib.h =================================================================== --- trunk/teraterm/common/ttlib.h 2020-04-11 15:54:37 UTC (rev 8693) +++ trunk/teraterm/common/ttlib.h 2020-04-11 15:54:46 UTC (rev 8694) @@ -162,6 +162,7 @@ wchar_t *TTGetLangStrW(const char *section, const char *key, const wchar_t *def, const char *UILanguageFile); wchar_t *GetClipboardTextW(HWND hWnd, BOOL empty); char *GetClipboardTextA(HWND hWnd, BOOL empty); +BOOL CBSetTextW(HWND hWnd, const wchar_t *str_w, size_t str_len); #ifdef __cplusplus } Modified: trunk/teraterm/common/ttlib_static_cpp.cpp =================================================================== --- trunk/teraterm/common/ttlib_static_cpp.cpp 2020-04-11 15:54:37 UTC (rev 8693) +++ trunk/teraterm/common/ttlib_static_cpp.cpp 2020-04-11 15:54:46 UTC (rev 8694) @@ -209,9 +209,64 @@ return pool; } +/** + * \x83N\x83\x8A\x83b\x83v\x83{\x81[\x83h\x82Ƀe\x83L\x83X\x83g\x82\xF0\x83Z\x83b\x83g\x82\xB7\x82\xE9 + * str_w \x83N\x83\x8A\x83b\x83v\x83{\x81[\x83h\x82ɃZ\x83b\x83g\x82\xB7\x82镶\x8E\x9A\x97\xF1\x82ւ̃|\x83C\x83\x93\x83^ + * NULL\x82̂Ƃ\xAB\x83N\x83\x8A\x83b\x83v\x83{\x81[\x83h\x82\xF0\x8B\xF3\x82ɂ\xB7\x82\xE9(str_len\x82͎Q\x8FƂ\xB3\x82\xEA\x82Ȃ\xA2) + * str_len \x95\xB6\x8E\x9A\x97\xF1\x92\xB7 + * 0\x82̂Ƃ\xAB\x95\xB6\x8E\x9A\x97\xAA\x8E\xA9\x93\xAE\x82ŎZ\x8Fo\x82\xB3\x82\xEA\x82\xE9 + */ +BOOL CBSetTextW(HWND hWnd, const wchar_t *str_w, size_t str_len) +{ + HGLOBAL CBCopyWideHandle; + if (str_w == NULL) { + str_len = 0; + } else { + if (str_len == 0) + str_len = wcslen(str_w); + } + if (!OpenClipboard(hWnd)) { + return FALSE; + } + EmptyClipboard(); + if (str_len == 0) { + CloseClipboard(); + return TRUE; + } + + { + // \x95\xB6\x8E\x9A\x97\xF1\x82\xF0\x83R\x83s\x81[\x81A\x8DŌ\xE3\x82\xCCL'\0'\x82\xE0\x8A܂߂\xE9 + wchar_t *CBCopyWidePtr; + const size_t alloc_bytes = (str_len + 1) * sizeof(wchar_t); + CBCopyWideHandle = GlobalAlloc(GMEM_MOVEABLE, alloc_bytes); + if (CBCopyWideHandle == NULL) { + CloseClipboard(); + return FALSE; + } + CBCopyWidePtr = (wchar_t *)GlobalLock(CBCopyWideHandle); + if (CBCopyWidePtr == NULL) { + CloseClipboard(); + return FALSE; + } + memcpy(CBCopyWidePtr, str_w, alloc_bytes - sizeof(wchar_t)); + CBCopyWidePtr[str_len] = L'\0'; + GlobalUnlock(CBCopyWideHandle); + } + + SetClipboardData(CF_UNICODETEXT, CBCopyWideHandle); + + // TODO 9x\x8Cn\x82ł͎\xA9\x93\xAE\x82\xC5CF_TEXT\x82ɃZ\x83b\x83g\x82\xB3\x82\xEA\x82Ȃ\xA2\x82炵\x82\xA2? + // ttl_gui.c \x82\xCC TTLVar2Clipb() \x82ł͂\xAC\x82\xCC2\x82\xAA\x8Ds\x82\xED\x82\xEA\x82Ă\xA2\x82\xBD + // SetClipboardData(CF_TEXT, hText); + // SetClipboardData(CF_UNICODETEXT, wide_hText); + CloseClipboard(); + + return TRUE; +} + // from ttxssh static void format_line_hexdump(char *buf, int buflen, int addr, int *bytes, int byte_cnt) { @@ -293,3 +348,4 @@ { DebugHexDump(OutputDebugHexDumpSub, data, len); } + Modified: trunk/teraterm/teraterm/clipboar.c =================================================================== --- trunk/teraterm/teraterm/clipboar.c 2020-04-11 15:54:37 UTC (rev 8693) +++ trunk/teraterm/teraterm/clipboar.c 2020-04-11 15:54:46 UTC (rev 8694) @@ -1200,61 +1200,6 @@ _CrtCheckMemory(); } -/** - * \x83N\x83\x8A\x83b\x83v\x83{\x81[\x83h\x82Ƀe\x83L\x83X\x83g\x82\xF0\x83Z\x83b\x83g\x82\xB7\x82\xE9 - * str_w \x83N\x83\x8A\x83b\x83v\x83{\x81[\x83h\x82ɃZ\x83b\x83g\x82\xB7\x82镶\x8E\x9A\x97\xF1\x82ւ̃|\x83C\x83\x93\x83^ - * NULL\x82̂Ƃ\xAB\x83N\x83\x8A\x83b\x83v\x83{\x81[\x83h\x82\xF0\x8B\xF3\x82ɂ\xB7\x82\xE9(str_len\x82͎Q\x8FƂ\xB3\x82\xEA\x82Ȃ\xA2) - * str_len \x95\xB6\x8E\x9A\x97\xF1\x92\xB7 - * 0\x82̂Ƃ\xAB\x95\xB6\x8E\x9A\x97\xAA\x8E\xA9\x93\xAE\x82ŎZ\x8Fo\x82\xB3\x82\xEA\x82\xE9 - */ -BOOL CBSetTextW(HWND hWnd, const wchar_t *str_w, size_t str_len) -{ - HGLOBAL CBCopyWideHandle; - - if (str_w == NULL) { - str_len = 0; - } else { - if (str_len == 0) - str_len = wcslen(str_w); - } - - if (!OpenClipboard(hWnd)) { - return FALSE; - } - - EmptyClipboard(); - if (str_len == 0) { - CloseClipboard(); - return TRUE; - } - - { - // \x95\xB6\x8E\x9A\x97\xF1\x82\xF0\x83R\x83s\x81[\x81A\x8DŌ\xE3\x82\xCCL'\0'\x82\xE0\x8A܂߂\xE9 - wchar_t *CBCopyWidePtr; - const size_t alloc_bytes = (str_len + 1) * sizeof(wchar_t); - CBCopyWideHandle = GlobalAlloc(GMEM_MOVEABLE, alloc_bytes); - if (CBCopyWideHandle == NULL) { - CloseClipboard(); - return FALSE; - } - CBCopyWidePtr = (wchar_t *)GlobalLock(CBCopyWideHandle); - if (CBCopyWidePtr == NULL) { - CloseClipboard(); - return FALSE; - } - memcpy(CBCopyWidePtr, str_w, alloc_bytes - sizeof(wchar_t)); - CBCopyWidePtr[str_len] = L'\0'; - GlobalUnlock(CBCopyWideHandle); - } - - SetClipboardData(CF_UNICODETEXT, CBCopyWideHandle); - - // TODO 9x\x8Cn\x82ł͎\xA9\x93\xAE\x82\xC5CF_TEXT\x82ɃZ\x83b\x83g\x82\xB3\x82\xEA\x82Ȃ\xA2\x82炵\x82\xA2? - CloseClipboard(); - - return TRUE; -} - #if 0 BOOL CBSetClipboard(HWND owner, HGLOBAL hMem) { Modified: trunk/teraterm/teraterm/clipboar.h =================================================================== --- trunk/teraterm/teraterm/clipboar.h 2020-04-11 15:54:37 UTC (rev 8693) +++ trunk/teraterm/teraterm/clipboar.h 2020-04-11 15:54:46 UTC (rev 8694) @@ -41,7 +41,6 @@ PCHAR CBOpen(LONG MemSize); void CBClose(void); #endif -BOOL CBSetTextW(HWND hWnd, const wchar_t *str_w, size_t str_len); void CBStartSend(PCHAR DataPtr, int DataSize, BOOL EchoOnly); void CBStartPaste(HWND HWin, BOOL AddCR, BOOL Bracketed);