VC++ 实现简单的桌面截图

  使用了EasyX图像库,使用方法请参考:VC++ 制作一个简易的控制台时钟应用

  简单的桌面截图代码:

//////////////////////////////////////////////////////////////////////////
// 程序名称:实现屏幕桌面的简单截图
// 编译环境:Visual Studio,EasyX_20151015(beta)
// 作    者:shuai.qiao@wellintech.com
// 创建日期:2016-11-24
// 项目类型:Win32 Application
//////////////////////////////////////////////////////////////////////////

// 头文件
#include <graphics.h>

// 函数声明
void DesktopCapture(IMAGE *pimg);

// 主函数
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    IMAGE img;                                            // 定义IMAGE对象
    DesktopCapture( &img );                               // 调用抓取桌面图像的函数
    initgraph(1440, 900);                                 // 创建绘图窗口(根据实际屏幕调整)
    putimage(0, 0, &img);                                 // 在窗口中显示 IMAGE 中保存的桌面图像

    while(!(GetAsyncKeyState(VK_ESCAPE) & 0x8000))        // 按ESC键退出
        Sleep(20);

    closegraph();
    return 0;
}

// 抓取桌面图像到 *pimg 对象中
void DesktopCapture(IMAGE *pimg)
{
    // 通过 Windows API 获取桌面的宽高
    int scale = 1;                                        // 缩放比例(1:全屏)
    int w = GetSystemMetrics(SM_CXSCREEN) / scale;
    int h = GetSystemMetrics(SM_CYSCREEN) / scale;

    Resize(pimg, w, h);    
    HDC srcDC = GetDC(NULL);                            // 获取桌面 DC
    HDC dstDC = GetImageHDC(pimg);                      // 获取 IMAGE 对象的 DC
    BitBlt(dstDC, 0, 0, w, h, srcDC, 0, 0, SRCCOPY);    // 在两个 DC 之间执行图像拷贝,将桌面抓图拷贝到 IMAGE 对象里面  
}

  运行效果:

原文地址:https://www.cnblogs.com/MakeView660/p/6102391.html