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; strncpy(pClipData, ATL::CW2AEX<1024>(str.GetBuffer(0)), cch); GlobalUnlock(hMem); if (SetClipboardData(CF_TEXT, hMem) == NULL) { AfxMessageBox(_T("클립보드 데이터를 설정할 수 없습니다.")); CloseClipboard(); //GlobalFree(hMem); // 지역 스코프 내 자원이 아니면 해제하면 안 된다 return; } } CloseClipboard(); //GlobalFree(hMem); }
if (!OpenClipboard()) { AfxMessageBox(_T("Cannot open the Clipboard")); return; } // Remove the current Clipboard contents if(!EmptyClipboard()) { AfxMessageBox(_T("Cannot empty the Clipboard")); return; } // Set Data size_t size = (strComp.GetLength() * 2) + 2; HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, size); if (hMem) { LPSTR pClipData = (LPSTR)GlobalLock(hMem); pClipData[0] = 0; strncpy(pClipData, ATL::CW2AEX<1024>(strComp.GetBuffer(0)), size); if (::SetClipboardData(CF_OEMTEXT, hMem) == NULL) { AfxMessageBox(_T("Unable to set Clipboard data")); GlobalUnlock(hMem); GlobalFree(hMem); CloseClipboard(); return; } GlobalUnlock(hMem); GlobalFree(hMem); } CloseClipboard();
C++
MFC
클립보드
Retrieved from http://hyacinth.byus.net/moniwiki/wiki.php/C++/(MFC)클립보드에 텍스트 넣기
last modified 2013-03-14 14:56:24