티스토리 뷰
.h 파일에 아래 함수 선언
int CopyTextToClipboard(const char *ap_string);
.cpp에 아래 코드 작성
// 복사 코드
CString strTemp = _T("test");
const char* convertMsg;
CT2A ascii(strTemp, CP_UTF8);
convertMsg = ascii.m_psz;
CopyTextToClipboard(convertMsg);
// 복사 함수
int CTestDlg::CopyTextToClipboard(const char *ap_string)
{
// 저장할 문자열의 길이를 구한다. ('\0'까지 포함한 크기)
int string_length = strlen(ap_string) + 1;
// 클립보드로 문자열을 복사하기 위하여 메모리를 할당한다.
// 클립보드에는 핸들을 넣는 형식이라서 HeapAlloc 함수 사용이 블가능하다.
HANDLE h_data = ::GlobalAlloc(GMEM_DDESHARE | GMEM_MOVEABLE, string_length);
// 할당된 메모리에 문자열을 복사하기 위해서 사용 가능한 주소를 얻는다.
char *p_data = (char *)::GlobalLock(h_data);
if (NULL != p_data)
{
// 할당된 메모리 영역에 삽입할 문자열을 복사한다.
memcpy(p_data, ap_string, string_length);
// 문자열을 복사하기 위해서 Lock 했던 메모리를 해제한다.
::GlobalUnlock(h_data);
if (::OpenClipboard(m_hWnd))
{
::EmptyClipboard(); // 클립보드를 연다.
::SetClipboardData(CF_TEXT, h_data); // 클립보드에 저장된 기존 문자열을 삭제한다.
// 클립보드로 문자열을 복사한다.
::CloseClipboard(); // 클립보드를 닫는다.
}
}
return 0;
}
'프로그래밍 > MFC & C++ & API' 카테고리의 다른 글
[MFC] CString 문자열 공백 지우기 (1) | 2018.06.28 |
---|
- Total
- Today
- Yesterday