其實向剪貼板中放入數據很簡單,只是調用SetClipboardData函數就OK了。不過在這之前你必須打開剪貼板和清空剪貼板中的數據。OpenClipboard和EmptyClipboard
void CdrayFilesDlg::OnBnClickedPutData()
{
// TODO: 在此添加控件通知處理程序代碼
if(!OpenClipboard())
{
MessageBox(L"Cannot open the Clipboard");
return;
}
if(!EmptyClipboard())
{
MessageBox(L"Cannot empty the Clipboard");
return;
}
char* data="HelloWorld!";
HGLOBAL hData=GlobalAlloc(GHND,strlen(data)+1);
char* pmenm=(char*)GlobalLock(hData);
memcpy(pmenm,data,strlen(data));
if((::SetClipboardData(CF_TEXT,hData))==NULL)
{
return;
}
CloseClipboard();
GlobalUnlock(hData);
GlobalFree(pmenm);
}
我這是放在了一個按鈕的處理函數中,不過放入之後,我以前的那個獲取剪貼板中數據的顯示的是亂碼,但是當我退出程序時粘貼到任何一個文檔中都就可以的。。目前猜測是:當修改完數據之後,窗口會立即得到一個剪貼板的消息,而我們給它上了鎖,所以就訪問不到,產生亂碼。以後仔細研究這個問題吧。。