0

バルーン ツールチップを表示する私のコードは次のとおりです。

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;
        場合 (hIcon)
        {
            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 では、以前の Windows バージョンとは異なる方法でバルーン ツールチップを管理していることを知っています。しかし、これについてどこでもっと読むことができますか? そして、どうすればこの動作を変更できますか? 関数呼び出しの直後にツールチップを表示する必要があります。あるいは、Shell_NotifyIcon に代わるものはありますか?

4

1 に答える 1

0

電話の呼び出し音の通知など、通知をすぐに確認する必要がある場合は、おそらくNIF_REALTIMEフラグを設定する必要があります。

ただし、これは、何らかの理由ですぐに表示できない場合、通知がまったく表示されないことも意味することに注意してください。リアルタイム通知の場合は、発生した時点でのみ関連があると想定されます。

メールを受信したという通知のようなものは、リアルタイムのイベントではありません。

于 2013-05-29T10:03:37.433 に答える