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

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值