QQ 静态截图程序模拟实现
2007-03-17 22:01:09 来源:WEB开发网核心提示:本文示例源代码或素材下载 看到QQ这样的截图实在忍心不住想,是怎以实现的?想了许久想到一个实现法子,QQ 静态截图程序模拟实现,下面就让我给大家展示一下,模拟QQ静态模拟截图,我写的代码比较乱,在CCatchScreenDlg构造函数中 初始化像皮筋类和保存全屏位图,//初始化像皮筋类m_rectTracker
本文示例源代码或素材下载
看到QQ这样的截图实在忍心不住想,是怎以实现的?想了许久想到一个实现法子,下面就让我给大家展示一下,模拟QQ静态模拟截图,我写的代码比较乱,是想到哪写到哪,我想肯实还有比这更简单的办法!!程序实现思路,程序是基于对话框,无标题栏,系统菜单,最小化框,最大化框,无边框....,程序初始化时,把整个桌面屏幕截图,保存下来,然后把对话框设置全屏顶层窗口,然后把保存下来的位图,在OnEraseBkgnd中把整个位图贴到对话框上,然后用像皮筋类选择截取范围,看起来就像操作屏幕一样 。
图一 示例
下面说说实现细节:
一、初始化程序,在CCatchScreenDlg构造函数中 初始化像皮筋类和保存全屏位图,
//初始化像皮筋类
m_rectTracker.m_nStyle=CRectTracker::resizeInside|CRectTracker::solidLine;
m_rectTracker.m_rect.SetRect(-1,-1,-1,-1);
m_hCursor=AfxGetApp()->LoadCursor(IDC_CURSOR1);
m_bDraw=FALSE;
m_bFirstDraw=FALSE;
m_bQuit=FALSE;
m_bShowMsg=FALSE;
m_startPt=0;
//获取屏幕分辩率
m_xScreen = GetSystemMetrics(SM_CXSCREEN);
m_yScreen = GetSystemMetrics(SM_CYSCREEN);
//截取屏幕到位图中
CRect rect(0, 0,m_xScreen,m_yScreen);
m_pBitmap=CBitmap::FromHandle(CopyScreenToBitmap(&rect));
//一定要初始化m_rgn,
m_rgn.CreateRectRgn(0,0,50,50);
然后在CCatchScreenDlg::OnInitDialog()中设置对话框成顶层窗口。在 CCatchScreenDlg::OnEraseBkgnd中 用整个桌面位图填充全屏对话框背景二、从 CRectTracker中派生了一个CTrack 类在类中重载了DrawTrackerRect函数,在函数中直接 更新窗口,消除拖动和改变大小时的虚线框可能还有更简单的方法,本人能力有限想不出更简的!
更多精彩
赞助商链接