Windows Programming

텍스트 클립보드

오즈마스터 2007. 5. 23. 23:23

클립보드에 넣고 & 가져오는 함수 샘플입니다.

 

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;
}