滹水散人 2015-11-25 12:19 采纳率: 66.7%
浏览 2078
已采纳

MFC做一个截屏程序,保存到剪切板后怎么打开这个图

我在做一个MFC截图,不知道代码是否有错,估计没错,现在的疑问是如果代码没错的话,截完图保存到剪切板了,然后到哪里打开这个图
void C截图Dlg::GetScreenCapture()
{
//桌面窗口的设备上下文DC//画布
HDC hDesktopDC = ::CreateDC(_T("DISPLAY"),NULL,NULL,NULL); //加::指出是API函数调用,不是成员函数调用
HDC hMemDC = ::CreateCompatibleDC(hDesktopDC);

//创建一个空白位图
HBITMAP hBmp,hOldBmp;
int iWidth = abs(m_tEndpt.x-m_tBeginPt.x);
int iHeight = abs(m_tEndpt.y-m_tBeginPt.y);
hBmp = ::CreateCompatibleBitmap(hDesktopDC,iWidth,iHeight);
//把位图放到内存DC
hOldBmp = (HBITMAP)::SelectObject(hMemDC,hBmp);
//把截图区域拷贝到内存DC
POINT pt =m_tBeginPt;
ClientToScreen(&pt);//把窗口客户区的相对坐标点转化为桌面屏幕坐标点
//把选定的桌面区域拷贝到内存DC
::BitBlt(hMemDC,0,0,iWidth,iHeight,hDesktopDC,pt.x,pt.y,SRCCOPY);
//把旧的设备位图设置回去
hBmp = (HBITMAP)SelectObject(hMemDC,hBmp);
//释放
DeleteDC(hMemDC);
DeleteDC(hDesktopDC);

//把位图保存到剪切板
if(OpenClipboard())//打开剪切板
{

    EmptyClipboard();//清空剪切板
    SetClipboardData(CF_BITMAP,hBmp);
    CloseClipboard();
    MessageBox(L"fsg");
}

DeleteObject(hBmp);
DeleteObject(hMemDC);
DeleteObject(hDesktopDC);

}

  • 写回答

4条回答 默认 最新

  • CRUD程序牛马 2015-11-25 23:59
    关注

    如果已经保存到了剪贴板,可以先粘贴到画图或者word中,然后再看吗图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)