不说别的,很短,直接看代码:    if(this->OpenClipboard())   //如果能打开剪贴板
    {
        ::EmptyClipboard();  //清空剪贴板,使该窗口成为剪贴板的拥有者
        CString str;
        GetDlgItemTextW(IDC_EDIT_SEND,str);  //获取发送框中的文本
        //下面打算将文本放置到系统剪贴板中
        HGLOBAL hClip;
        hClip=::GlobalAlloc(GMEM_MOVEABLE,str.GetLength()*2+2); //如果是文本数据,分配内存时必须多分配一个字符
        TCHAR *pBuf;
        pBuf=(TCHAR *)::GlobalLock(hClip);
        lstrcpy(pBuf,str);
        ::GlobalUnlock(hClip);
        ::SetClipboardData(CF_TEXT,hClip);
        ::CloseClipboard();
    }
IDE是VS2008,工程采用的是Unicode字符集。为什么执行完这段之后,剪贴板中只有发送框文本中的第一个字符?  为什么?哪里有错,请不吝指教,谢谢!

解决方案 »

  1.   

    wcscpy_s(pBuf,str.GetLength()+1,str.c_str());
      

  2.   

    我这里CString怎么没有c_str()的啊?  是ATL里的么?
    我这个项目不包含ATL库的
      

  3.   

    忘了,我用的是string你可以用
    wcscpy_s(pBuf,str.GetLength()+1,str.GetBuffer());
    str.ReleaseBuffer();
      

  4.   


    if(this->OpenClipboard())   //如果能打开剪贴板
        {
            ::EmptyClipboard();  //清空剪贴板,使该窗口成为剪贴板的拥有者
            CString str;
            GetDlgItemTextW(IDC_EDIT_SEND,str);
            HGLOBAL hClip;
            hClip=::GlobalAlloc(GMEM_MOVEABLE,(str.GetLength()+1)*2); //如果是文本数据,分配内存时必须多分配一个字符
            TCHAR *pBuf;
            pBuf=(TCHAR *)::GlobalLock(hClip);
            //lstrcpy(pBuf,str);
            wcscpy_s(pBuf,str.GetLength()+1,str.GetBuffer());   //改了之后依旧不行呀????
            str.ReleaseBuffer();
            ::GlobalUnlock(hClip);
            ::SetClipboardData(CF_TEXT,hClip);
            ::CloseClipboard();
        }
    兔子党总支部负责人,我改了之后还是不行呀
      

  5.   

    有VS2008的同仁可以copy进去测试下啊~  不知道什么原因
      

  6.   

    //清空剪切板原有数据
    if(!EmptyClipboard()) return;
    CString str;
    GetDlgItem(IDC_EDIT2)->GetWindowText(str);
    HANDLE hClip=GlobalAlloc(GMEM_MOVEABLE,(str.GetLength()+1)*2);
    WCHAR* pBuf=(WCHAR*)GlobalLock(hClip);
    wcscpy(pBuf,str.GetBuffer());
                    str.ReleaseBuffer();
    GlobalUnlock(hClip);
    SetClipboardData(CF_UNICODETEXT,hClip);
    CloseClipboard();
      

  7.   

    我也愿意打工啊~   加下我Q先 fishion