void CNdasDeviceMenu::CreateDeviceMenuItem( __in ndas::DevicePtr pDevice, __inout MENUITEMINFO& mii) { static BOOL requireVistaMenuBitmapBugWorkaround = RequireVistaMenuBitmapBugWorkaround(); mii.fMask = MIIM_BITMAP | MIIM_DATA | MIIM_FTYPE | /* MIIM_ID | */ MIIM_STATE | MIIM_STRING | MIIM_SUBMENU; mii.fType = MFT_STRING; mii.fState = MFS_ENABLED; mii.dwItemData; /* see next */ mii.dwTypeData = const_cast<LPTSTR>(pDevice->GetName()); // // As we don't want to invert the color of the status indicator // we cannot simply create a bitmap here. We should draw it from the callback. // // Vista 5384 does not accept HBMMENU_CALLBACK // (Seems like a bug) // if (requireVistaMenuBitmapBugWorkaround) { CImageList imageList = pLoadStatusIndicatorImageList(); NDSI_DATA ndsiData; ATLVERIFY( mii.hSubMenu = CreateDeviceSubMenu(pDevice, &ndsiData) ); mii.hbmpItem = pCreateStatusIndicatorBitmap(m_wnd, imageList, &ndsiData); ATLVERIFY( imageList.Destroy() ); } else { mii.hbmpItem = HBMMENU_CALLBACK; ATLVERIFY(mii.hSubMenu = CreateDeviceSubMenu( pDevice, reinterpret_cast<PNDSI_DATA>(&mii.dwItemData))); } }
VOID CNdasDeviceMenu::CreateDeviceMenuItem( IN ndas::Device* pDevice, IN OUT MENUITEMINFO& mii) { mii.fMask = MIIM_STATE | MIIM_FTYPE | MIIM_BITMAP | MIIM_ID | MIIM_STRING | MIIM_SUBMENU | MIIM_DATA; mii.hbmpItem = HBMMENU_CALLBACK; mii.fType = MFT_STRING; mii.fState = MFS_ENABLED; mii.dwTypeData = (LPTSTR)pDevice->GetName(); mii.dwItemData = 0; PNDSI_DATA psiData = (PNDSI_DATA)&mii.dwItemData; mii.hSubMenu = CreateDeviceSubMenu(pDevice, psiData); }