社区
嵌入开发(WinCE)
帖子详情
Overlay表面上的按钮怎么更新状态?InvalidateRect还是重新画过?我的怎么不行呢?
xqhrs232
2012-06-19 09:42:33
Overlay表面上的按钮怎么更新状态?InvalidateRect还是重新画过?我的怎么不行呢?
...全文
278
12
打赏
收藏
Overlay表面上的按钮怎么更新状态?InvalidateRect还是重新画过?我的怎么不行呢?
Overlay表面上的按钮怎么更新状态?InvalidateRect还是重新画过?我的怎么不行呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xqhrs232
2012-06-21
打赏
举报
回复
(但亲自做实验不是这样的结果----PC上的WIN32程序先产生WM_ERASEBKGND消息,并且产生2次,WINCE上的WIN32程序才是先产生WM_PAINT消息,WM_ERASEBKGND消息也只产生1次,怎么会有这样的区别,还真是困惑了,PC跟WINCE在这个上有这样的区别?不可能吧!?但运行跑起来后用InvalidateRect函数来做实验整个逻辑又是WM_PAINT消息先产生,WM_ERASEBKGND消息后产生,WM_ERASEBKGND消息先被响应执行完,PC环境下对消息的捕捉不准,因为还有其它程序/系统运行的存在,比如程序最后响应的是WM_ERASEBKGND消息,但程序并没有显示WM_ERASEBKGND消息中的背景,而是WM_PAINT消息中的背景)
xqhrs232
2012-06-21
打赏
举报
回复
(但亲自做实验不是这样的结果----PC上的WIN32程序先产生WM_ERASEBKGND消息,并且产生2次,WINCE上的WIN32程序才是先产生WM_PAINT消息,WM_ERASEBKGND消息也只产生1次,怎么会有这样的区别,还真是困惑了,PC跟WINCE在这个上有这样的区别?不可能吧!?但运行跑起来后用InvalidateRect函数来做实验整个逻辑又是WM_PAINT消息先产生,WM_ERASEBKGND消息后产生,WM_ERASEBKGND消息先被响应执行完,PC环境下对消息的捕捉不准,因为还有其它程序/系统运行的存在,比如程序最后响应的是WM_ERASEBKGND消息,但程序并没有显示WM_ERASEBKGND消息中的背景,而是WM_PAINT消息中的背景)
91program
2012-06-20
打赏
举报
回复
[Quote=引用 8 楼 的回复:]
MTK3360+WINCE6。0
可能我的程序逻辑存在问题。
[/Quote]
MTK 的平台我没有用过,看其他人的回复吧。
xqhrs232
2012-06-20
打赏
举报
回复
MTK3360+WINCE6。0
可能我的程序逻辑存在问题。
91program
2012-06-20
打赏
举报
回复
[Quote=引用 6 楼 的回复:]
动不动整个OVERLAY就显示不出来(显示与隐藏来回切换几次),好怪!难道真的是我平台上的OVERLAY驱动有问题?!
[/Quote]
你是啥平台?
xqhrs232
2012-06-20
打赏
举报
回复
还是程序的问题,每次都是直接去获取surface表面的DC然后就直接把IIMAGE接口的PNG图片DRAW过去,应该是没对surface表面的DC进行清零或者初始化操作。(surface表面的DC也就是一片内存,直接DRAW新的图片过去老的图片还是存在的,所以没有把按钮的对应状态显示出来)
好的解决方法是用用双缓冲技术,在后台把背景及按钮图片一个个bitblt好,然后贴到surface表面的DC上然后再调UpdateOverlay去重新显示就可以了。
下一步就看看为什么会闪烁了,还有时候OVERLAY表面消失显示不出来。可能还是程序逻辑的问题!!!
91program
2012-06-19
打赏
举报
回复
好像没有什么特殊的逻辑,只有获取 overlay 的 DC 后,操作与普通 DC 是一样的。
xqhrs232
2012-06-19
打赏
举报
回复
对主表面加AddOverlayDirtyRect不行,对OVERLAY表面加AddOverlayDirtyRect也不行。
不知道OVERLAY表面的更新应该是个怎么的逻辑。只能重绘,还是InvalidateRect?如果InvalidateRect这个对应的区域应该是那个呢?是针对主表面上还是OVERLAY表面上?
xqhrs232
2012-06-19
打赏
举报
回复
动不动整个OVERLAY就显示不出来(显示与隐藏来回切换几次),好怪!难道真的是我平台上的OVERLAY驱动有问题?!
xqhrs232
2012-06-19
打赏
举报
回复
原来是按钮的距形区域算错了,一直没点在按钮的区域内,导致按钮的标志没有被更新,所以没贴对应的新图标过去。
现在存在的问题就是按钮按下了弹起没有对应更新图标,但对应的标志已经是对的了,OVERLAY不支持整个重绘功能?我的已经先画背景图片了,但按钮在弹起的时候没有被更新,奇怪了。
xqhrs232
2012-06-19
打赏
举报
回复
用InvalidateRect对应区域只会闪一下,但没有更新状态图片。
重新画过又显示不出来,再调UpdateOverlay也还是显示不了。
难道必须参考MOSQUITO例子那样来一个前后surface的flip吗?
xqhrs232
2012-06-19
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
好像没有什么特殊的逻辑,只有获取 overlay 的 DC 后,操作与普通 DC 是一样的。
[/Quote]
获取overlay的DC后,然后把所有的图标一个个重新画过?然后调UpdateOverlay去重新显示?我的已经是这样做了,但还是显示按下的状态,按下的状态已经清除了,已经整个overlay重新画过了的啊!甚至连背景图标都重新画过了一遍,但为什么按钮还是恢复不了弹起的状态。
难道我的平台驱动在overlay这块还是有问题?
flutter的
overlay
组件示例1
该博客介绍了在Flutter中使用
Overlay
显示自定义弹出菜单并处理用户交互的代码。通过有
状态
部件管理
Overlay
状态
和用户选择,实现点击
按钮
显示菜单,用户操作后
更新
界面文字信息,展示了创建和管理覆盖层内容及
状态
管理
更新
界面的方法。
Android Vendor
Overlay
机制
本文介绍了Android Vendor
Overlay
机制,它允许设备厂商不修改AOSP源码,通过覆盖系统默认资源和配置文件实现定制。阐述了其工作原理、与其他
Overlay
的区别,指出其具有不修改源码、便于升级兼容、支持快速定制等优点,还给出使用例子及覆盖优先级规则。
PoE
Overlay
完全攻略:
重新
定义流放之路游戏体验的智能助手
PoE
Overlay
是一款基于Overwolf平台开发的《流放之路》游戏辅助工具,集成智能评估、交易管理、市场数据、物品分析和快捷命令五大功能模块。通过深度整合游戏数据与自动化操作,显著提升玩家效率与体验。工具遵循官方API标准,保障数据安全,并支持持续
更新
以适配游戏版本变化。
flutter自定义弹窗(一):
overlay
本文介绍了在Flutter中使用
Overlay
实现自定义弹窗的需求与解决方案。通过
Overlay
Entry,可以创建全屏弹窗并实现点击关闭等功能。文中提供了两个demo,包括菜单弹窗和跟随
按钮
滚动的弹窗,探讨了如何确定坐标和绑定滚动行为。
PoE-
Overlay
项目推荐
PoE-
Overlay
是为Path of Exile游戏玩家设计的开源项目,主要用TypeScript开发,涉及HTML、SCSS和C#等语言,通过Overwolf平台和Angular框架构建游戏内覆盖层。它有市场搜索、地图洞察等核心功能,近期新增跳过教程
按钮
、修复价格显示问题,增强了功能性和用户体验。
嵌入开发(WinCE)
19,523
社区成员
41,565
社区内容
发帖
与我相关
我的任务
嵌入开发(WinCE)
硬件/嵌入开发 嵌入开发(WinCE)
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章