回 帖 发 新 帖 刷新版面

主题:一小段代码,路过的帮忙看下

应该是关于Unicode的问题,这段代码实现把数据发到剪贴板的功能
我用的是VS2005的,孙鑫的视频教程是用VC6.0的,所以这些地方老是会出错,但又改不怎么来,请帮帮忙。(在创建MFC程序的时候有把Unicode勾上!)

[code=c]
void CClipboardDlg::OnBnClickedBtnSend()
{
    if(OpenClipboard())
    {
        CString str;
        HANDLE hClip;
        char *pBuf;
        EmptyClipboard();
        GetDlgItemText(IDC_EDIT_SEND, str);
        hClip = GlobalAlloc(GMEM_MOVEABLE, str.GetLength() + 1);
        pBuf = (char*)GlobalLock(hClip);
        strcpy(pBuf, str);        //问题出现在这句
        GlobalUnlock(hClip);
        SetClipboardData(CF_TEXT, hClip);
        CloseClipboard();
    }
}
[/code]
错误消息:“strcpy”: 不能将参数 2 从“CString”转换为“const char *”

我有通过格式强制转换通过编译,但粘贴到记事本上发现会出现乱码。

回复列表 (共4个回复)

沙发

转换是这样转换的。
CString strtext;
char *pbuf;
...
pbuf = CS(LPSTR)(LPCTSTR)strtext;
...

板凳

上面那个打错了一下。
转换是这样转换的。
CString strtext;
char *pbuf;
...
pbuf =  (LPSTR)(LPCTSTR)strtext;
....

3 楼

lstrcpy

4 楼

使用unicode版本的_tcscpy

我来回复

您尚未登录,请登录后再回复。点此登录或注册