【发布时间】:2016-12-11 12:58:31
【问题描述】:
我正在使用 MFC 应用程序。在我们的一些表单中,我们有密码字段——普通的CEdit 控件,带有ES_PASSWORD 样式集。当焦点移到密码字段时,如果用户打开了 Caps Lock,Windows 会显示工具提示警告。 (请参阅screendump here)这没关系 - 密码区分大小写,所以最好通知用户他应该关闭 Caps Lock。
但有时警告并没有消失。即使CEdit 控件(和整个视图窗口)已被删除/销毁。 “工具提示气球”保留在屏幕上,位于其他所有内容之上。 (隐藏新控件。)摆脱它的唯一方法是关闭应用程序并重新启动它。
这个问题不会经常出现,但当它出现时会让用户非常恼火。据我们所知,这只发生在在 Citrix 下运行我们的应用程序的用户身上——而不是在独立 PC 上。我们的应用程序使用 Codejock 的 XTP,但工具提示已本地化,因此它似乎是由 Windows 生成的。
(1) 有人知道是什么原因造成的吗?我们一直无法在网上找到任何关于它的信息!会不会是 Citrix 的问题?或者我们认为这是 Windows 的问题 - 这可能是 Codejock 错误吗?
(2) 有没有办法解决这个问题? (CEdit::HideBalloonTip/EM_HIDEBALLOONTIP 没有帮助。)
(3) 如果问题没有解决办法,我们可以完全禁用CEdit 控件的“Caps Lock is on”工具提示吗?最好根本不显示工具提示,而不是遇到这个问题。
【问题讨论】:
-
如果您可以重现问题,您可能想尝试使用 Spy++ 来获取工具提示窗口的特征。这可以帮助您确定窗口是否仍然显示(在您的代码中)并提供关闭它的能力。
-
在
CEdit的父窗口中,覆盖OnLButtonDown并调用CEdit::HideBalloonTip或SetFocus(),查看当用户点击父窗口时工具提示是否关闭。
标签: windows mfc tooltip citrix capslock