Exemplo n.º 1
0
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)));
	}
}
Exemplo n.º 2
0
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);
}