0

我显示气球工具提示的代码是:

BOOL CTrayIcon::ShowBaloon(LPCTSTR 标题,LPCTSTR 文本,HICON hIcon)
{
    布尔 bRes = FALSE;
    如果(m_hWnd!= NULL)
    {
        NOTIFYICONDATA nfidata = {sizeof(NOTIFYICONDATA)};
        nfidata.cbSize = sizeof(nfidata);
        nfidata.hWnd = m_hWnd;
        nfidata.guidItem = guid;
        nfidata.uFlags = NIF_INFO | NIF_GUID;
        如果(h图标)
        {
            nfidata.hBalloonIcon = hIcon;
            nfidata.dwInfoFlags = NIIF_USER | NIIF_LARGE_ICON;
        }

        StringCchCopy(nfidata.szInfo, ARRAYSIZE(nfidata.szInfo), text);
        StringCchCopy(nfidata.szInfoTitle, ARRAYSIZE(nfidata.szInfoTitle), 标题);
        bRes = Shell_NotifyIcon(NIM_MODIFY, &nfidata);
    }
    返回 bRes;
}

问题是有时会在 10 秒延迟后显示气球。这仅在调试器未连接到应用程序时发生。如果我将调试器连接到应用程序,则会立即显示工具提示。我知道 Windows 7 管理气球工具提示的方式与以前的 Win 版本不同。但是我在哪里可以阅读更多关于这个的信息?我怎样才能改变这种行为?我需要在函数调用后立即显示工具提示。或者也许有 Shell_NotifyIcon 的替代品?

4

1 回答 1

0

如果立即看到通知至关重要,例如电话响铃的通知,那么您可能应该设置NIF_REALTIME标志。

但是,请注意,这也意味着如果由于某种原因无法立即显示通知,则根本不会显示通知。假设是,如果它是实时通知,则它仅在它发生时才相关。

诸如您刚刚收到电子邮件的通知之类的东西不是实时事件。

于 2013-05-29T10:03:37.433 回答