• 大小: 43.15MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-07-05
  • 语言: C/C++
  • 标签: 截图  C++  

资源简介

改代码实现了截图功能,任选桌面区域保存或复制到剪切板。

资源截图

代码片段和文件信息

// CMAgnifyDlg.cpp : 实现文件
//

#include “stdafx.h“
#include “ScreenShotTool.h“
#include “CMAgnifyDlg.h“


// CCMAgnifyDlg 对话框

IMPLEMENT_DYNAMIC(CCMagnifyDlg CDialog)

CCMagnifyDlg::CCMagnifyDlg(CWnd* pParent /*=NULL*/)
: CDialog(CCMagnifyDlg::IDD pParent)
{
    m_nDestWidth  = 0; 
    m_nDestHeight = 0;
}

CCMagnifyDlg::~CCMagnifyDlg()
{
}

void CCMagnifyDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}


BEGIN_MESSAGE_MAP(CCMagnifyDlg CDialog)
    ON_WM_CLOSE()
    ON_WM_ERASEBKGND()
    ON_WM_PAINT()
    ON_WM_MOUSEMOVE()
END_MESSAGE_MAP()


// CCMAgnifyDlg 消息处理程序

BOOL CCMagnifyDlg::OnInitDialog()
{
    CDialog::OnInitDialog();

    // TODO:  在此添加额外的初始化
    InitScreen();

    return TRUE;  // return TRUE unless you set the focus to a control
    // 异常: OCX 属性页应返回 FALSE
}

void CCMagnifyDlg::OnClose()
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    PostQuitMessage(0);

    CDialog::OnClose();
}

BOOL CCMagnifyDlg::OnEraseBkgnd(CDC* pDC)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    return CDialog::OnEraseBkgnd(pDC);
}

BOOL CCMagnifyDlg::PreTranslateMessage(MSG* pMsg)
{
    // 【这里截获esc消息,退出】
    if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_ESCAPE)
    {
        PostQuitMessage(0);
    }

    return CDialog::PreTranslateMessage(pMsg);
}

void CCMagnifyDlg::OnPaint()
{
    CPaintDC dc(this);
    DrawMagnify(dc);
}

//************************************
// Method:    初始化屏幕
// Author:    WangJie
// DateTime:  [7/20/2016]
//************************************
void CCMagnifyDlg::InitScreen()
{
    m_nDestWidth  = GetSystemMetrics(SM_CXSCREEN);  // 【计算的屏幕宽度】
    m_nDestHeight = GetSystemMetrics(SM_CYSCREEN);  // 【计算的屏幕高度】

    CWindowDC dc(GetDesktopWindow());               // 【以当前的桌面窗体创建一个DC】

    m_DeskTopDC.CreateCompatibleDC(&dc);                   // 【创建一个兼容桌面窗体的dc并关联bitmap】
    m_bmpDestTop.CreateCompatibleBitmap(&dc m_nDestWidth m_nDestHeight);
    m_DeskTopDC.Selectobject(m_bmpDestTop);         // 【将位图选到内存DC】

    // 【按原来背景填充客户区,不然会是黑色】
    m_DeskTopDC.BitBlt(0 0 m_nDestWidth m_nDestHeight &dc 0 0 SRCCOPY);    // 【将窗口DC内容传到应用程序中的dc支持图形块的复制,速度很快】

    SetWindowLong(GetSafeHwnd()GWL_EXstyleGetWindowLong(GetSafeHwnd()GWL_EXstyle)|WS_EX_layerED);
    SetlayeredWindowAttributes(0255LWA_ALPHA);
}

//************************************
// Method:    画放大镜
// Author:    WangJie
// DateTime:  [7/20/2016]
//************************************
void CCMagnifyDlg::DrawMagnify(CDC& dc)
{
    dc.BitBlt(00m_nDestWidthm_nDestHeight&m_DeskTopDC00SRCCOPY);

    CPoint point;

    GetCursorPos(&point);

    this->GetWindowRect(m_rect);

    ClientToScreen(&m_rect);

    //放大绘制
    dc.StretchBlt(  0 0                // 【目标区的起始坐标】
                    m_rect.Width()      // 【目标区的长宽】
                    m_rect.Height()     // 【目标区的长宽】
                    &m_DeskTopDC        // 【桌面源dc】
     

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        541  2016-07-20 20:03  截图\截图\bin\ReadMe.txt

     文件     204800  2016-07-20 20:34  截图\截图\bin\ScreenShotTool.exe

     文件      15933  2016-07-20 19:38  截图\截图\doc\AlphaBlend透明.docx

     文件      27776  2016-07-20 09:28  截图\截图\doc\MFC模态对话框和非模态对话框.docx

     文件      15747  2016-07-20 19:40  截图\截图\doc\StretchBlt拉伸压缩位图拷贝.docx

     文件       3981  2016-07-20 19:12  截图\截图\doc\画图.txt

     文件      14222  2016-07-20 19:13  截图\截图\doc\获取桌面所有窗口.docx

     文件        470  2016-07-20 19:12  截图\截图\doc\获取窗口句柄.txt

     文件        908  2016-07-11 09:11  截图\截图\src\Backup\ScreenShotTool.sln

    ..A..H.     18944  2016-07-22 10:31  截图\截图\src\Backup\ScreenShotTool.v12.suo

     文件  109576192  2019-01-14 16:35  截图\截图\src\ipch\screenshottool-84a86094\screenshottool-61ee7be2.ipch

     文件     197632  2019-01-14 09:44  截图\截图\src\Release\ScreenShotTool.exe

     文件    5565440  2019-01-14 09:44  截图\截图\src\Release\ScreenShotTool.pdb

     文件       4610  2016-07-20 18:02  截图\截图\src\ScreenShotTool\CMagnifyDlg.cpp

     文件       1095  2016-07-20 18:54  截图\截图\src\ScreenShotTool\CMagnifyDlg.h

     文件       1412  2019-01-14 14:27  截图\截图\src\ScreenShotTool\CRectTrackerEx.cpp

     文件        240  2019-01-14 10:57  截图\截图\src\ScreenShotTool\CRectTrackerEx.h

     文件       2510  2016-07-20 17:45  截图\截图\src\ScreenShotTool\define.h

     文件       4689  2019-01-14 11:33  截图\截图\src\ScreenShotTool\EnumAllWindowsRect.cpp

     文件        759  2019-01-14 11:29  截图\截图\src\ScreenShotTool\EnumAllWindowsRect.h

     文件       2995  2016-06-27 11:52  截图\截图\src\ScreenShotTool\ReadMe.txt

     文件       5230  2019-01-14 09:36  截图\截图\src\ScreenShotTool\Release\cl.command.1.tlog

     文件      80364  2019-01-14 09:36  截图\截图\src\ScreenShotTool\Release\CL.read.1.tlog

     文件       3748  2019-01-14 09:36  截图\截图\src\ScreenShotTool\Release\CL.write.1.tlog

     文件      63543  2019-01-14 09:36  截图\截图\src\ScreenShotTool\Release\CMagnifyDlg.obj

     文件      15614  2019-01-14 09:36  截图\截图\src\ScreenShotTool\Release\CRectTrackerEx.obj

     文件     133051  2019-01-14 09:36  截图\截图\src\ScreenShotTool\Release\EnumAllWindowsRect.obj

     文件          2  2019-01-14 09:44  截图\截图\src\ScreenShotTool\Release\link-cvtres.read.1.tlog

     文件          2  2019-01-14 09:44  截图\截图\src\ScreenShotTool\Release\link-cvtres.write.1.tlog

     文件       2606  2019-01-14 09:44  截图\截图\src\ScreenShotTool\Release\link.command.1.tlog

............此处省略87个文件信息

评论

共有 条评论