繁体   English   中英

“大写锁定处于打开状态”-工具提示不会消失(Citrix?Codejock?)

[英]“Caps Lock is on”-tooltip doesn't go away (Citrix? Codejock?)

我正在使用MFC应用程序。 在某些表单中,我们具有密码字段-设置了ES_PASSWORD样式的普通CEdit控件。 将焦点移到密码字段时,如果用户启用了Caps Lock键,则Windows将显示工具提示警告。 (请参见此处的screendump )可以-密码区分大小写,因此最好告知用户应该关闭Caps Lock。

但是有时警告不会消失。 即使在CEdit控件(和整个视图窗口)被删除/销毁之后。 “工具提示气球”将保留在屏幕上,并位于其他所有内容的顶部。 (隐藏新控件。)摆脱它的唯一方法是关闭应用程序并重新启动它。

该问题并不经常出现,但对于用户而言却很烦人。 据我们所知,这仅发生在在Citrix下运行我们的应用程序的用户上,而不是在独立PC上。 我们的应用程序使用的是Codejock的XTP,但是工具提示已本地化,因此它似乎是Windows生成的。

(1)有人知道这是什么原因吗? 我们尚未在线上找到任何有关它的信息! 可能是Citrix问题吗? 还是我们错在Windows上,这可能是Codejock错误吗?

(2)有没有办法解决这个问题? CEdit::HideBalloonTip / EM_HIDEBALLOONTIP没有帮助。)

(3)如果无法解决问题,是否可以完全禁用CEdit控件的“ Caps Lock on”(打开大写锁定)-tooltip? 最好不要显示此工具提示,而不要出现此问题。

为了抑制气囊顶端可以过滤EM_SHOWBALLOONTIP所描述的消息在这里

WNDPROC g_wpEdit;

LRESULT CALLBACK NoBalloonWndProc(HWND hwnd, UINT uMsg,
                                  WPARAM wParam, LPARAM lParam)
{
  switch (uMsg) {
  case EM_SHOWBALLOONTIP: return FALSE;
  }
  return CallWindowProc(g_wpEdit, hwnd, uMsg, wParam, lParam);
}

BOOL
OnCreate(HWND hwnd, LPCREATESTRUCT lpcs)
{
    g_hwndChild = CreateWindow(TEXT("edit"), NULL,
            ES_PASSWORD | WS_CHILD | WS_VISIBLE, 0, 0,
            0, 0, hwnd, NULL, g_hinst, 0);
    if (!g_hwndChild) return FALSE;

    g_wpEdit = SubclassWindow(g_hwndChild, NoBalloonWndProc);

    return TRUE;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM