#define MAP_ENTRY(x) {L#x, x} LPCTSTR EventName(long lEvent) { LPCTSTR psz = L""; static const struct { LPCTSTR pszName; long lEvent; } c_rgEventNames[] = { MAP_ENTRY(SHCNE_RENAMEITEM), MAP_ENTRY(SHCNE_CREATE), MAP_ENTRY(SHCNE_DELETE), MAP_ENTRY(SHCNE_MKDIR), MAP_ENTRY(SHCNE_RMDIR), MAP_ENTRY(SHCNE_MEDIAINSERTED), MAP_ENTRY(SHCNE_MEDIAREMOVED), MAP_ENTRY(SHCNE_DRIVEREMOVED), MAP_ENTRY(SHCNE_DRIVEADD), MAP_ENTRY(SHCNE_NETSHARE), MAP_ENTRY(SHCNE_NETUNSHARE), MAP_ENTRY(SHCNE_ATTRIBUTES), MAP_ENTRY(SHCNE_UPDATEDIR), MAP_ENTRY(SHCNE_UPDATEITEM), MAP_ENTRY(SHCNE_SERVERDISCONNECT), MAP_ENTRY(SHCNE_DRIVEADDGUI), MAP_ENTRY(SHCNE_RENAMEFOLDER), MAP_ENTRY(SHCNE_FREESPACE), MAP_ENTRY(SHCNE_UPDATEITEM), }; for (int i = 0; i < ARRAYSIZE(c_rgEventNames); i++) { if (c_rgEventNames[i].lEvent == lEvent) { psz = c_rgEventNames[i].pszName; break; } } return psz; }