您的位置:首页 > 其它

工作问题积累(二十七)复制功能(文本)

2014-08-30 09:52 288 查看
之前blog里面有讲到截屏保存的操作,将截到的图片放到剪贴板里面,现在的项目需求是复制文字,大家肯定了解过Clipboard这个东西,那么这边

就直接贴代码了。

void CQueenMainDlg::CopyPlayerIdToBoard()
{
CString strPlayerID = GetCtrl(kPlayerNumID)->GetText();
if (OpenClipboard()){//将文本复制到粘贴板
HGLOBAL clipbuffer;
char * buffer;
EmptyClipboard();
clipbuffer = GlobalAlloc(GMEM_DDESHARE, strPlayerID.GetLength()+1);
buffer = (char*)GlobalLock(clipbuffer);
strcpy(buffer, LPCSTR(strPlayerID));
SetClipboardData(CF_TEXT,clipbuffer);
CloseClipboard();
}
}


如之前文章中提到,这些小功能为了方便调用,最好写成函数,上面的函数可以设置参数,文本信息放置到形参里面去,这样更好一点。

解释下上面代码:

代码不难理解,有几个地方可能没见过,

1.HGLOBAL这个类型可以跟踪下,typedef HANDLE HGLOBAL; 这个是句柄,应该是SetClipboardData函数参数的类型。

2.CF_TEXT表示需要复制的是文本信息。

/*
* Predefined Clipboard Formats
*/
#define CF_TEXT             1
#define CF_BITMAP           2
#define CF_METAFILEPICT     3
#define CF_SYLK             4
#define CF_DIF              5
#define CF_TIFF             6
#define CF_OEMTEXT          7
#define CF_DIB              8
#define CF_PALETTE          9
#define CF_PENDATA          10
#define CF_RIFF             11
#define CF_WAVE             12
#define CF_UNICODETEXT      13
#define CF_ENHMETAFILE      14


SetClipboardData(CF_BITMAP,hNewBit);这个就是截屏保存中的代码,CF_BITMAP表示图片信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐