コード例 #1
0
int PBListBox::MainHandler(int type, int par1, int par2)
{
    int fcX1, fcX2, fcY1, fcY2;
	int clickedElem;
    int result = 0;

	if (IsVisible() && type == EVT_POINTERUP)
    {
		PBPoint clientPoint =  m_pParent->ScreenToClient(PBPoint(par1, par2));

		fcX1 = GetClientLeft() + PBLIST_BORDER;
		fcX2 = fcX1 + GetClientWidth() - (PBLIST_BORDER << 1);
		fcY1 = GetClientTop() + PBLIST_BORDER;
		fcY2 = fcY1 + GetClientHeight() - (PBLIST_BORDER << 1);

		if (clientPoint.GetX() > fcX1 && clientPoint.GetX() < fcX2 &&
			clientPoint.GetY() > fcY1 && clientPoint.GetY() < fcY2 &&
			(clickedElem = m_listOffset + (clientPoint.GetY() - fcY1) / m_itemHeight) < count())
		{
			if (m_selected != -1)
				DrawSelect(m_selected, WHITE);

			m_selected = clickedElem;
			DrawSelect(m_selected, BLACK);

			if (m_pParent)
				m_pParent->OnCommand(PBLISTBOX, PBSTATECHANGED, (int) this);

			result = 1;
		}
		else result = PBWindow::MainHandler(type, par1, par2);
    }

    return result;
}
コード例 #2
0
ファイル: GameHUD.cpp プロジェクト: Catguy1/UnrealGame
void AGameHUD::DrawHUD()
{
	Super::DrawHUD();

	DrawHealth();
	DrawResources();
	DrawSelect();
}
コード例 #3
0
int PBListBox::OnDraw(bool force)
{
    int elem_iter;
    int elem_render_count, elem_count;

	if ( IsVisible() && (IsChanged() || force) && m_font)
    {
		PBGraphics *graphics = GetGraphics();

		if (m_properties & DRAW_BORDER)
			graphics->DrawRect(GetLeft(), GetTop(), GetWidth(), GetHeight(), BLACK);

		graphics->FillArea(GetClientLeft() + PBLIST_BORDER, GetClientTop() + PBLIST_BORDER, GetClientWidth() - (PBLIST_BORDER << 1), GetClientHeight() - (PBLIST_BORDER << 1), WHITE);

		elem_count = count();
		elem_render_count = calcListCapacity();

		// corect elements for render
		if (elem_render_count > elem_count)
			elem_render_count = elem_count;

		if (elem_render_count)
		{
			if (m_AutoScroll)
			{
				if (elem_render_count < elem_count)
				{
					if (m_listOffset > m_selected) m_listOffset = m_selected;
					if (m_selected > (m_listOffset + elem_render_count)) m_listOffset = m_selected - elem_render_count;
				}
			}
			else m_AutoScroll = 1;

			updateScrollBar();

			if (m_selected != -1)
				DrawSelect(m_selected, BLACK);

			SetFont(m_font, BLACK);
			elem_iter = 0;
			while( elem_iter <  elem_render_count)
			{
				graphics->DrawTextRect(GetClientLeft() + (PBLIST_BORDER << 2),
									   GetClientTop() + PBLIST_BORDER + elem_iter * m_itemHeight,
									   GetClientWidth() - (PBLIST_BORDER << 3),
									   m_itemHeight,
									   text(elem_iter + m_listOffset), // m_stringList[elem_iter + m_listOffset].c_str(),
									   ALIGN_LEFT | VALIGN_MIDDLE | DOTS);
				elem_iter++;
			}
		}
    }
	return 0;//PBWindow::Draw();
}