【WM】制作Window Mobile 的今日插件之补充

本文分享了在开发世界时钟插件过程中遇到的问题及解决方案。最初尝试使用WM_TODAYCUSTOM_QUERYREFRESHCACHE消息来更新时钟,但在手机待机时发现消息接收中断,导致时钟停止工作。随后尝试使用WM_TIMER消息也未能解决问题。最终通过查询系统时间并根据时区计算当地时间的方法解决了这一难题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  原本最近没有取得什么显著的技术积累,所以本文原本未打算成文,但是最终我想既然我在开发“世界时钟”这个小插件遇到的几次小问题,使我觉得有必要把这些小细节写出来以作一个显著的备忘。

  起源是我受其他手机的界面启发,想开发一个世界时钟插件。最初我利用 WM_TODAYCUSTOM_QUERYREFRESHCACHE 消息尝试去推动时钟的分针前进,即由于 WM_TODAYCUSTOM_QUERYREFRESHCACHE 消息每两秒接收到一次,则我希望用在第30次收到该消息时,将时钟的分针向前加1。但是我发现这样做不行,因为在手机关闭屏幕(待机)状态下(屏幕被其他程序的界面占据时未作详细验证,因为目前无法下结论),该消息将无法收到,因此时钟停止走动,导致计时不准。然后我以为是 WM_TODAYCUSTOM_QUERYREFRESHCACHE 消息在关屏时停发的原因,而改为有 WM_TIMER (定时器)消息驱动分针,但结果证明依然失效。所以最终还是改为在 WM_TODAYCUSTOM_QUERYREFRESHCACHE 里查询当前的系统时间的 小时,分钟 是否有变化,而去根据这个时间再次根据时区的偏移值计算出当地时间,从而强制更新时间,这样才解决掉了时钟停止走动的问题。即:

 

  (1)WM_TODAYCUSTOM_QUERYREFRESHCACHE 消息不能当作驱动性脉冲信号,即我们不能将其当作时钟性依赖,而是必须理解为咨询插件是否要更新内容和显示的目的而发的。因此它可能在某些不必要的情况下停止发送。而在插件上,值得注意的是 WM_TIMER 在手机待机时也没有持续发送,这推翻了我之前固有的想法。

 

    

 

    (2)TransparentImage 函数可以用于 HDC 或者 HBITMAP 的透明性传送;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值