Shell_NotifyIcon: всплывающая подсказка отображается после 10 секундной задержки

Мой код для отображения всплывающей подсказки:

BOOL CTrayIcon :: ShowBaloon (название LPCTSTR, текст LPCTSTR, 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), текст);
StringCchCopy (nfidata.szInfoTitle, ARRAYSIZE (nfidata.szInfoTitle), заголовок);
bRes = Shell_NotifyIcon (NIM_MODIFY, nfidata);
}
вернуть брс;
}

Проблема в том, что иногда шар отображается с 10-секундной задержкой. Это происходит только тогда, когда отладчик не подключен к приложению. Если я подключаю отладчик к приложению, то всплывающая подсказка отображается сразу. Я знаю, что Windows 7 управляет всплывающими подсказками иначе, чем в предыдущих версиях Win. Но где я могу прочитать больше об этом? И как я могу изменить это поведение? Мне нужно показать подсказку сразу после вызова функции. Или, может быть, есть какие-то альтернативы Shell_NotifyIcon?

0

Решение

Если важно, чтобы уведомление было просмотрено немедленно, например, уведомление о звонке по телефону, возможно, вам следует настроить NIF_REALTIME флаг.

Однако следует помнить, что это также означает, что уведомление не будет отображаться вообще, если по какой-либо причине оно не может быть отображено немедленно. Предполагается, что если это уведомление в реальном времени, оно актуально только в тот момент, когда оно происходит.

Что-то вроде уведомления о том, что вы только что получили электронное письмо, не является событием в реальном времени.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]