Esempio n. 1
0
bool TrackBar::OnEventKeyboard(Event event,WPARAM wparam,LPARAM lparam)
{
	if(!GetVisible() || !GetEnabled())
		return false;

	switch(event)
	{
	case EventKeyDown:
		if(wparam == VK_DOWN || wparam == VK_LEFT)
		{
			if(GetTrackValue())
				SetTrackValue(GetTrackValue() - 1);

			if(GetParent())
				GetParent()->OnEvent(EventChildCommand,ControlEventTrackChange,(LPARAM)this);

			return true;
		}

		if(wparam == VK_UP || wparam == VK_RIGHT)
		{
			if(GetTrackValue() < GetTrackRange())
				SetTrackValue(GetTrackValue() + 1);

			if(GetParent())
				GetParent()->OnEvent(EventChildCommand,ControlEventTrackChange,(LPARAM)this);

			return true;
		}

		if(wparam == VK_HOME)
		{
			SetTrackValue(0);

			if(GetParent())
				GetParent()->OnEvent(EventChildCommand,ControlEventTrackChange,(LPARAM)this);

			return true;
		}

		if(wparam == VK_END)
		{
			SetTrackValue(GetTrackRange());

			if(GetParent())
				GetParent()->OnEvent(EventChildCommand,ControlEventTrackChange,(LPARAM)this);

			return true;
		}
		break;
	}

	return Control::OnEventKeyboard(event,wparam,lparam);
}
Esempio n. 2
0
Rect TrackBar::GetTrackBox(void) const
{
	Rect box = GetBoundingBox();

	Size size(8,box.GetHeight());

	return Rect(Point(box.left + box.GetWidth() * GetTrackValue() / GetTrackRange() - size.cx / 2,box.top + box.GetHeight() / 2 - size.cy / 2 + 2),size);
}
Esempio n. 3
0
bool TrackBar::OnRender(void)
{
	if(!GetVisible())
		return false;

	Rect box = GetBoundingBox();

	GetKernel()->GetUserInterface()->DrawTrackBar(box,GetTrackBox(),GetTrackRange(),GetTrackValue(),false,GetEnabled(),GetFocused());

	return Control::OnRender();
}
Esempio n. 4
0
void CKeyControl::DrawKeys(CLinkListNode<KEY> *pSelectNode)
{
	CLinkListNode<KEY> *pNode = m_collKeys.GetHead();

	// Draw the background lines
	
	if (pNode)
	{
		while (pNode->m_pNext)
		{
			m_pMemDC->MoveTo(KeyToPos(&pNode->m_Data));
			m_pMemDC->LineTo(KeyToPos(&pNode->m_pNext->m_Data));

			pNode = pNode->m_pNext;
		}
	}

	// Draw the keys
	
	pNode = m_collKeys.GetHead();

	CBrush brBlack;
	brBlack.CreateSolidBrush(RGB(0, 0, 0));

	CBrush *pOldBrush = m_pMemDC->SelectObject(&brBlack);
	
	while (pNode)
	{
		CPoint ptCenter = KeyToPos(&pNode->m_Data);
		
		if (pNode == pSelectNode)
		{
			m_pMemDC->MoveTo(ptCenter.x, ptCenter.y);
			m_pMemDC->LineTo(ptCenter.x, m_cy);

			CBrush brGreen(RGB(255, 0, 0));
			CBrush *pOldBrush = m_pMemDC->SelectObject(&brGreen);

			// Draw the time lines down to the bottom of the screen

			int nTriSize = 5;
			
			POINT ptTri[3];
			ptTri[0].x = ptCenter.x - nTriSize;
			ptTri[0].y = m_cy - nTriSize;

			ptTri[1].x = ptCenter.x + nTriSize;
			ptTri[1].y = m_cy - nTriSize;

			ptTri[2].x = ptCenter.x;
			ptTri[2].y = m_cy;

			m_pMemDC->Polygon(ptTri, 3);

			m_pMemDC->SelectObject(pOldBrush);
		}

		if (pNode->m_Data.m_bSelected)
		{
			m_pMemDC->FillSolidRect(CRect(ptCenter.x - 5, ptCenter.y - 5, ptCenter.x + 5, ptCenter.y + 5), RGB(255, 0, 0));
			m_pMemDC->FrameRect(CRect(ptCenter.x - 5, ptCenter.y - 5, ptCenter.x + 5, ptCenter.y + 5), &brBlack);
		}
		else
		{
			m_pMemDC->FillSolidRect(CRect(ptCenter.x - 5, ptCenter.y - 5, ptCenter.x + 5, ptCenter.y + 5), RGB(150, 150, 150));
			m_pMemDC->FrameRect(CRect(ptCenter.x - 5, ptCenter.y - 5, ptCenter.x + 5, ptCenter.y + 5), &brBlack);
		}

		if (pNode == pSelectNode)
		{
			CString sVal = GetTrackValue(pSelectNode);
			CSize szText = m_pMemDC->GetTextExtent(sVal);

			ptCenter.x += 10;
			if (ptCenter.x + szText.cx > m_cx)
			{
				ptCenter.x = m_cx - szText.cx;
			}

			ptCenter.y -= 5;
			ptCenter.y -= szText.cy;

			if (ptCenter.y < 0)
			{
				ptCenter.y = 0;
			}

			m_pMemDC->TextOut(ptCenter.x, ptCenter.y, GetTrackValue(pSelectNode));
		}

		pNode = pNode->m_pNext;
	}

	m_pMemDC->SelectObject(pOldBrush);
}
Esempio n. 5
0
bool TrackBar::OnEventMouse(Event event,WPARAM wparam,LPARAM lparam)
{
	if(!GetVisible() || !GetEnabled())
		return false;

	switch(event)
	{
	case EventLeftButtonDown:
		if(PointInTrack(*(Point*)wparam))
		{
			if(!GetFocused())
				Focus();

			mTracking = true;
			mTrackingValue = mValue;
			mTrackingPosition = ((Point*)wparam)->x - GetTrackBox().GetCenter().x;

			SetCapture(GetKernel()->GetWindowHandle());

			return true;
		}

		if(PointIn(*(Point*)wparam))
		{
			if(!GetFocused())
				Focus();

			if(((Point*)wparam)->x > GetTrackBox().GetCenter().x)
			{
				if(GetTrackValue() < GetTrackRange())
					SetTrackValue(GetTrackValue() + 1);
			}
			else
			{
				if(GetTrackValue())
					SetTrackValue(GetTrackValue() - 1);
			}

			return true;
		}

		break;

	case EventLeftButtonUp:
		if(mTracking)
		{
			mTracking = false;

			ReleaseCapture();

			return true;
		}
		break;

	case EventMouseMove:
		if(mTracking)
		{
			Point delta = *(Point*)wparam;

			delta.x -= GetScreenPosition().x + mTrackingPosition;

			float val = (float)GetBoundingBox().GetWidth() / (float)GetTrackRange();

			if((float)delta.x / val > (float)GetTrackRange())
				SetTrackValue(GetTrackRange());
			else if((float)delta.x / val < 0.0f)
				SetTrackValue(0);
			else
				SetTrackValue((float)delta.x / val);

			if(GetParent())
				GetParent()->OnEvent(EventChildCommand,ControlEventTrackChange,(LPARAM)this);
		}

		break;
	}

	return Control::OnEventMouse(event,wparam,lparam);
}