none
VC++复制功能如何实现? RRS feed

  • 问题

  • 在网上复制了一段复制功能实现的代码,但 strcpy(buffer, LPCSTR(source))这一句无法调试通过,信息为

    不存在CString到LPCSTR的转换,不知要如何改?

    void C路桥工程View::OnEditCopy()
    {
     // TODO:  在此添加命令处理程序代码
     CString source;
     //文本内容保存在source变量中
     if (OpenClipboard())
     {
      HGLOBAL clipbuffer;
      char * buffer;
      EmptyClipboard();
      clipbuffer = GlobalAlloc(GMEM_DDESHARE, source.GetLength() + 1);
      buffer = (char*)GlobalLock(clipbuffer);
      strcpy(buffer, LPCSTR(source));-----------------------------------------为什么不存在CString到LPCSTR的转换?这里要如何改?
      GlobalUnlock(clipbuffer);
      SetClipboardData(CF_TEXT, clipbuffer);
      CloseClipboard();
     }

    }

    2015年2月10日 3:01

答案

  • 你试一下这个, 这是我用过的代码:

            CString cs=L"test string";
           
            char * pGlobal;
    	HGLOBAL hGlobal; // 
    	OpenClipboard();
    	EmptyClipboard();
    
    
    	hGlobal = GlobalAlloc(GHND | GMEM_SHARE, (strlen(T2A(cs))+1) * sizeof(TCHAR));   
    	pGlobal = (char*)GlobalLock(hGlobal);        // lock 
    
    	strcpy_s(pGlobal,(strlen(T2A(cs))+1) * sizeof(TCHAR), T2A(cs));          // copy cs to pGlobal
    	GlobalUnlock(hGlobal); 
    	//OpenClipboard();
    	SetClipboardData(CF_TEXT, hGlobal);  
    	


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 Shu 2017 2015年2月20日 8:27
    2015年2月11日 10:10