Unicode编程小例

最近在写一个剪贴板的程序,实现进程间通信,参考了孙鑫老师的《vc++深入详解》。刚开始完全按照书上所写,但并能完全复制输入的数据,想到自己的编程环境是vs2010,而书上用的是vc++6.0。才想到可能是字符编码的问题,Unicode与ANSIC的编程区别,于是将代码改成了Unicode的形式,这是发送与接收的代码,如下:

void CClipboardDlg::OnBnClickedSend()
{
// TODO: Add your control notification handler code here
if (OpenClipboard())
{
CStringW str;
HANDLE hClip;
WCHAR *pBuf;

EmptyClipboard();
GetDlgItemText(IDC_EDIT_SEND,str);
hClip=GlobalAlloc(GMEM_MOVEABLE,2 * lstrlen(str) + sizeof(wchar_t));
pBuf=(WCHAR*)GlobalLock(hClip);
int cont=str.GetLength();
wcscpy(pBuf,(LPCWSTR)str);

GlobalUnlock(hClip);
SetClipboardData(CF_UNICODETEXT,hClip);
CloseClipboard();


}
}


void CClipboardDlg::OnBnClickedRecieve()
{
// TODO: Add your control notification handler code here
if (OpenClipboard())
{
if(IsClipboardFormatAvailable(CF_UNICODETEXT))
{
HANDLE hClip;
WCHAR* pBuf;
hClip=GetClipboardData(CF_UNICODETEXT);
pBuf=(WCHAR*)GlobalLock(hClip);
GlobalUnlock(hClip);
SetDlgItemText(IDC_EDIT_RECIEVE,pBuf);
}
CloseClipboard();
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值