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

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条回答 默认 最新

  • maplegam 2015-11-25 23:59
    已采纳

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

    已采纳该答案
    打赏 评论
  • zuishikonghuan 2015-11-25 14:32

    应该保存到文件,然后用ShellExecute打开

    打赏 评论
  • 虛擬時間SOS 2015-11-26 03:14

    学习中......

    打赏 评论
  • YXTS122 2015-11-28 06:15

    给我学习学习,学习学习学习

    打赏 评论

相关推荐 更多相似问题