通知領域のツールチップの表示について
もふったーのツールチップがWindows 2000で表示されないことに気付いたので、調査してみました。
NOTIFYICONDATA ni; ZeroMemory(&ni, sizeof(NOTIFYICONDATA)); ni.cbSize = sizeof(NOTIFYICONDATA); ni.hWnd=hWndMain; ni.uID = TRAY_ID; ni.uVersion = NOTIFYICON_VERSION_0; if((GetVersion()&0xf)>4){ ni.uVersion = ((GetVersion()&0xf)>5)? NOTIFYICON_VERSION_4:NOTIFYICON_VERSION; } ni.uFlags = NIF_INFO; ni.uTimeout = INFOTIME*1000; ni.dwInfoFlags = mode; lstrcpyW(ni.szInfoTitle,tit); lstrcpyW(ni.szInfo,info); Shell_NotifyIcon(Trayon?NIM_MODIFY:NIM_ADD, &ni); |
元々、こんな感じでプログラム組んであったのですが、
uVersion の
//95/98 #define NOTIFYICON_VERSION_0 0 //2000 #define NOTIFYICON_VERSION 3 //XP #define NOTIFYICON_VERSION_4 4 |
以外にも
cbSize が間違ってると通知領域が正常に表示されないことが判明
//95/98 #define NOTIFYICONDATAW_V1_SIZE 512 // 2000 #define NOTIFYICONDATAW_V2_SIZE 936 // XP #define NOTIFYICONDATAW_V3_SIZE 952 // Vista #define NOTIFYICONDATAW_V4_SIZE 956 |
結構面倒ですね。
Comments