VC++ 剪贴板编程
生活随笔
收集整理的這篇文章主要介紹了
VC++ 剪贴板编程
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
新建一個對話框工程;
?
? ? 雙擊按鈕,讓你輸入單擊的成員函數(shù)名稱,然后進入代碼編輯;
void CJieqieDlg::OnButton1() {// TODO: Add your control notification handler code hereif( !OpenClipboard() ){AfxMessageBox( _T("Cannot open the Clipboard!") );return;}if( !EmptyClipboard() ){AfxMessageBox( _T("Cannot empty the Clipboard!") );return;}// 取回當(dāng)前控件的數(shù)據(jù),hData開辟全局內(nèi)存區(qū)域,存放數(shù)據(jù)CString str;this->GetDlgItemText( IDC_EDIT1, str );size_t cbStr = (str.GetLength()+1)*sizeof(TCHAR);HGLOBAL hData = GlobalAlloc(GMEM_MOVEABLE, cbStr);//memcpy_s( GlobalLock(hData), cbStr, str.LockBuffer(), cbStr );memcpy( GlobalLock(hData), str.LockBuffer(), cbStr );GlobalUnlock( hData );str.UnlockBuffer();UINT uiFormat = (sizeof(TCHAR)==sizeof(WCHAR)) ? CF_UNICODETEXT : CF_TEXT;if(::SetClipboardData( uiFormat, hData ) == NULL ){AfxMessageBox(_T("Unable to set Clipboard data"));CloseClipboard();return;}CloseClipboard(); }void CJieqieDlg::OnButton2() {// TODO: Add your control notification handler code hereif( !OpenClipboard() ){AfxMessageBox( _T("Cannot open the Clipboard!") );return;}// 選擇合適的格式,讀取的時候不用獲得剪貼板的擁有權(quán)UINT uiFormat = (sizeof(TCHAR)==sizeof(WCHAR) ? CF_UNICODETEXT : CF_TEXT );HANDLE hData = ::GetClipboardData( uiFormat );if( NULL == hData ){AfxMessageBox( _T("Unable to get Clipboard data!") );CloseClipboard();return;}CString str;LPCTSTR lpdata = (LPCTSTR)GlobalLock(hData);this->SetDlgItemText( IDC_EDIT2, lpdata );GlobalUnlock( hData );CloseClipboard(); }運行如下;在第一個框隨便輸入,單擊按鈕1,然后單擊按鈕2,內(nèi)容拷貝到第二個框;在二個程序之間也可以操作;先打開剪貼板,然后操作,然后關(guān)閉剪貼板;剪貼板編程通常會用到GlobalAlloc函數(shù);?
?
總結(jié)
以上是生活随笔為你收集整理的VC++ 剪贴板编程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySql数据库使用入门
- 下一篇: MFC单文档程序响应菜单消息的顺序