バルーン ツールチップを表示する私のコードは次のとおりです。
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 に代わるものはありますか?