Shell_NotifyIcon:延迟10秒后显示气球工具提示

时间:2013-05-29 09:31:04

标签: c++ winapi windows-7 system-tray trayicon

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

BOOL CTrayIcon::ShowBaloon(LPCTSTR title, LPCTSTR text, HICON hIcon)
{
    BOOL bRes = FALSE;
    if(m_hWnd != NULL)
    {
        NOTIFYICONDATA nfidata = {sizeof(NOTIFYICONDATA)};
        nfidata.cbSize = sizeof(nfidata);
        nfidata.hWnd   = m_hWnd;
        nfidata.guidItem = guid;
        nfidata.uFlags = NIF_INFO | NIF_GUID;
        if (hIcon)
        {
            nfidata.hBalloonIcon = hIcon;
            nfidata.dwInfoFlags = NIIF_USER | NIIF_LARGE_ICON;
        }

        StringCchCopy(nfidata.szInfo, ARRAYSIZE(nfidata.szInfo), text);
        StringCchCopy(nfidata.szInfoTitle, ARRAYSIZE(nfidata.szInfoTitle), title);
        bRes = Shell_NotifyIcon(NIM_MODIFY, &nfidata);
    }
    return bRes;
}

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

1 个答案:

答案 0 :(得分:0)

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

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

您收到电子邮件的通知不是实时事件。