On 18/07/2026 20:17, Simon Nash wrote:

The following code should be OK for all versions from Windows XP onwards, 
including Windows 7.

! switch (shellVersion) { ! case 6: // WIN_XP, WIN_VISTA, WIN_7 ! m_nid.cbSize = (BYTE *)(&m_nid.hBalloonIcon) - (BYTE *)(&m_nid.cbSize); ! break; ! default: // WIN_8 and later ! m_nid.cbSize = sizeof(m_nid); ! break; ! }

Apologies for garbled code formatting. I'm not sure how this happened. Trying 
again below:

switch (shellVersion) {
    case 6: // WIN_XP, WIN_VISTA, WIN_7
        m_nid.cbSize = (BYTE *)(&m_nid.hBalloonIcon) - (BYTE *)(&m_nid.cbSize);
        break;
    default: // WIN_8 and later
        m_nid.cbSize = sizeof(m_nid);
        break;
}

Or (much simpler), just use if/else:

if (shellVersion == 6) { // WIN_XP, WIN_VISTA, WIN_7
    m_nid.cbSize = (BYTE *)(&m_nid.hBalloonIcon) - (BYTE *)(&m_nid.cbSize);
} else { // WIN_8 and later
     m_nid.cbSize = sizeof(m_nid);
}

Reply via email to