| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3588 人关注过本帖
标题:自己实现了悬浮窗口
只看楼主 加入收藏
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
结帖率:98.26%
收藏
已结贴  问题点数:100 回复次数:27 
自己实现了悬浮窗口
图片附件: 游客没有浏览图片的权限,请 登录注册

最近在做一个项目,需要用到悬浮窗口,网上查找了关于悬浮窗口知识,发现可以使用CDockablePane,又看了一下这个类的一些使用方法,觉得太麻烦了,于是就自己使用对话框实现了悬浮窗口的功能,我实现的是当鼠标离开窗口时窗口变为一个小图标,当鼠标移动到小图标内窗口又变大,主要处理了WM_MOUSEMOVE和WM_MOUSELEAVE这两个消息,还是比较简单,目前这个类封装的还不是很好,所以等封装好后,专门写一篇文章,分享一下!

热爱windows编程的朋友们可加QQ群:234174291

[ 本帖最后由 我菜119 于 2012-12-9 01:14 编辑 ]
搜索更多相关主题的帖子: 知识 文章 对话框 封装 
2012-12-09 01:12
w527705090
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:441
专家分:1882
注 册:2011-6-28
收藏
得分:5 
前排祝贺~~~

有心者,千方百计;无心者,千难万难。
2012-12-09 01:17
w527705090
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:441
专家分:1882
注 册:2011-6-28
收藏
得分:0 
问下,楼主这个是用C做的,不觉得麻烦吗?感觉用java会简单的多

有心者,千方百计;无心者,千难万难。
2012-12-09 01:18
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:30 
有没有考虑过事件冒泡的可能?如果这个控件被封装在某个控件内部,消息给谁处理?同样,陷阱也有可能的,即这个控件内部有别的控件,你拦截了内部的消息,未必合适。这么一个窗体,你不在里面放点什么基本是不可能的。这么一串消息传递的机制,需要考虑哦。

给你加色吧。

授人以渔,不授人以鱼。
2012-12-09 01:21
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
回复 3楼 w527705090
C?开玩笑嘛!MFC的!至于麻烦还算可以吧!

愿用余生致力编程
2012-12-09 01:21
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
回复 4楼 TonyDeng
至于消息可以在这个控件内部自行处理,与外部有何干扰呢?这个控件就是一个对话框!

我现在要考虑的是这个对话框上的一些子控件如何与外部进行数据交换呢!可以提供对外数据处理接口!

愿用余生致力编程
2012-12-09 01:28
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你要在这个对话框中放置一个按钮,鼠标怎么移进去?不是要先经过对话框吗?它没到按钮就已经被拦截了,按钮的内部还能处理什么。当你需要内部的子控件处理事情,就会遇到消息传递的过滤和筛选问题。就算你弹出了窗体之后,不允许鼠标离开,再处理里面的子控件,这种方式也是很野蛮的,鼠标一滑,窗体就收走了,自己用用看有什么感受。

[ 本帖最后由 TonyDeng 于 2012-12-9 01:34 编辑 ]

授人以渔,不授人以鱼。
2012-12-09 01:32
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
回复 7楼 TonyDeng
哈哈!兄台啊,你给我整无语了啊!只有窗口变大时才能进行鼠标点击等操作,这个时候鼠标位于窗口大小的范围之内,一切操作都是正常的!而鼠标离开窗口时,窗口变小,成为了一个小图标,这个时候你还想进行何操作呢?

愿用余生致力编程
2012-12-09 01:38
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
举个例子吧,你点击那个check之后,如果偶然鼠标滑开了,要回头点button,不是要回头把窗体再弹出来?是不是多了操作步骤?如果里面是文本框,要填写什么东西,用户要到别处黏贴,你这种操作方式,你自己觉得很满意?当然,这些话我也只是说说而已,完全可以不听的,没事弄点效果玩玩也是不错的娱乐。

授人以渔,不授人以鱼。
2012-12-09 01:43
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
To TonyDeng:

今天最开始封装实现时,只是处理了WM_MOUSEMOVE消息,在这个消息的内部使用了SetCapture函数,让所有鼠标消息都发往这个对话框,只有鼠标不在窗口范围内时才去ReleaseCapture,这种处理情况发现对于对话框上的控件而言,无法接受到鼠标消息,即不能进行点击等操作,后来将SetCapture这种处理方式去掉,添加WM_MOUSELEAVE消息,在这个消息内部判断鼠标是否在窗口范围之内,此种方法避免了子控件无法接受到鼠标消息的情况!

愿用余生致力编程
2012-12-09 01:43
快速回复:自己实现了悬浮窗口
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019673 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved