首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

永远不要将焦点设置到一个被禁用的控件上

在对话框管理这个主题上,其中一个最不应该做的事情,就是:在将一个拥有输入焦点的控件禁用之前,没有将焦点移走。如果出现这种情况,用户在键盘上输入的内容将不会输送至对话框,为什么?

因为一个被禁用的窗口不能接收任何的键盘输入。如果恰好这个时候电脑没有鼠标(举个例子而已,现代的电脑系统,一般都会配备有鼠标),则对话框基本没法以任何方式被用户使用了。

(我曾经在一款微软的软件产品中碰到过这类错误场景,实在是令人非常沮丧啊。)

当你选择禁用一个控件之前,请检查它当前是否拥有输入焦点。如果是的话,则需要先将焦点切换到其他控件,然后再禁用它,这样用户可以继续正常地输入信息到对话框。

如果你不确定需要将焦点移动到哪个控件,则你可以将这个选择权交还给对话框管理器。具体来说,就是向对话框发送WM_NEXTDLGCTL消息,如下图所示:

在上面的代码中,我们封装了一个禁用对话框控件的帮助函数。首先判断目标控件是否具有输入焦点,如果是,则向对话框窗口发送WM_NEXTDLGCTL消息来将焦点移走。最后,我们就可以安全地禁用目标控件了。

(当然,你也不应该禁用对话框上的所有控件,如果那样的话,用户会再一次地遭遇上面所说的情况。)

总结

这也算是一个用户体验设计的小知识点。咱们开发出来的东西,先将自己变成用户,实际体验一下,看看感觉是不是很糟糕?

也即:己所不欲,勿施于人。

最后

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

本文来自:《Never leave focus on a disabled control》

最近我写了个东西

正如你们所知道的,拓扑梅尔智慧办公平台(Topomel Box)是一款绿色软件,主要面向经常使用电脑的朋友。它提供了各种提升办公效率的小功能,同时操作上尽可能地简单方便。

我想:你值得拥有。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210906A0699600?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券