注册 登录
编程论坛 VC.NET论坛

MFC中用剪贴板实现进程的通信中出现错误

learner09 发布于 2009-08-24 20:12, 2214 次点击
void CClipboardDlg::OnBnClickedBtnSend()
{
    // TODO: 在此添加控件通知处理程序代码
    if(OpenClipboard())
    {
        CString str;
        HANDLE hClip;
        char* pBuf;
        EmptyClipboard();
        GetDlgItemText(IDC_SEND,str);
        hClip=GlobalAlloc(GMEM_MOVEABLE,str.GetLength()+1);
        pBuf=(char*)GlobalLock(hClip);
        strcpy(pBuf,(char*)(LPCTSTR)str);
        GlobalUnlock(hClip);
        SetClipboardData(CF_TEXT,hClip); 如果输入汉字出现终端,是程序中已触发了一个剪贴板发生中断,可能原因是堆破坏,如果输入英文字符串不会出现此错误.
        CloseClipboard( );


    }
    
}

void CClipboardDlg::OnBnClickedBtnRecv()
{
    // TODO: 在此添加控件通知处理程序代码
    if(OpenClipboard())
    {
        if(IsClipboardFormatAvailable(CF_TEXT))
        {
            char *pBuf;
            HANDLE hClip;
            hClip=GetClipboardData(CF_TEXT);
            pBuf=(char*)GlobalLock(hClip);
            SetDlgItemText(IDC_RECV,(LPCTSTR)pBuf);
            GlobalUnlock(hClip);
            CloseClipboard( );

        }

    }
}
在英文输入不发生错误时,出现接收端编辑框的内容为乱码.我使用了单步追踪发现在发送端的获得pbuf的值只是输入字符串的第一个字母,请问这是什么原因
多谢了

我是刚开始学习MFC编程,以后大家多多帮忙呀
呵呵
0 回复
1