解决 win32 unicode下 剪贴板复制中文乱码 经验分享
wchar_tszBuf1[260];//你要复制的内容TCHAR*pBuf;LPCWSTRlpGlobaltest;DWORDdwLength=sizeof(szBuf...
wchar_t szBuf1[260]; //你要复制的内容
TCHAR *pBuf;
LPCWSTR lpGlobaltest;
DWORD dwLength = sizeof(szBuf1); // 要复制的字串长度
HANDLE hGlobalMemory = GlobalAlloc(GHND, dwLength + 1); // 分配内存
pBuf = (TCHAR*)GlobalLock(hGlobalMemory); // 锁定内存
lstrcpy(pBuf, szBuf1);//把CString转换
GlobalUnlock(hGlobalMemory); // 锁定内存块解锁
::OpenClipboard(g_hWnd);
::EmptyClipboard(); // 清空剪贴板
::SetClipboardData(CF_UNICODETEXT, hGlobalMemory); // 将内存中的数据放置到剪贴板
::CloseClipboard(); // 关闭剪贴板 展开
TCHAR *pBuf;
LPCWSTR lpGlobaltest;
DWORD dwLength = sizeof(szBuf1); // 要复制的字串长度
HANDLE hGlobalMemory = GlobalAlloc(GHND, dwLength + 1); // 分配内存
pBuf = (TCHAR*)GlobalLock(hGlobalMemory); // 锁定内存
lstrcpy(pBuf, szBuf1);//把CString转换
GlobalUnlock(hGlobalMemory); // 锁定内存块解锁
::OpenClipboard(g_hWnd);
::EmptyClipboard(); // 清空剪贴板
::SetClipboardData(CF_UNICODETEXT, hGlobalMemory); // 将内存中的数据放置到剪贴板
::CloseClipboard(); // 关闭剪贴板 展开
1个回答
2017-03-30
展开全部
资源地址发给你了,下面这样引用就好,需要留意下它的数据定义方式和 Masm 的不一样
; 现在这样就可以了
.386
.model flat, stdcall
option casemap :none ; case sensitive
include windows.inc
include kernel32.inc
include user32.inc
include macros.inc ; 这里用的是资源里的宏定义文件,不是 Masm32 的!
includelib kernel32.lib
includelib user32.lib
.data
szCaption WSTR ("test-测试中文Caption", 0)
szText WSTR ("test-测试中文Text", 0)
MessageBoxW PROTO :DWORD,:DWORD,:DWORD,:DWORD
.code
start:
invoke MessageBoxW, NULL, addr szText, addr szCaption, MB_OK
invoke ExitProcess, NULL
end start
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询