#keywords
{{{#!gcode
void CDetailInfoDlg::OnBnClickedCopyDetail()
{
	// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
	CString str;
	...

	if (!OpenClipboard())
	{
		AfxMessageBox(_T("클립보드를 열 수 없습니다."));
		return;
	}
	EmptyClipboard();

	int cch = str.GetLength() * 2 + 2;
	HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE, cch);
	if (hMem)
	{
		LPSTR pClipData = (LPSTR)GlobalLock(hMem);
		pClipData[0] = 0;
		memcpy(pClipData, ATL::CW2A(str.GetBuffer(0)), cch);
		
		GlobalUnlock(hMem);

		if (SetClipboardData(CF_TEXT, hMem) == NULL)
		{
			AfxMessageBox(_T("클립보드 데이터를 설정할 수 없습니다."));

			CloseClipboard();
			//GlobalFree(hMem); 지역 변수 내 자원이 아니면 해제하면 안 됨
			return;
		}
	}
	
	CloseClipboard();
	//GlobalFree(hMem);
}

}}}
----
{{{
}}}