システムトレイのツールチップのタイムアウト時間

NOTIFYICONDATA 構造体のuTimeout の値ですが、MSDNでは次のような解説になっています。

NOTIFYICONDATA Structure (Windows)

uTimeout

    Type: UINT

    Windows 2000 以降

    Note  このメンバーはWindows Vistaでは推奨されません通知表示時間は、現在のシステムのアクセシビリティ設定に基づきます。

    uVersionと一緒に使われる。タイムアウトの値は、通知のためにミリ秒単位で指定します。 システムではの最小と最大のタイムアウトが強制されています。 uTimeout として大きすぎる値が設定された時は、この最大値が設定され、小さすぎる値が設定された時は、この最小値が使用されます。 システムのタイムアウトの最小値と最大値は現在、それぞれ 10秒と30秒に設定されています。uTimeout の詳細については後述を参照。

----

タスクバーは一度に2つ以上のバルーン通知を表示できませんアプリケーションが何か既に表示されている通知を表示しようとする場合、古い通知がなくなったときに新たな通知がキューに入れられ表示されますWindows Vistaより前のバージョンのWindowsでは、元のuTimeoutの値に関係なく、既存の通知少なくともシステム最小タイムアウト時間表示されるまで新たな通知は表示されません。ユーザーがコンピュータを使用していないと思われる場合はシステムはタイムアウトとしてこの時間をカウントしません

----
というわけで10秒未満で消したい場合は、WM_TIMER などで

NOTIFYICONDATA ni;
ni.cbSize = sizeof(NOTIFYICONDATA);
ni.uFlags = NIF_INFO;
*ni.szInfo = '\0';
Shell_NotifyIcon(NIM_MODIFY, &FTrayIconInfo);

のようにして消去してやらないといけないわけですね。

なんか、サンプルで 3000とか 1000の値を指定してるサイトがあるから勘違いしてしまったよ|・ω・)

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です