拷贝文字到剪贴板中
//功能: 将CString转换成char*,自动区分UNICODE和ASCII //参数: swString,需要转化的字符串 // szBuffer,char*指针,使用完后记得使用free释放 //返回: void ConvertToLPCSTR(char*& szBuf,CString swString) { #ifdef _UNICODE szBuf = NULL; UINT nLen = NULL; nLen = WideCharToMultiByte(CP_ACP, 0, swString/*wszString*/, -1, NULL, 0, NULL, NULL); szBuf = (char*)malloc(nLen + 1); int nRet = WideCharToMultiByte(CP_ACP, 0, swString, -1, szBuf, nLen, NULL, NULL); if (0 == nRet) { free(szBuf); szBuf = NULL; } #else szBuf = NULL; int nLen=swString.GetLength()+1; szBuf = (char*)malloc(nLen + 1); strcpy(szBuf,swString); #endif } //拷贝文字到剪贴板中 BOOL CopyTextToClipboard(CString strText,HWND hWnd=NULL) { BOOL rc=OpenClipboard(hWnd); if(!rc) return rc; EmptyClipboard(); char* szBuf=NULL; ConvertToLPCSTR(szBuf,strText); DWORD cch=strlen(szBuf); HGLOBAL hglbCopy = GlobalAlloc(GMEM_MOVEABLE, (cch + 1) * sizeof(char)); if(hglbCopy==NULL) { free(szBuf); CloseClipboard(); return FALSE; } char* pCopy=(char*)GlobalLock(hglbCopy); strcpy(pCopy,szBuf); GlobalUnlock(hglbCopy); SetClipboardData(CF_TEXT, hglbCopy); free(szBuf); CloseClipboard(); return TRUE; }查看完整版本: 拷贝文字到剪贴板中
Tags: 剪贴板