本文介绍了将 unicode 字符串复制到剪贴板不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我不知道为什么这段代码不能正常工作:
I don't know why this code isn't working properly:
#define UNICODE
#include <iostream>
#include <sstream>
#include <windows.h>
void main(void)
{
wchar_t* strData = L"CreateWindowExA";
MessageBox(NULL, strData, L"Warning", MB_OK);
if (OpenClipboard(0)) {
EmptyClipboard();
HGLOBAL hClipboardData;
hClipboardData = GlobalAlloc(GMEM_DDESHARE,
wcslen(strData) + 1);
char* pchData;
pchData = (char*)GlobalLock(hClipboardData);
strcpy(pchData, LPCSTR(strData));
GlobalUnlock(hClipboardData);
SetClipboardData(CF_TEXT, hClipboardData);
CloseClipboard();
}
MessageBox(NULL, L"Copied to Clipboard", L"Title", MB_OK);
}
推荐答案
更改此部分:
hClipboardData = GlobalAlloc(GMEM_DDESHARE, sizeof(WCHAR) * (wcslen(strData) + 1));
WCHAR* pchData;
pchData = (WCHAR*)GlobalLock(hClipboardData);
wcscpy(pchData, strData);
GlobalUnlock(hClipboardData);
SetClipboardData(CF_UNICODETEXT, hClipboardData);
为WCHAR
分配2*
个字节.使用 WCHAR
代替 char
.使用 wcscpy
代替 strcpy
.使用 CF_UNICODETEXT
代替 CF_TEXT
.
Allocate 2*
number of bytes for WCHAR
. Instead of char
, use WCHAR
. Instead of strcpy
, use wcscpy
. Instead of CF_TEXT
, use CF_UNICODETEXT
.
这篇关于将 unicode 字符串复制到剪贴板不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!