#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); } }}} ---- {{{ }}}