Ctrl+C的功能实现

来源:互联网 发布:淘宝视频直播如何申请 编辑:程序博客网 时间:2024/04/28 08:08

BOOL XXXX::PreTranslateMessage(MSG* pMsg)
{
 if ((pMsg-> wParam== 'c' || pMsg->wParam == 'C') &&   (GetAsyncKeyState(VK_CONTROL)   &   0x8000)   ==   0x8000)
 {
  CString str=_T("要复制的文本");
  //复制到剪贴板
      if (OpenClipboard())    //打开剪贴板
      {
          HGLOBAL clipBuffer; 
          EmptyClipboard();    //清空剪贴板
 
 #ifdef _UNICODE        
   //复制Unicode字符串到剪贴板

          wchar_t * buffer; //指向宽字符的指针变量
          clipBuffer = GlobalAlloc(GMEM_DDESHARE, str.GetLength()*2+2);   //Unicode串,其中每个字符占 2 byte
          buffer = (wchar_t*)GlobalLock(clipBuffer);
          wcscpy_s(buffer,str.GetLength()+1,str);
          GlobalUnlock(clipBuffer);
          SetClipboardData(CF_UNICODETEXT,clipBuffer);   //剪贴板格式为CF_UNICODETEXT ---Unicode文本
 #else          
          //复制ANSI字符串到剪贴板

          char *pbuff;
          clipBuffer = GlobalAlloc(GMEM_DDESHARE,str.GetLength()+1); //ANSI串,其中每个字符占 1 byte
          buff = (char*)GlobalLock(clipBuffer);
          strcpy(pbuff,str.GetLength()+1,LPCSTR(str));
          GlobalUnlock(clipBuffer);
          SetClipboardData(CF_TEXT,clipBuffer);  //剪贴板格式为CF_TEXT ---ANSI文本
 #endif

          CloseClipboard(); //关闭剪贴板
      }
  return XXXX::PreTranslateMessage(pMsg);
 }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

剪贴板取字

 

CString str;
 if (OpenClipboard())
 {
  HANDLE hClip=GetClipboardData(CF_UNICODETEXT);
  WCHAR* buff;
  buff=(WCHAR*)GlobalLock(hClip);
  str=buff;
  GlobalUnlock(hClip);
  CloseClipboard();
  m_EditError.SetWindowTextW(str);
 }

原创粉丝点击