`
coding1688
  • 浏览: 236866 次
  • 来自: 上海
社区版块
存档分类
最新评论

VC/MFC怎样取得剪贴板上的图像并显示出来

 
阅读更多

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 图片文件。

 

 

2
0
分享到:
评论

相关推荐

    VC剪贴板查看器 查看剪贴板内容

    在主函数中,我们可以检查剪贴板是否已打开,并调用相关API获取和显示剪贴板上的数据。如果数据是文本,我们可以直接显示;如果是图像,可能需要先将其转换为适合显示的格式。 对于更复杂的剪贴板内容,例如富文本...

    1个高级的剪贴板程序VC.rar_VC 剪贴板_VC剪贴板_剪贴板

    总的来说,这个"高级的剪贴板程序VC"是一个使用C++和可能的MFC库编写的剪贴板工具,它扩展了系统默认的剪贴板功能,提供了更丰富的操作和管理剪贴板数据的能力。开发者通过`ddmgr.cpp`和`ddmgr.h`文件实现了剪贴板的...

    MFC截图软件,支持画图、保存bmp图片、剪贴板

    在本文中,我们将深入探讨如何使用Microsoft Foundation Class (MFC) 库开发一款截图软件,该软件具有画图、保存BMP图片以及与剪贴板交互的功能。MFC是Microsoft为Windows应用程序提供的一种C++类库,它简化了Win32 ...

    VC6/MFC 自动拷贝屏幕/ 截屏程序

    在Windows中,`OpenClipboard()`、`EmptyClipboard()`和`SetClipboardData()`函数用于控制剪贴板,其中`SetClipboardData()`可将位图对象设置为剪贴板上的数据。 7. **文件保存**:如果用户选择保存截图,程序需要...

    图像的复制剪切粘贴_Vc_

    首先,需要打开剪贴板并检查是否包含图像数据。然后,使用`GetClipboardData`函数获取数据,转换回`CImage`对象,最后在目标位置绘制。 - 如果剪贴板中是位图数据,可以使用`CreateCompatibleBitmap`, `...

    剪贴板VC源代码:simple_clipboard_src1

    通过分析`simple_clipboard_src1`这个示例,开发者可以学习到如何在VC或MFC环境中正确、高效地使用剪贴板,这对于开发需要数据交换的应用程序(如文本编辑器、图像处理软件等)非常有帮助。同时,这也是深入理解...

    VC6.0截图小程序(截图至剪切板)

    【VC6.0截图小程序(截图至剪切板)】是一个基于Microsoft Visual C++ 6.0开发的小型应用程序,其主要功能是实现屏幕截图并将其保存到剪贴板,以便用户可以方便地粘贴到其他软件如画图、Word等进行编辑或保存。...

    进程间通信之剪贴板

    3. **SetClipboardData**: 将指定格式的数据设置到剪贴板上。可以是文本、图像或其他格式,如CF_TEXT、CF_BITMAP等。此函数需要提供一个句柄,指向待设置的数据。 4. **GetClipboardData**: 读取剪贴板上的数据。...

    两种Matlab图像嵌入VC界面的实现方法

    具体来说,Matlab生成的图像数据可以通过剪贴板传递给VC++程序,后者再负责将图像数据显示出来。 **实现步骤:** 1. **Matlab端准备图像数据:** 在Matlab中生成所需的图像,并将其转换为适合传输的格式。 2. **使用...

    Copying a bitmap to clipboard拷贝一个位图到剪贴板(5KB)

    在Windows编程中,将位图复制到剪贴板是一项常见的任务,这通常涉及到图形处理类、控件以及资源的管理。下面将详细讲解这个过程及其相关的知识点。 首先,位图(Bitmap)是Windows图形设备接口(GDI)中的一种图像...

    VC++图像的复制剪切粘贴

    粘贴图像通常是将剪贴板中的位图数据应用到特定位置。Windows系统提供了剪贴板API,如`OpenClipboard`、`EmptyClipboard`、`SetClipboardData`和`CloseClipboard`等,用于管理剪贴板数据。对于图像,可以使用`CF_...

    mfc vc richedit 绘制ole 图片

    前者从剪贴板获取数据,后者从指定文件创建。 3. **在RichEdit中插入OLE图片** - 调用`COleClientItem::InsertInEditor`方法,将图片插入到RichEdit的特定位置。需要指定插入位置的字符位置。 4. **绘制OLE图片**...

    仿qq截屏代码(mfc vc)

    总的来说,仿QQ截屏代码的开发涉及到Windows API、MFC框架、GDI+图形库和剪贴板操作等多个方面的知识,需要对C++编程和Windows编程有深入的理解。通过这个项目,开发者不仅可以学习到图形用户界面的设计,还能掌握...

    剪切板 网页操作

    在IT行业中,剪切板操作是一项基础但至关重要的功能,特别是在网页交互和编程语言如C++及VC(Visual C++)的应用中。剪切板是操作系统提供的一种共享数据的机制,用户可以通过它来复制、剪切和粘贴信息。下面我们将...

    VC6.0截图小程序优化版(截图至剪切板)

    总结,"VC6.0截图小程序优化版(截图至剪切板)"是一个基于MFC库的实用工具,它演示了如何在Windows环境下利用C++实现屏幕截图并保存到剪贴板的功能。通过分析和理解其工作原理,开发者可以提升自己的Windows编程...

    剪贴板发送和接收数据的VC++实例

    在Windows编程中,剪贴板是一个共享内存区域,用于在应用程序之间传递文本、图像和其他类型的数据。本实例通过VC++展示了如何利用Windows API进行进程间通信(IPC)以实现剪贴板数据的发送和接收。这里我们将深入...

    VC 实现BMP图片剪切

    5. **位图创建与保存**:使用GDI(Graphics Device Interface)函数CreateDIBSection创建一个新的设备无关位图(DIB),并将剪切后的图像数据复制到新位图。最后,使用CFile对象的Write函数将新位图的数据写入到磁盘...

    Clipboard-Test-20200224.rar

    这个项目主要关注的是在VC(Visual C++)环境下,如何利用GDI(Graphics Device Interface)来操作剪贴板,特别是将BITMAP图像复制到另一个对话框中的Picture控件。 首先,我们需要了解VC++。VC++是Microsoft开发的...

    ClipboardToBmp

    这个项目的主要目标是从剪贴板获取Bitmap数据,将其在对话框上显示,并保存为BMP文件。这里我们将深入探讨涉及的技术和概念。 1. 剪贴板操作: - 在Windows API中,剪贴板功能通过`OpenClipboard`、`...

    vc源代码黏贴板查看器

    通过阅读和理解这些代码,你可以学习到如何注册消息,如何设置窗口类,以及如何处理消息并显示剪贴板内容。 具体来说,剪贴板查看器的工作流程大致如下: 1. 初始化:在应用程序启动时,注册剪贴板通知,通过...

Global site tag (gtag.js) - Google Analytics