软件的可用性改善:善用帮助信息

这篇具有很好参考价值的文章主要介绍了软件的可用性改善:善用帮助信息。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

当我们吭哧吭哧的开发功能性模块的时候,也需要回头思考一下软件的可用性。今天的主题就是使用帮助信息来改善软件的可用性,让软件不仅”能用”,也更”好用”。

帮助信息,也叫工具提示(Tooltip)。当用户的鼠标悬停在一段文字或者控件上时,会自动显示相关的帮助信息。例如,如果一个控件上的字符串没有足够的控件显示,当鼠标悬停在控件上时,可以通过工具提示来显示完整的字符串。

实现工具提示的一个关键点是对 TTN_SHOW 通知消息的处理,此消息可以用来在工具提示显示之前设置它的显示位置。
另外一个要处理的消息是 TTM_ADJUSTRECT,它可以用来设置工具提示的精确显示位置。

下面是一段例子代码,其中添加了对工具提示的支持。

>> 请移步至 topomel.com 以查看图片 <<

代码解析

我们声明了一些变量之后,我们来深入看看创建窗口的过程。首先,我们调用 CreateWindowEx 创建工具提示窗口,将主窗口设置为工具提示窗口的所有者(这一点对于获得正确的 Z 顺序行为非常重要)。

然后,我们获取字体并将其设置到工具提示控件中,以便工具提示以与我们相同的字体呈现。

然后,我们测量目标字体中的文本,并将 g_rcText 矩形设置为该文本的尺寸。我们使用该矩形在工具提示控件中建立工具的边界。

通过设置 TTF_SUBCLASS 标志,我们指示工具提示控件应子类化我们的窗口以拦截鼠标消息。这是一种灵活的方法,可以避免我们不得不使用 TTM_RELAYEVENT 消息手动转发鼠标消息。

绘制工具提示就比较简单了,我们只需要选择字体和绘制文本就可以了。

运行这个例子,我们将鼠标悬停在文本上。我们可以看到工具提示会显示出来,但它显示到了错误的位置。
不过,除此之外,事情正在按预期进行。工具提示具有正确的字体,仅当鼠标悬停在文本本身上时触发,当鼠标离开文本时关闭。让我们来解决工具提示显示位置的问题,代码如下图所示:

>> 请移步至 topomel.com 以查看图片 <<

TTN_SHOW 通知消息在即将显示工具提示时发送。我们通过将文本矩形映射到屏幕坐标并使用 TTM_ADJUSTRECT 消息扩展矩形以包含工具提示控件将在文本周围放置的所有边距和边框来响应通知。
这样,当我们将工具提示放置在该位置时,边距和边框会精确匹配,并且文本将显示在所需位置。
返回 TRUE 以向工具提示控件指示我们已负责定位窗口,并且它不应执行其默认定位,这一点很重要。

我们再次运行例子程序,你会发现还有另一个问题:工具提示动画仍在进行,如果动画是幻灯片动画,则尤其会分散注意力。这很容易解决:调整我们创建工具提示控件的方式。

>> 请移步至 topomel.com 以查看图片 <<

TTS_NOANIMATE 样式可以用来禁止动画,这意味着工具提示只是弹出来并不再显示动画,这正是我们想要的。

大功告成!

以上就是实现工具提示的基础知识。
当然,可能你想处理更多细节,例如仅在字符串被剪切时才显示工具提示。但是这些问题与工具提示无关,因此我不会在这里讨论它们,可能在以后的时间我们会来探讨这个问题。

总结

如果时常以用户的角度来使用软件,你会发现:工具提示真的是一个十分十分好用的特性。
那么,现在立即就在你的软件里加上这个功能吧!

最后

Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《Coding in-place tooltips》

软件的可用性改善:善用帮助信息,OldNewThing,软件开发,系统设计,windows文章来源地址https://www.toymoban.com/news/detail-682996.html

到了这里,关于软件的可用性改善:善用帮助信息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • selenium代理ip可用性测试

    测试代理ip是否工作正常,将正常的代理ip提取出来 测试结果

    2024年01月20日
    浏览(36)
  • 14.RocketMQ之高可用性机制

    RocketMQ分布式集群是通过Master和Slave的配合达到高可用性的。 Master和Slave的区别:在Broker的配置文件中,参数 brokerId的值为0表明这个Broker是Master,大于0表明这个Broker是 Slave,同时brokerRole参数也会说明这个Broker是Master还是Slave。 Master角色的Broker支持读和写,Slave角色的Broker仅支

    2024年02月11日
    浏览(35)
  • 聊一聊医疗器械的可用性

    很抱歉由于各种因素这个号拖更了好久了,最近呢也有几个公众号做的挺好的,比如包总的 MD SRE 、丁总的 医械安全 、 饽饽糕的叨逼叨 ,而且更新也都比较频繁,大家可以 关注 一下; 好久没登录,当我上来看到已经有 5000多 的关注者,说实话,有 感动 ,有 自豪 ,也有

    2024年02月07日
    浏览(34)
  • 深入理解 Redis 高可用性方案及其原理

    深入理解 Redis 高可用性方案及其原理 在当今数据驱动的时代,Redis 作为一种高性能的键值存储数据库,在现代应用架构中扮演着举足轻重的角色。无论是作为缓存系统、消息队列还是轻量级数据库,Redis 以其卓越的性能和灵活性赢得了广泛的应用。然而,随着业务规模的不

    2024年03月25日
    浏览(47)
  • 兼容性测试如何提高网站的可用性?

    兼容性测试如何提高网站的可用性? 在现代社会,网站已经成为了人们获取信息、进行交流的主要渠道之一。但是,在网站的设计和开发中,往往会存在兼容性问题,导致不同浏览器或设备的用户无法顺利地访问和使用网站,降低了网站的可用性。因此,进行兼容性测试是提

    2024年02月09日
    浏览(54)
  • Kafka 高可用性集群部署实践 锤子技术

    作者:禅与计算机程序设计艺术 随着互联网应用场景的不断扩张、人们对实时数据处理需求越来越强烈,消息队列(MQ)系统也在逐渐发展壮大。Kafka 是 Apache 开源的分布式消息系统,它是一个分布式、高吞吐量、可扩展且高容错的平台。相对于其他 MQ 系统而言,Kafka 有以下

    2024年02月08日
    浏览(28)
  • 让Zookeeper更高效:高可用性扩展策略

    作者:禅与计算机程序设计艺术 引言 1.1. 背景介绍 随着分布式系统的广泛应用,Zookeeper作为一致性系统的核心组件,在分布式系统中发挥着越来越重要的作用。Zookeeper作为一个分布式协调服务,负责协调分布式系统中的各个组件,保证系统的一致性和可用性。 1.2. 文章目的

    2024年02月14日
    浏览(26)
  • SQLserver AlwaysOn 提交模式与节点的可用性

    接上文:https://www.cnblogs.com/wy123/p/17905118.html,关于AlwaysOn主副本与辅助副本之间提交模式与安全故障转移的话题 参考AlwaysOn属性面板中的信息 1,主节点异步提交模式:如果主要副本配置为“异步提交模式” ,则从节点不管是同步或者异步,主节点提交事务都无须等待从节点

    2024年02月04日
    浏览(27)
  • Kafka的分布式架构与高可用性

    一开始我们就说过Kafka是一款开源的高吞吐、分布式的消息队列系统,那么今天我们就来说下它的分布式架构和高可用性以及双/多中心部署。 以下是 Kafka 的软件架构,整个 Kafka 体系结构由 Producer、Consumer、Broker、ZooKeeper 组成。Broker 又由 Topic、分区、副本组成。 详细可以参

    2024年02月10日
    浏览(27)
  • 【PostgreSQL架构】PostgreSQL的最佳群集高可用性方案

    转载:【PostgreSQL架构】PostgreSQL的最佳群集高可用性方案-腾讯云开发者社区-腾讯云 (tencent.com) 如果您的系统依赖PostgreSQL数据库并且您正在寻找HA的集群解决方案,我们希望提前告知您这是一项复杂的任务,但并非不可能实现。 我们将讨论一些解决方案,您可以从中选择对您

    2024年02月19日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包