滹水散人 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条)

报告相同问题?

悬赏问题

  • ¥20 数据结构—复杂度分析
  • ¥15 如何使用单链表编写学生信息管理系统?
  • ¥15 完成课题以及ppt 在21号之前完成
  • ¥15 懂的来,你应该知道我在说什么,我需要你的帮助
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 maccms影视模板 制作影视网站失败 求
  • ¥15 stm32按键设置闹钟数进退位不正常
  • ¥15 自己写的测试驱动程序无法启动
  • ¥15 三电平逆变器中点电位平衡问题
  • ¥20 这怎么写啊 java课设