标题:MFC中用剪贴板实现进程的通信中出现错误
只看楼主
learner09
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-8-24
 问题点数:0 回复次数:0 
MFC中用剪贴板实现进程的通信中出现错误
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编程,以后大家多多帮忙呀
呵呵
搜索更多相关主题的帖子: MFC 通信 进程 剪贴 
2009-08-24 20:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-283620-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.591467 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved