WEB开发网
开发学院软件开发VC QQ 静态截图程序模拟实现 阅读

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函数,在函数中直接 更新窗口,消除拖动和改变大小时的虚线框可能还有更简单的方法,本人能力有限想不出更简的!

1 2 3 4  下一页

Tags:QQ 静态 截图

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接