資源簡介
改代碼實現了截圖功能,任選桌面區域保存或復制到剪切板。
代碼片段和文件信息
//?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\li
?????文件??????????2??2019-01-14?09:44??截圖\截圖\src\ScreenShotTool\Release\li
?????文件???????2606??2019-01-14?09:44??截圖\截圖\src\ScreenShotTool\Release\li
............此處省略87個文件信息
- 上一篇:用MFC寫的部門換屆投票程序
- 下一篇:c++ primer 第五版 英文版 pdf
評論
共有 條評論