我是靠谱客的博主 殷勤手链,最近开发中收集的这篇文章主要介绍系统相关功能开发(九)-剪贴板,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.列举剪贴板中数据类型

void CClicpBoardSampleDlg::OnButtonEnumClformat()	// 列举剪贴板中数据类型
{
	if(!OpenClipboard())							// 打开剪切板
	{
		WriteLog("打开剪切板时发生错误");			// 输出错误信息,并
		return;										// 返回
	}	
	WriteLog("剪切板中支持的数据类型有:");			// 输出提示信息
	UINT uiFormat = EnumClipboardFormats(0);		// 开始枚举剪切板数据类型
	TCHAR	szName[MAX_PATH];						// 定义剪切板名称变量
	while(uiFormat)									// 依次循环处理剪切板数据格式
	{	
		if (uiFormat < 0xc000)						// 如果数据类型小于0xc000,则调用GlobalGetAtomName
			GlobalGetAtomName((ATOM)uiFormat, szName, MAX_PATH);
		else
            GetClipboardFormatName(uiFormat, szName, MAX_PATH);	// 否则,调用GetClipboardFormatName
		WriteLog("%d=%s", uiFormat, szName);		// 输出剪切板格式
		uiFormat = EnumClipboardFormats(uiFormat);	// 枚举下一个格式
	}
    CloseClipboard();								// 关闭剪切板
}


2.启动监视剪贴板

void CClicpBoardSampleDlg::OnButtonMonitor()		// 启动监视剪贴板
{
	hNextWnd = SetClipboardViewer();				// 将对话框句柄加入剪切板监视列表
	if( hNextWnd!= NULL) WriteLog("开始监视剪切板复制的内容");	// 输出提示信息
	
}

LRESULT CClicpBoardSampleDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) // 消息处理函数
{	
	if(message == WM_DRAWCLIPBOARD)					// 如果是剪切板复制消息
		WriteLog("剪切板内容发生变化了");			// 输出提示信息
	return CDialog::WindowProc(message, wParam, lParam);	// 调用基类处理函数
}

3.停止监视剪贴板

void CClicpBoardSampleDlg::OnButtonCancelMonitor()	// 停止监视剪贴板
{
	if( ChangeClipboardChain(hNextWnd))				// 将对话框句柄从剪切板监视列表中移除
	{
		hNextWnd = NULL;							// 重置监视句柄
		WriteLog("结束监视剪切板复制的内容");		// 输出提示信息
	}
}


4.设置剪切板数据

// 21.9.3(OK)
void CClicpBoardSampleDlg::OnButtonSetClicp()		// 设置剪切板数据		
{
	LPSTR pBuf = NULL;								// 定义数据区
	if (!(pBuf = (LPSTR)GlobalAlloc(GMEM_DDESHARE, 50 * sizeof(TCHAR))))   return; // 初始化数据区
    if (!OpenClipboard())							// 打开剪切板
	{
		WriteLog("打开剪切板时发生错误");			// 输出错误信息,并
		return;										// 返回
	}
	EmptyClipboard();								// 清空剪切板
	CString info;
	info.Format("通过剪切板传递全局数据iIndex=%d", iIndex);	// 输出提示信息
	iIndex++;										// 计数值自增一
	strcpy(pBuf, info);
	if (SetClipboardData(CF_TEXT, pBuf))			// 设置剪切板内容
		WriteLog("设置剪切板内容=%s", info);	// 输出成功提示信息
	else
        WriteLog("设置剪切板内容是失败");		// 输出错误提示信息
	CloseClipboard();								// 关闭剪切板
}


5.获取剪切板数据

void CClicpBoardSampleDlg::OnButtonGetClicp()		// 获取剪切板数据
{
	LPSTR pBuf; 
    if (!OpenClipboard())							// 打开剪切板
	{
		WriteLog("打开剪切板时发生错误");			// 输出错误信息,并
		return;										// 返回
	}	
	HGLOBAL hGlobal = GetClipboardData(CF_TEXT);	// 获取剪切板中CF_TEXT数据
    pBuf = (LPSTR)GlobalLock(hGlobal);				// 锁定数据区
	WriteLog("获取剪切板内容=%s", pBuf);			// 输出获取的剪切板内容
	GlobalUnlock(hGlobal);							// 解锁数据区
	CloseClipboard();								// 关闭剪切板
}



最后

以上就是殷勤手链为你收集整理的系统相关功能开发(九)-剪贴板的全部内容,希望文章能够帮你解决系统相关功能开发(九)-剪贴板所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部