工控编程吧
标题:
上位机MFC实现剪贴板内容查看
[打印本页]
作者:
qq263946146
时间:
2019-9-23 10:54
标题:
上位机MFC实现剪贴板内容查看
(, 下载次数: 1)
上传
点击文件名下载附件
例程实现剪切板内容查看功能。
功能简单,有需要的朋友可以下载参考。
关键代码为:
void CClipBoardAccessDlg::OnObtain()
{
// TODO: Add your control notification handler code here
if (!::OpenClipboard(m_hWnd))
{
AfxMessageBox(_T("有其它程序打开了剪贴板!"));
return;
}
HGLOBAL hMem;
LPSTR lpStr;
UINT uFormat = ::EnumClipboardFormats(0);
// 处理剪贴板为空的情形
if (!uFormat)
{
AfxMessageBox(_T("剪贴板为空!"));
return;
}
// 以特定方式获得剪贴板数据
while (1)
{
hMem = ::GetClipboardData(uFormat);
lpStr = (LPSTR)::GlobalLock(hMem);
if (lpStr)
break;
uFormat = ::EnumClipboardFormats(uFormat);
}
// 获得剪贴板数据长度
SIZE_T size = ::GlobalSize(hMem);
CString strShow,strAdd;
UINT nLine;
SIZE_T counter;
for (counter = 0,nLine = 1;counter <= size;counter++,nLine++)
{
strAdd.Format("%02x ",(UCHAR)lpStr[counter]);
strShow += strAdd;
if (nLine % 8 == 0)
{
nLine %= 8;
strShow += "\r\n";
}
if (counter == 0x100)
{
AfxMessageBox(_T("剪贴板数据太多,这里只显示前256字节的内容"));
break;
}
}
// 解除对剪贴板句柄的锁定,关闭剪贴板供其它程序使用
::GlobalUnlock(hMem);
::CloseClipboard();
// 显示数据类型
switch (uFormat)
{
case CF_TEXT:
case CF_UNICODETEXT:
SetRadio(0);
break;
case CF_BITMAP:
case CF_DIB:
case CF_PALETTE:
case CF_TIFF:
SetRadio(1);
break;
case CF_ENHMETAFILE:
case CF_WAVE:
case CF_RIFF:
SetRadio(2);
break;
default:
SetRadio(3);
break;
}
// 将数据显示到编辑控件中
SetDlgItemText(IDC_EDIT_SHOW,strShow);
// 显示剪贴板数据长度
strAdd.Format("剪贴板中数据共%o字节",(LONGLONG)size);
SetDlgItemText(IDC_EDIT_LENGTH,strAdd);
}
复制代码
源代码下载地址:
(, 下载次数: 0)
上传
点击文件名下载附件
[MFC408]1[/MFC408]
[halcon]1[/halcon]
[weixinlianxi]1[/weixinlianxi]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4