コード例 #1
0
ファイル: GossipDef.cpp プロジェクト: Sar777/TrinityCore
QuestMenu::~QuestMenu()
{
    ClearMenu();
}
コード例 #2
0
ファイル: GossipDef.cpp プロジェクト: Bootz/CactusEMU
GossipMenu::~GossipMenu()
{
    ClearMenu();
}
コード例 #3
0
ファイル: Menu.cpp プロジェクト: kento1218/TVTest
void CPopupMenu::Clear()
{
	if (m_hmenu!=NULL)
		ClearMenu(GetPopupHandle());
}
コード例 #4
0
ファイル: Menu.cpp プロジェクト: kento1218/TVTest
bool CChannelMenu::Create(const CChannelList *pChannelList,int CurChannel,UINT Command,
						  HMENU hmenu,HWND hwnd,unsigned int Flags,int MaxRows)
{
	Destroy();

	if (pChannelList==NULL)
		return false;

	m_ChannelList=*pChannelList;
	m_CurChannel=CurChannel;
	m_FirstCommand=Command;
	m_LastCommand=Command+m_ChannelList.NumChannels()-1;
	m_Flags=Flags;
	m_hwnd=hwnd;

	m_MenuPainter.Initialize(hwnd);
	m_MenuPainter.GetItemMargins(&m_Margins);
	if (m_Margins.cxLeftWidth<2)
		m_Margins.cxLeftWidth=2;
	if (m_Margins.cxRightWidth<2)
		m_Margins.cxRightWidth=2;

	HDC hdc=::GetDC(hwnd);

	CreateFont(hdc);
	HFONT hfontOld=DrawUtil::SelectObject(hdc,m_Font);

	CEpgProgramList &EpgProgramList=GetAppClass().EpgProgramList;
	const bool fCurServices=(Flags & FLAG_CURSERVICES)!=0;
	SYSTEMTIME st;
	if (!fCurServices)
		GetBaseTime(&st);
	m_ChannelNameWidth=0;
	m_EventNameWidth=0;
	if (hmenu==NULL) {
		m_hmenu=::CreatePopupMenu();
	} else {
		m_hmenu=hmenu;
		m_Flags|=FLAG_SHARED;
		ClearMenu(hmenu);
	}
	MENUITEMINFO mii;
	mii.cbSize=sizeof(MENUITEMINFO);
	mii.fMask=MIIM_FTYPE | MIIM_STATE | MIIM_ID | MIIM_DATA;
	int PrevSpace=-1;
	for (int i=0,j=0;i<m_ChannelList.NumChannels();i++) {
		const CChannelInfo *pChInfo=m_ChannelList.GetChannelInfo(i);
		if (!pChInfo->IsEnabled())
			continue;

		TCHAR szText[256];
		RECT rc;

		if (i==CurChannel)
			DrawUtil::SelectObject(hdc,m_FontCurrent);
		StdUtil::snprintf(szText,lengthof(szText),TEXT("%d: %s"),
						  pChInfo->GetChannelNo(),pChInfo->GetName());
		/*
		m_MenuPainter.GetItemTextExtent(hdc,0,szText,&rc,
										DT_LEFT | DT_SINGLELINE | DT_VCENTER | DT_NOPREFIX);
		*/
		::SetRectEmpty(&rc);
		::DrawText(hdc,szText,-1,&rc,DT_SINGLELINE | DT_NOPREFIX | DT_CALCRECT);
		if (rc.right>m_ChannelNameWidth)
			m_ChannelNameWidth=rc.right;
		mii.wID=m_FirstCommand+i;
		mii.fType=MFT_OWNERDRAW;
		if ((MaxRows>0 && j==MaxRows)
				|| ((Flags&FLAG_SPACEBREAK)!=0 && pChInfo->GetSpace()!=PrevSpace)) {
			mii.fType|=MFT_MENUBREAK;
			j=0;
		}
		mii.fState=MFS_ENABLED;
		if (i==CurChannel)
			mii.fState|=MFS_CHECKED;
		CChannelMenuItem *pItem=new CChannelMenuItem(pChInfo);
		mii.dwItemData=reinterpret_cast<ULONG_PTR>(pItem);
		if ((Flags&FLAG_SHOWEVENTINFO)!=0) {
			const CEventInfoData *pEventInfo=
				pItem->GetEventInfo(&EpgProgramList,0,fCurServices?NULL:&st);

			if (pEventInfo!=NULL) {
				GetEventText(pEventInfo,szText,lengthof(szText));
				/*
				m_MenuPainter.GetItemTextExtent(hdc,0,szText,&rc,
												DT_LEFT | DT_SINGLELINE | DT_VCENTER | DT_NOPREFIX);
				*/
				::SetRectEmpty(&rc);
				::DrawText(hdc,szText,-1,&rc,DT_SINGLELINE | DT_NOPREFIX | DT_CALCRECT);
				if (rc.right>m_EventNameWidth)
					m_EventNameWidth=rc.right;
			}
		}
		::InsertMenuItem(m_hmenu,i,TRUE,&mii);
		if (i==CurChannel)
			DrawUtil::SelectObject(hdc,m_Font);
		PrevSpace=pChInfo->GetSpace();
		j++;
	}
	::SelectObject(hdc,hfontOld);
	::ReleaseDC(hwnd,hdc);

	if ((Flags&FLAG_SHOWTOOLTIP)!=0) {
		m_Tooltip.Create(hwnd);
		m_Tooltip.SetMaxWidth(480);
		m_Tooltip.SetPopDelay(30*1000);
		m_Tooltip.AddTrackingTip(1,TEXT(""));
	}

	if ((Flags & FLAG_SHOWLOGO)!=0) {
		if (!m_LogoFrameImage.IsCreated()) {
			m_LogoFrameImage.Load(GetAppClass().GetResourceInstance(),
								  MAKEINTRESOURCE(IDB_LOGOFRAME),LR_CREATEDIBSECTION);
		}
	}

	return true;
}
コード例 #5
0
CommandMenu::~CommandMenu()
{
	ClearMenu();
}