システムトレイのツールチップのタイムアウト時間
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の値を指定してるサイトがあるから勘違いしてしまったよ|・ω・)
Comments