Windowsクリップボードの操作が簡単な例
1399 ワード
1、文字をクリップボードにコピーする
2、ビットマップハンドルをクリップボードにコピーする
詳細パラメータの説明はMSDNの説明を参照してください
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の説明を参照してください
Remarks
OpenClipboard 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.