2015년 2월 2일 월요일

ListCtrl 선택항목 클립보드 복사하기.

CListCtrl 에 선택된 항목을 클립보드로 복사해서 다른곳으로 복사 해야 할경우가 있다.

이것을 처리 하기 위해서는 리스트 컨트롤 선택된 항목을 원하는 형태로 데이터를 모은후

아래 코드를 적용해 클립보드로 복사 할수 있다.

// sCopyData 는 실제로 리스트 컨트롤에서 클립보드로 복사할 데이터를 모은 데이터.
if (m_ListCtlResult.OpenClipboard())// 리스트 컨트롤에 클립보드 오픈.
    {
        EmptyClipboard();

        int nLen = sCopyData.GetLength() * sizeof(WCHAR) + 2;
        HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, nLen);
        LPBYTE pGlobalData = (LPBYTE)GlobalLock(hGlobal);

        USES_CONVERSION_EX;
        CopyMemory(pGlobalData, T2CW_EX(sCopyData, _ATL_SAFE_ALLOCA_DEF_THRESHOLD), nLen);
        SetClipboardData(CF_UNICODETEXT, hGlobal);

        GlobalUnlock(hGlobal);
        GlobalFree(hGlobal);

        CloseClipboard();
    }
    else
    {
        AfxMessageBox("복사되지 않았습니다.");
        return;
    }

댓글 없음: