直接上代码。!
void CXXXXXXX::CopyToClipboard(std::string szDNSInfo)
{
EmptyClipboard();
HGLOBAL hClip; 
hClip=GlobalAlloc(GMEM_SHARE, szDNSInfo.length()+1);
char *pBuf;  
pBuf=(char *)GlobalLock(hClip);
strcpy(pBuf, szDNSInfo.c_str());
GlobalUnlock(hClip);
SetClipboardData(CF_TEXT,hClip);
CloseClipboard();
}这个函数就是这样的。 szDNSInfo是传入的参数
debug发现, 函数执行没问题。缓冲区内有内容。
但是我打开记事本,往里面粘贴,发现不是我复制的内容。求解,怎么回事?
这个剪贴板应该是系统默认的剪贴板,应该是全局的吧。为什么我失败了

解决方案 »

  1.   

    你没有打开开剪贴板
    if(source != "" && OpenClipboard())
    {
    HGLOBAL clipbuffer;
    char * buffer;
    EmptyClipboard();
    clipbuffer = GlobalAlloc(GMEM_DDESHARE, source.GetLength()+1);
    buffer = (char*)GlobalLock(clipbuffer);
    strcpy(buffer, LPCSTR(source));
    GlobalUnlock(clipbuffer);
    SetClipboardData(CF_TEXT,clipbuffer);
    CloseClipboard();
    }