//功能: 将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;
}


杭州格原