实现放大镜功能--上位机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.添加鼠标点击函数,实现放大镜窗口的拖动 - void CGlassWnd::OnLButtonDown(UINT nFlags, CPoint point)
- {
- PostMessage (WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x, point.y));//窗口可拖动
- CWnd::OnLButtonDown(nFlags, point);
- }
复制代码4.添加绘制函数,实现放大效果的绘制 - void CGlassWnd::OnPaint()
- {
- CPaintDC dc(this);
- XOwnerDraw();
- }
复制代码5.添加窗口移动消息,实现窗口移动时,实时绘制放大效果 - void CGlassWnd::OnWindowPosChanged(WINDOWPOS FAR* lpwndpos)
- {
- CWnd::OnWindowPosChanged(lpwndpos);
- XOwnerDraw();
- }
复制代码
6.再添加窗口激活消息函数,实现窗口激活时,刷新桌面图片信息 - void CGlassWnd::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)
- {
- CWnd::OnActivate(nState, pWndOther, bMinimized);
- if (WA_ACTIVE == nState)//窗口激活时刷新刷屏
- XSaveScreen();
- }
复制代码7,其中XDC2MemDC() XCWnd2MemDC() XSaveCWnd()是自定义的全局函数,可参阅例程 8.最后就是这个派生类的使用,在主窗口中包含类的头文件,定义一全局变量CGlassWnd *g_pGlassWnd; 再初始化这个变量 g_pGlassWnd= new CGlassWnd;//创建 g_pGlassWnd->XCreate(); g_pGlassWnd->ShowWindow(SW_HIDE); 程序退出时再进行删除,这样就可以添加两个按钮进行放大镜窗口的显示隐藏操作
我们来演示下功能实现的整个过程
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|