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);
}