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();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章