標籤:param his call ring opencl data- size 清空 操作
1、複製文字到剪貼簿
CString strText = L"須要拷貝到剪貼簿的文字";if ( ::OpenClipboard(m_hWnd) ){if ( ::EmptyClipboard() )//清空剪貼簿內資料{int nSize = strText.GetLength()*2+1;//這裡是位元組數,UNICODE編碼每一個字元佔2個位元組,後面加上一個\0結尾符.HGLOBAL hMem = ::GlobalAlloc(GHND, nSize);byte* pData=(byte*)::GlobalLock(hMem);memcpy_s(pData, nSize, strData.GetData(), nSize-1);pData[nSize-1]='\0';::GlobalUnlock(hMem);::SetClipboardData(CF_UNICODETEXT, hMem);::CloseClipboard();::GlobalFree(hMem);}}
2、複製位元影像控制代碼到剪貼簿
//儲存截屏地區位元影像到剪下板if( ::OpenClipboard(m_hWnd) ){if( ::EmptyClipboard() ){HBITMAP hBmp = GetBitmapRect(g_hScreenBmp, m_rect);::SetClipboardData(CF_BITMAP, hBmp);DeleteObject(hBmp);::CloseClipboard();}}
3、總的來說,你必須依照這個順序來操作剪貼簿:open ---- empty ---- setdata ----- close。(開啟-清空-設定-關閉)
很多其它具體參數介紹能夠參考MSDN說明
RemarksOpenClipboard fails if another window has the clipboard open. An application should call the CloseClipboard function after every successful call to OpenClipboard. The window identified by the hWndNewOwner parameter does not become the clipboard owner unless the EmptyClipboard function is called. If an application calls OpenClipboard with hwnd set to NULL, EmptyClipboard sets the clipboard owner to NULL; this causes SetClipboardData to fail.
Windows剪貼簿操作簡單小例