请各位高手看一下这段程序,g_str是一个字符串,我想多次调用这段程序来拷贝粘贴g_str,但是只有第一次成功,以后改变g_str,都没有效果.
         HGLOBAL hMem;
LPTSTR pStr;
// 分配内存空间
hMem = GlobalAlloc(GHND | GMEM_SHARE, sizeof(g_str));
pStr = (LPTSTR)GlobalLock(hMem);
lstrcpy(pStr, g_str);
GlobalUnlock(hMem);
OpenClipboard(NULL);
EmptyClipboard();
// 设置剪贴板文本
hReturn = SetClipboardData(CF_TEXT, hMem);
CloseClipboard();
// 释放内存空间
GlobalFree(hMem);
// 粘贴文本
SendMessage(hRich, WM_PASTE, 0, 0);

解决方案 »

  1.   

    拷贝到剪贴板
    CString source; 
    //put your text in source
    if(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();
    }从剪贴板得到数据
    char * buffer = NULL;
    //open the clipboard
    CString fromClipboard;
    if ( OpenClipboard() ) 
    {
             HANDLE hData = GetClipboardData( CF_TEXT );
             char * buffer = (char*)GlobalLock( hData );
             fromClipboard = buffer;
             GlobalUnlock( hData );
             CloseClipboard();
    }
      

  2.   

    照理你的程序在设置剪贴板是没有问题的啊。
    可能在获取的函数中出问题吧。
    *****Power By Horisly*****
      

  3.   

    但是我在第二次调用这个设置再发送WM_PASTE后,结果还是原来的字符串,并不能更新
      

  4.   

    我的程序主要是想实现这样一来的结果,有几个文本框的HANDLE,怎样分别把几个字符串的值(比如Str1,Str2等)拷贝到各个文本框中。
      

  5.   

    向文本框发一个WM_SETTEXT消息就可以