其實向剪貼板中放入數據很簡單,只是調用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); }
我這是放在了一個按鈕的處理函數中,不過放入之後,我以前的那個獲取剪貼板中數據的顯示的是亂碼,但是當我退出程序時粘貼到任何一個文檔中都就可以的。。目前猜測是:當修改完數據之後,窗口會立即得到一個剪貼板的消息,而我們給它上了鎖,所以就訪問不到,產生亂碼。以後仔細研究這個問題吧。。