系统相关功能开发(九)-剪贴板

来源:互联网 发布:淘宝主图素材图片 编辑:程序博客网 时间:2024/06/05 07:45

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

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



阅读全文
0 0
原创粉丝点击