클립보드에 넣고 & 가져오는 함수 샘플입니다.
BOOL CTestDlgDlg::SetClipboardText(const CString& strData)
{
BOOL bRtn = FALSE;
// 클립보드 열고
bRtn = OpenClipboard();
// 클립보드 비우고
bRtn = EmptyClipboard();
//////////////////////////////////////////////////////////////////////////
/// 글로벌로 memory 잡고
HGLOBAL hglb;
LPTSTR lptstr;
int cch = strData.GetLength();
hglb = GlobalAlloc(GMEM_MOVEABLE, (cch + 1) * sizeof(TCHAR));
if(hglb == NULL)
return FALSE;
lptstr = (LPTSTR)GlobalLock(hglb);
memcpy(lptstr, strData, cch * sizeof(TCHAR));
lptstr[cch] = (TCHAR)0;
GlobalUnlock(hglb);
//////////////////////////////////////////////////////////////////////////
// 글로벌 memory 를 클립보드에 집어 넣고
SetClipboardData(CF_TEXT, hglb);
// 클립보드 닫고
bRtn = CloseClipboard();
return bRtn;
}
BOOL CTestDlgDlg::GetClipboardText(CString& strResult)
{
BOOL bRtn = FALSE;
// 클립보드 열고
bRtn = OpenClipboard();
// 클립보드 데이터 열고
HGLOBAL hglb = GetClipboardData(CF_TEXT);
if(hglb == NULL)
return FALSE;
// 글로벌로 memory 잡고 카피
LPTSTR lptstr;
lptstr = (LPTSTR)GlobalLock(hglb);
strResult = lptstr;
GlobalUnlock(hglb);
// 클립보드 닫고
bRtn = CloseClipboard();
return bRtn;
}