剪贴板-程序写入中文文本再粘贴出为乱码?

fancyzh 2003-10-31 01:22:17
写入剪贴板的代码如下:
CString source;
//put your text in source
source="data被替换";
if(OpenClipboard())
{
HGLOBAL clipbuffer;
char * buffer;
EmptyClipboard();
clipbuffer = GlobalAlloc(GMEM_DDESHARE, source.GetLength()+1);
buffer = (char*)GlobalLock(clipbuffer);
strcpy(buffer, LPCSTR(source));
GlobalUnlock(clipbuffer);
SetClipboardData(CF_TEXT,clipbuffer);
CloseClipboard();
}

再粘贴到记事本中就成如下的代码:data±»Ìæ»»
英文可以还原,中文就不行!
请教高手?
上述代码从网上得到.

...全文
153 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
fancyzh 2003-11-06
  • 打赏
  • 举报
回复
用你的方法在程序里写了后在用程序都都可以,但就是用程序写了简帖板之后在记事本里用
ctrl+v粘贴后就是乱码ÎÒÊÇÖйúÈË
孤必有邻 2003-11-04
  • 打赏
  • 举报
回复
我的代码好像没有问题,你参考一下:
//演示粘贴板字符串操作
//写
HGLOBAL clipBuff;
clipBuff=::GlobalAlloc(GMEM_DDESHARE,256);

char * p;
p=(char*)GlobalLock(clipBuff);

strcpy(p,"我是中国人");

GlobalUnlock(clipBuff);
if(OpenClipboard())
{
if(EmptyClipboard())
{
SetClipboardData(CF_TEXT,clipBuff);
CloseClipboard();
}
}

//读
char * data=NULL;
char * cliptext;
if ( OpenClipboard() != 0 )
{
HANDLE hClipboardData;
if ( ( hClipboardData = GetClipboardData( CF_TEXT ) ) != 0 )
{
if ( ( cliptext = (char*)GlobalLock( hClipboardData ) ) != 0 )
{
data = (char*)malloc( GlobalSize( hClipboardData ) + 1 );
strcpy( data, cliptext );
SetWindowText(data);
GlobalUnlock( hClipboardData );
}
}
CloseClipboard();
}
zhucde 2003-11-01
  • 打赏
  • 举报
回复
让你的工程使用UNICODE

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧