QQ登录

只需一步,快速开始

实现放大镜功能--上位机VC

[ 复制链接 ]

实现放大镜功能--上位机VC

实现放大镜功能--上位机VC

实现放大镜功能--上位机VC
功能展示
Window系统带有一个放大镜小工具,非常有意思,当前例程也简单实现一个放大镜功能,效果如图;例程可通过<显示放大镜><隐藏放大镜>进放大镜窗口进行隐藏,用鼠标拖动放大镜窗口,可以移动放大镜;
要点提示
例程通过从CWnd派生一自定义窗口类CGlassWnd,实现放大镜功能;
类中函数XSaveScreen()起保存桌面图片信息功能。XOwnerDraw()函数起绘制放大效果功能;
通过定义一类的指针CGlassWnd *g_pGlassWnd;并初始化  g_pGlassWnd = new CGlassWnd;//创建

g_pGlassWnd->XCreate(); 就可以使用放大镜的窗口类进行放大显示
实现功能
1.新建基于对话框的应用程序
2.从CWnd派生一新类classCGlassWnd : public CWnd;添加自定义的成员变量及函数,构造函数中初始化变量,析构函数中释放变量,并实现函数体部分
private:
  int m_zoom;
  CDC *m_pMemDC;
  voidXOwnerDraw();
  voidXSaveScreen();
public:
  voidXCreate(LPCTSTR lpszWindowName = "GlassWnd");

3.添加鼠标点击函数,实现放大镜窗口的拖动
  1. void CGlassWnd::OnLButtonDown(UINT nFlags, CPoint point)
  2. {
  3.         PostMessage (WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x, point.y));//窗口可拖动
  4.         CWnd::OnLButtonDown(nFlags, point);
  5. }
复制代码
4.添加绘制函数,实现放大效果的绘制
  1. void CGlassWnd::OnPaint()
  2. {
  3.         CPaintDC dc(this);
  4.         XOwnerDraw();
  5. }
复制代码
5.添加窗口移动消息,实现窗口移动时,实时绘制放大效果
  1. void CGlassWnd::OnWindowPosChanged(WINDOWPOS FAR* lpwndpos)
  2. {
  3.         CWnd::OnWindowPosChanged(lpwndpos);
  4.         XOwnerDraw();        
  5. }
复制代码

6.再添加窗口激活消息函数,实现窗口激活时,刷新桌面图片信息
  1. void CGlassWnd::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)
  2. {
  3.         CWnd::OnActivate(nState, pWndOther, bMinimized);
  4.         if (WA_ACTIVE == nState)//窗口激活时刷新刷屏
  5.                 XSaveScreen();
  6. }
复制代码
7,其中XDC2MemDC() XCWnd2MemDC() XSaveCWnd()是自定义的全局函数,可参阅例程
8.最后就是这个派生类的使用,在主窗口中包含类的头文件,定义一全局变量CGlassWnd *g_pGlassWnd; 再初始化这个变量  g_pGlassWnd= new CGlassWnd;//创建
  g_pGlassWnd->XCreate();
  g_pGlassWnd->ShowWindow(SW_HIDE);  
程序退出时再进行删除,这样就可以添加两个按钮进行放大镜窗口的显示隐藏操作


我们来演示下功能实现的整个过程

请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:实现放大镜功能--上位机VC.txt 
文件大小:48 Bytes  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

如果您认可,可联系功能定制!

  

如果您着急,充值会员可直接联系发您资料!

  

QQ联系我

微信扫扫联系我

  

回复

使用道具 举报

快速回复 返回列表 客服中心 搜索