看到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中 用整个桌面位图填充全屏对话框背景