工控编程吧
标题:
实现放大镜功能--上位机VC
[打印本页]
作者:
qq263946146
时间:
2016-12-1 20:00
标题:
实现放大镜功能--上位机VC
(, 下载次数: 0)
上传
点击文件名下载附件
实现放大镜功能--上位机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);
程序退出时再进行删除,这样就可以添加两个按钮进行放大镜窗口的显示隐藏操作
我们来演示下功能实现的整个过程
[iqiyi]http://player.video.qiyi.com/b1e37f2bea01c3b54ed1cd9f18fae7be/0/0/w_19ruj9ct6t.swf-albumId=6859453609-tvId=6859453609-isPurchase=0-cnId=27[/iqiyi]
(, 下载次数: 0)
上传
点击文件名下载附件
[weixinlianxi]1[/weixinlianxi]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4