CWnd::OpenClipboard
更新 : 2007 年 11 月
クリップボードを開きます。
BOOL OpenClipboard( );
戻り値
クリップボードが CWnd から開かれた場合は、0 以外を返します。ほかのアプリケーションまたはウィンドウがクリップボードを開いている場合は 0 を返します。
解説
CloseClipboard Windows 関数が呼び出されるまで、ほかのアプリケーションではクリップボードを変更できません。
現在の CWnd オブジェクトは、EmptyClipboard Windows 関数が呼び出されるまで、クリップボードのオーナーになれません。
使用例
//handler for Edit | Copy menu
void CMdiView::OnEditCopy()
{
if (!OpenClipboard())
{
AfxMessageBox(_T("Cannot open the Clipboard"));
return;
}
// Remove the current Clipboard contents
if(!EmptyClipboard())
{
AfxMessageBox(_T("Cannot empty the Clipboard"));
return;
}
// Get the currently selected data, hData handle to
// global memory of data
CString str;
m_Edit.GetWindowText(str);
size_t cbStr = (str.GetLength() + 1) * sizeof(TCHAR);
HGLOBAL hData = GlobalAlloc(GMEM_MOVEABLE, cbStr);
memcpy_s(GlobalLock(hData), cbStr, str.LockBuffer(), cbStr);
GlobalUnlock(hData);
str.UnlockBuffer();
// For the appropriate data formats...
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();
}
必要条件
ヘッダー : afxwin.h