CString转char *, 用GetBuffer()方法,还是strcpy ?
大家好,小弟最近在做一个小程序,以前把CString类型转char * 类型都是调用CString类型的GetBuffer()方法,也一直都用的很顺手,可是最近做的这个程序用到了剪贴版方面的知识结果就不一样了,实现代码如下:
if (OpenClipboard())
{
CString src("ClipBoardOk");
HANDLE hClip;
char *pBuf;
EmptyClipboard();
hClip = GlobalAlloc(GMEM_MOVEABLE, src.GetLength() + 1);
pBuf = (char *)GlobalLock(hClip);
strcpy_s(pBuf,src.GetLength()+1, src);
//pBuf = src.GetBuffer();
//src.ReleaseBuffer();
GlobalUnlock(hClip);
HANDLE h = SetClipboardData(CF_TEXT, hClip);
CloseClipboard();
}
程序中用到了strcpy_s()函数,把CString类型的src复制到了char *类型的pBuf中,这么做程序一切正常,剪贴版中也确实得到了"ClipBoardOk"字符串,不过用惯了GetBuffer()方法的我,当把strcpy_s()一行换成下面我注掉的两行时,两次pBuf中的字符串值虽然一样,可是换完后,剪贴版中的内容就是乱码了,不知道怎么回事啊,还请大家指点指点我啊? 谢谢了...