首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MFC C++屏幕快照

MFC C++屏幕快照
EN

Stack Overflow用户
提问于 2012-08-07 08:21:22
回答 2查看 2.7K关注 0票数 0

我有一个使用CDC绘制网格的应用程序(它有文本、矩形和位图)。我想在保存完成的网格时截取它的屏幕截图,并使用该屏幕截图作为文件的“预览”。

如何截取应用程序的屏幕截图并保存它?

谢谢,

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-08 08:00:20

最终,我这样做是因为我想捕捉窗口的隐藏部分(因为内容超出了屏幕,需要滚动):

代码语言:javascript
运行
复制
CDC* WindowToCaptureDC = AfxGetMainWnd()->GetWindowDC();
CDC CaptureDC;
CDC MemDC;
MemDC.CreateCompatibleDC(WindowToCaptureDC);
CaptureDC.CreateCompatibleDC(WindowToCaptureDC);

CBitmap CaptureBmp;
CBitmap ResizeBmp;
int pWidth = grid.tableWidth + grid.marginLeft*2;
int pHeight = grid.tableHeight + grid.marginBottom; 

CaptureBmp.CreateCompatibleBitmap( WindowToCaptureDC, pWidth, pHeight);
CaptureDC.SelectObject(&CaptureBmp);

CBrush brush(RGB(255, 255, 255));
CaptureDC.SelectObject(&brush);
CaptureDC.Rectangle(0, 0, pWidth, pHeight);

/像我在此处对OnDraw所做的那样,将项目绘制到CaptureDC中/

代码语言:javascript
运行
复制
double width = //desired width;
double height = //desired width;

    //maintain aspect ratio
if(pWidth!=width || pHeight!=height)
{
    double w = width/pWidth;
    double h = height/pHeight;
    if(w < h)
        height = height*w;
    else
        width = width*h;
}

ResizeBmp.CreateCompatibleBitmap(WindowToCaptureDC, width, height);
MemDC.SelectObject(&ResizeBmp);

MemDC.StretchBlt(0, 0, width, height, &CaptureDC, 0, 0, pWidth, pHeight, SRCCOPY);

CImage TempImageObj;
TempImageObj.Attach((HBITMAP)ResizeBmp.Detach());
CString filePath = _T("LOCATION\\image.bmp");
TempImageObj.Save(filePath);
票数 0
EN

Stack Overflow用户

发布于 2012-08-07 08:31:02

回答is here

代码语言:javascript
运行
复制
void CScreenShotDlg::OnPaint()
{
    // device context for painting
    CPaintDC dc(this);

    // Get the window handle of calculator application.
    HWND hWnd = ::FindWindow( 0, _T( "Calculator" ));

    // Take screenshot.
    PrintWindow( hWnd,
                 dc.GetSafeHdc(),
                 0 );
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11837726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档