1. 开发环境 :VS2010。
2. 项目属性,字符集:使用多字节字符集。
3. 要解决的问题:在MFC对话框应用程序中,选择列表框中的某一项,并拷贝该项的字符创到粘贴板上。
4. 具体代码:
int curSel = -1;
int len = 0;
curSel = -1;
curSel = m_listLog.GetCurSel();
if(curSel==LB_ERR){
return;
}
else{
CString str;
LPTSTR lptzBuffer;
m_listLog.GetText(curSel, str); // 获取该项中的字符串
BOOL bret = OpenClipboard(); // 打开粘贴板
EmptyClipboard(); // 清空粘贴板
len = str.GetLength(); // 获取字符串长度,CString中的字符是char型的
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, (len*2+2) );
wchar_t *p = (wchar_t*)GlobalLock(hGlobal);
memset(p, 0, str.GetLength()+1);
MultiByteToWideChar( CP_ACP, 0, str.GetBuffer(), len+2, p, len*2+2 ); //char*转成wchar_t*
//memcpy(p, str.GetBuffer(), str.GetLength()+1);
bret = GlobalUnlock(hGlobal);
HANDLE hResult = SetClipboardData(CF_UNICODETEXT, hGlobal); //拷贝到粘贴板中
CloseClipboard(); //关闭粘贴板
}