VC/MFC怎样取得剪贴板上的图像并显示出来
准备做个操作剪贴板的桌面辅助工具,今晚先完成第一步工作,如题。
直接贴代码,代码在 VC6 中通过。
// 下面的代码部分的参考了下面的网址
// http://hi.baidu.com/pivotman/blog/item/b7ce681bdc0e74c6a6866933.html
if (OpenClipboard())
{
// Get the clipboard data
HBITMAP handle = (HBITMAP) GetClipboardData(CF_BITMAP);
if (handle != NULL)
{
CBitmap* cbm = CBitmap::FromHandle(handle);
if (cbm != NULL)
{
// 注意:GetBitmapDimension函数不能得到图象的宽度和高度
// 这个函数名太具有迷惑性了
//CSize sz = bm->GetBitmapDimension();
// sz.cx == 0, sz.cy == 0
// 下面的两个网址提供了取得CBitmap的宽度和高度的方法
// http://dreammengjian.blog.hexun.com/4095740_d.html
// http://support.microsoft.com/kb/88555/zh-tw
BITMAP bm;
cbm->GetObject(sizeof(BITMAP), &bm);
CSize sz(bm.bmWidth, bm.bmHeight);
// for debug
//char tmpbuf[256];
//sprintf(tmpbuf, "cx=%d cy=%d\n", sz.cx, sz.cy);
//MessageBox(tmpbuf);
// 下面的代码将剪贴板上的图象显示在窗口上
CClientDC cdc(this);
CDC dc;
dc.CreateCompatibleDC(&cdc);
dc.SelectObject(cbm);
//cdc.BitBlt(0,0,200,200,&dc,0,0,SRCCOPY);
cdc.BitBlt(0, 0, sz.cx, sz.cy, &dc, 0, 0, SRCCOPY);
}
else
{
MessageBox("CBitmap::FromHandle failed");
}
}
else
{
MessageBox("GetClipboardData CF_BITMAP failed");
}
CloseClipboard();
}
else
{
MessageBox("OpenClipboard failed");
}
下一阶段的尝试:将 CBitmap/BITMAP 保存成为 jpg 或 gif 图片文件。
分享到:
相关推荐
在主函数中,我们可以检查剪贴板是否已打开,并调用相关API获取和显示剪贴板上的数据。如果数据是文本,我们可以直接显示;如果是图像,可能需要先将其转换为适合显示的格式。 对于更复杂的剪贴板内容,例如富文本...
总的来说,这个"高级的剪贴板程序VC"是一个使用C++和可能的MFC库编写的剪贴板工具,它扩展了系统默认的剪贴板功能,提供了更丰富的操作和管理剪贴板数据的能力。开发者通过`ddmgr.cpp`和`ddmgr.h`文件实现了剪贴板的...
在本文中,我们将深入探讨如何使用Microsoft Foundation Class (MFC) 库开发一款截图软件,该软件具有画图、保存BMP图片以及与剪贴板交互的功能。MFC是Microsoft为Windows应用程序提供的一种C++类库,它简化了Win32 ...
在Windows中,`OpenClipboard()`、`EmptyClipboard()`和`SetClipboardData()`函数用于控制剪贴板,其中`SetClipboardData()`可将位图对象设置为剪贴板上的数据。 7. **文件保存**:如果用户选择保存截图,程序需要...
首先,需要打开剪贴板并检查是否包含图像数据。然后,使用`GetClipboardData`函数获取数据,转换回`CImage`对象,最后在目标位置绘制。 - 如果剪贴板中是位图数据,可以使用`CreateCompatibleBitmap`, `...
通过分析`simple_clipboard_src1`这个示例,开发者可以学习到如何在VC或MFC环境中正确、高效地使用剪贴板,这对于开发需要数据交换的应用程序(如文本编辑器、图像处理软件等)非常有帮助。同时,这也是深入理解...
【VC6.0截图小程序(截图至剪切板)】是一个基于Microsoft Visual C++ 6.0开发的小型应用程序,其主要功能是实现屏幕截图并将其保存到剪贴板,以便用户可以方便地粘贴到其他软件如画图、Word等进行编辑或保存。...
3. **SetClipboardData**: 将指定格式的数据设置到剪贴板上。可以是文本、图像或其他格式,如CF_TEXT、CF_BITMAP等。此函数需要提供一个句柄,指向待设置的数据。 4. **GetClipboardData**: 读取剪贴板上的数据。...
具体来说,Matlab生成的图像数据可以通过剪贴板传递给VC++程序,后者再负责将图像数据显示出来。 **实现步骤:** 1. **Matlab端准备图像数据:** 在Matlab中生成所需的图像,并将其转换为适合传输的格式。 2. **使用...
在Windows编程中,将位图复制到剪贴板是一项常见的任务,这通常涉及到图形处理类、控件以及资源的管理。下面将详细讲解这个过程及其相关的知识点。 首先,位图(Bitmap)是Windows图形设备接口(GDI)中的一种图像...
粘贴图像通常是将剪贴板中的位图数据应用到特定位置。Windows系统提供了剪贴板API,如`OpenClipboard`、`EmptyClipboard`、`SetClipboardData`和`CloseClipboard`等,用于管理剪贴板数据。对于图像,可以使用`CF_...
前者从剪贴板获取数据,后者从指定文件创建。 3. **在RichEdit中插入OLE图片** - 调用`COleClientItem::InsertInEditor`方法,将图片插入到RichEdit的特定位置。需要指定插入位置的字符位置。 4. **绘制OLE图片**...
总的来说,仿QQ截屏代码的开发涉及到Windows API、MFC框架、GDI+图形库和剪贴板操作等多个方面的知识,需要对C++编程和Windows编程有深入的理解。通过这个项目,开发者不仅可以学习到图形用户界面的设计,还能掌握...
在IT行业中,剪切板操作是一项基础但至关重要的功能,特别是在网页交互和编程语言如C++及VC(Visual C++)的应用中。剪切板是操作系统提供的一种共享数据的机制,用户可以通过它来复制、剪切和粘贴信息。下面我们将...
总结,"VC6.0截图小程序优化版(截图至剪切板)"是一个基于MFC库的实用工具,它演示了如何在Windows环境下利用C++实现屏幕截图并保存到剪贴板的功能。通过分析和理解其工作原理,开发者可以提升自己的Windows编程...
在Windows编程中,剪贴板是一个共享内存区域,用于在应用程序之间传递文本、图像和其他类型的数据。本实例通过VC++展示了如何利用Windows API进行进程间通信(IPC)以实现剪贴板数据的发送和接收。这里我们将深入...
5. **位图创建与保存**:使用GDI(Graphics Device Interface)函数CreateDIBSection创建一个新的设备无关位图(DIB),并将剪切后的图像数据复制到新位图。最后,使用CFile对象的Write函数将新位图的数据写入到磁盘...
这个项目主要关注的是在VC(Visual C++)环境下,如何利用GDI(Graphics Device Interface)来操作剪贴板,特别是将BITMAP图像复制到另一个对话框中的Picture控件。 首先,我们需要了解VC++。VC++是Microsoft开发的...
这个项目的主要目标是从剪贴板获取Bitmap数据,将其在对话框上显示,并保存为BMP文件。这里我们将深入探讨涉及的技术和概念。 1. 剪贴板操作: - 在Windows API中,剪贴板功能通过`OpenClipboard`、`...
通过阅读和理解这些代码,你可以学习到如何注册消息,如何设置窗口类,以及如何处理消息并显示剪贴板内容。 具体来说,剪贴板查看器的工作流程大致如下: 1. 初始化:在应用程序启动时,注册剪贴板通知,通过...