首页 > 代码库 > MFC中对于剪切板的简单操作

MFC中对于剪切板的简单操作

ASCII编码的文本为例:

复制操作:

char sc[]="要复制的文本";
HGLOBAL hmem=NULL;
if (OpenClipboard()) //是否成功打开剪帖板
{
    if (EmptyClipboard())//清空成功,则继续
    {
        hmem=GlobalAlloc(GHND,sizeof(sc));//memalloc strlen+1 \0
        char* pmem= (char*)GlobalLock(hmem);
        memcpy(pmem,sc,sizeof(sc));
        // SetClipboardData()
        SetClipboardData(CF_TEXT,hmem);
        GlobalUnlock(hmem);
    }
    //关闭剪贴板
    CloseClipboard();
}

粘贴操作:

//一、 判断剪贴数据格式是否是我们需要的
HGLOBAL hmem=NULL;
char s[256]="";
if (IsClipboardFormatAvailable(CF_TEXT)) //CF_UNICODETEXT
{
    //二、 打开剪贴板
    if (OpenClipboard())
    {
        //三、 获取剪贴板句柄
        hmem=GetClipboardData(CF_TEXT);
        if (hmem)
        {
             //四、 锁定全局内存获取缓冲区指针,
             char* ps=(char*)GlobalLock(hmem);
             //取出数据
             memcpy(s,ps,GlobalSize(hmem));
             //五、 关闭剪贴板,以使其它程序可以访问,释放掉内存锁
             GlobalUnlock(hmem);
        }
        CloseClipboard();
    }
}