滹水散人 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 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵