Unicode编程小例

来源:互联网 发布:矩阵音频口 编辑:程序博客网 时间:2024/06/05 10:23

最近在写一个剪贴板的程序,实现进程间通信,参考了孙鑫老师的《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();
}
}

原创粉丝点击