XP 環境で,タスクトレイのチップが 64 文字で切れてしまっている.
VC8.exe は 64 で切られることはないが,VC 9 以降だとうまくない?
Win 7 環境での動作は問題ない.
まだ詳しく調べられてないが,とりあえずメモ.
2015/09/08
どうも _WIN32_WINNT によるみたい.
Win | UNICODE | MBCS | NOTIFYICONDATA | |
VC 6 | 400 | 152 | 88 | szTip[64] |
VC 7 | 501 | 936 | 488 | dwInfoFlag |
VC 8 | 502 | 936 | 488 | |
VC 9 | 600 | 956 | 508 | hBallonIcon |
VC10 | 601 | 956 | 508 | |
VC11 | 601 | 956 | 508 | |
VC12 | 601 | 956 |
Win は _WIN32_WINNT .
cbSize を NOTYFYICONDATA_V3_SIZE と指定すれば良いのか?
今回は,意図せず 64 文字で切れていたことを避けたかっただけなので,次の様に変更.
NOTIFYICONDATA nid ; ::ZeroMemory(&nid,sizeof(NOTIFYICONDATA)) ;
long maxLenTip = countof(nid.szTip)-1 ;
#if (_MSC_VER >= 1500) // VC 9 ~
if (::GetWindowsVersion() < 6) {
maxLenTip = 64-1 ;
}
#endif
if (::GetWindowsVersion() > maxLenTip) {
…
}