本文主要是介绍翻译《The Old New Thing》 - Never leave focus on a disabled control,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Never leave focus on a disabled control - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20040804-00/?p=38243
Raymond Chen 2004年08月04日
在对话框管理中,一个大忌是禁用焦点所在的控件而不先将焦点移动到其他地方。
当你这样做时,键盘对对话框就变得无响应了,因为禁用的窗口不会接收输入。
对于没有鼠标的用户(比如说,因为他们有身体上的限制,只能使用键盘),这会导致你的对话框无法使用。
(我甚至在微软的软件中也见过这种情况。这非常令人沮丧。)
在禁用一个控件之前,检查它是否拥有焦点。如果是,那么在禁用它之前先将焦点移动到其他地方,这样用户就不会陷入困境。
如果你不知道焦点应该移到哪个控件,你总是可以让对话框管理器来决定。WM_NEXTDLGCTL消息再次来救援。
void DialogDisableWindow(HWND hdlg, HWND hwndControl)
{if (hwndControl == GetFocus()) {SendMessage(hdlg, WM_NEXTDLGCTL, 0, FALSE);}EnableWindow(hwndControl, FALSE);
}
(当然,你绝对不应该禁用对话框上的最后一个控件。那会让用户完全陷入困境,没有逃脱的希望!)
[这篇文章本应该在昨天发布的,但是自动博客工具那天出了问题,忘记了发布这篇文章。抱歉。]
这篇关于翻译《The Old New Thing》 - Never leave focus on a disabled control的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!