Ejemplo n.º 1
0
BOOL CGuiControlBar::IsLegal(UINT uAlin)
{
	m_First=GetFirstPos();
//	if (IsFloating()) return FALSE;
	switch(uAlin)
	{
		case HTLEFT:
			if (IsHorz() && m_pos >0 && (m_pos != m_Last && m_pos != m_First)) return TRUE;
			if (IsVert() && m_pos <= m_Last && IsRight() ) return TRUE;
			return FALSE;
			break;
		case HTTOP:
			if (m_pos != m_First && IsVert()) return TRUE;
			if (IsHorz() && m_pos <= m_Last && IsBottom() ) return TRUE;
			return FALSE;
			break;
		case HTRIGHT:
			if (m_pos <= m_Last && IsVert() && IsLeft() ) return TRUE;
			if (IsHorz() && m_pos >0 &&  m_pos != m_Last) return TRUE;
			return FALSE;
		case HTBOTTOM:
			if ((m_pos != m_Last && m_pos != m_First) && IsHorz() && IsBottom()) return TRUE;
			if (m_pos <= m_Last && IsHorz() && IsTop()) return TRUE;
			//if (IsVert() && m_pos >0 ) return TRUE;
			return FALSE;
			break;
	}
	return FALSE;
}
Ejemplo n.º 2
0
void CXTPSkinObjectTab::FillClient(CDC* pDC, CRect rc)
{
	FillBackground(pDC, rc);

	if (GetStyle() & TCS_BUTTONS)
		return;

	CXTPSkinManagerClass* pClass = GetSkinClass();

	CRect rcClient(rc);
	CRect rcHeader = GetHeaderRect();

	DWORD dwStyle = GetStyle();

	if (IsRight(dwStyle))
	{
		rcClient.right = rcHeader.left;
	}
	else if (IsLeft(dwStyle))
	{
		rcClient.left = rcHeader.right;
	}
	else if (IsBottom(dwStyle))
	{
		rcClient.bottom = rcHeader.top;
	}
	else
	{
		rcClient.top = rcHeader.bottom;
	}

	pClass->DrawThemeBackground(pDC, TABP_PANE, 0, &rcClient);
}
Ejemplo n.º 3
0
CRect CXTPSkinObjectTab::GetHeaderRect()
{
	CRect rcHeader;
	GetClientRect(&rcHeader);

	CTabCtrl* pTabCtrl = (CTabCtrl*)this;

	// get the selected tab item rect.
	CRect rcItem;
	pTabCtrl->GetItemRect(pTabCtrl->GetCurSel(), &rcItem);

	DWORD dwStyle = GetStyle();

	if (IsRight(dwStyle))
	{
		rcHeader.left = rcItem.left;
	}
	else if (IsLeft(dwStyle))
	{
		rcHeader.right = rcItem.right;
	}
	else if (IsBottom(dwStyle))
	{
		rcHeader.top = rcItem.top;
	}
	else
	{
		rcHeader.bottom = (rcHeader.top + rcItem.Height()) * pTabCtrl->GetRowCount() + GetMetrics()->m_cyEdge;
	}
	return rcHeader;
}
Ejemplo n.º 4
0
CRect CGuiControlBar::GetDockRect()
{
	CRect rcWin;
	if (IsVert())
		if (IsLeft())
			m_pDockSite->GetControlBar(AFX_IDW_DOCKBAR_LEFT)->GetWindowRect(rcWin);
		else
			m_pDockSite->GetControlBar(AFX_IDW_DOCKBAR_RIGHT)->GetWindowRect(rcWin);
	else
		if(IsBottom())
			m_pDockSite->GetControlBar(AFX_IDW_DOCKBAR_BOTTOM)->GetWindowRect(rcWin);
		else
			m_pDockSite->GetControlBar(AFX_IDW_DOCKBAR_TOP)->GetWindowRect(rcWin);
	return rcWin;
}
Ejemplo n.º 5
0
void CRussiaRectView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	// TODO: Add your message handler code here and/or call default
	switch(nChar)
	{
	case 'A':					//A 左移一格
		RectArrow(LEFT);
		break;
	case 'D':					//D	右移一格
		RectArrow(RIGHT);
		break;
	case 'W':					//W	方块变形
		RectChange();
		break;
	case 'S':					//S	下移一格
		RectArrow(DOWN);
		break;
	case VK_SPACE:				//SPACE 直接下落到底部
		while(!IsBottom())
			RectDown();
		break;
	//双人模式
	case VK_LEFT:				//LEFT 左移一格
		if(!m_bOnePlayer) 
			RectArrow2(LEFT2);
		break;
	case VK_RIGHT:				//RIGHT	右移一格	
		if(!m_bOnePlayer) 
			RectArrow2(RIGHT2);
		break;
	case VK_UP:					//UP 方块变形
		if(!m_bOnePlayer) 
			RectChange2();
		break;
	case VK_DOWN:				//DOWN 下移一格
		if(!m_bOnePlayer) 
			RectArrow2(DOWN2);
		break;
	case VK_NUMPAD0:			//Number 0 直接下落到底部
		if(!m_bOnePlayer)
			while(!IsBottom2())
				RectDown2();
		break;
	}
	CView::OnKeyDown(nChar, nRepCnt, nFlags);
}
Ejemplo n.º 6
0
void CXTPSkinObjectTab::OnDraw(CDC* pDC)
{
	CRect rc = GetHeaderRect();
	DWORD dwStyle = GetStyle();

	if (IsRight(dwStyle))
	{
		rc.left -= 2;
	}
	else if (IsLeft(dwStyle))
	{
		rc.right += 2;
	}
	else if (IsBottom(dwStyle))
	{
		rc.top -= 2;
	}
	else
	{
		rc.bottom += 2;
	}

	CXTPBufferDC dcMem(*pDC, rc);
	FillClient(&dcMem, CXTPClientRect(this));

	if (m_bActiveX)
	{
		m_bPaint = TRUE;
		CXTPBufferDC dcMem2(*pDC, rc);
		DefWindowProc(WM_PAINT, (WPARAM)dcMem2.GetSafeHdc(), 0);
		dcMem2.Discard();
		m_bPaint = FALSE;
	}

	CTabCtrl* pTabCtrl = (CTabCtrl*)this;

	CXTPFontDC font(&dcMem, GetFont());
	dcMem.SetBkMode(TRANSPARENT);

	for (int iItem = 0; iItem < pTabCtrl->GetItemCount(); ++iItem)
	{
		DrawTab(&dcMem, iItem);
	}

	DrawTab(&dcMem, pTabCtrl->GetCurSel());
}
Ejemplo n.º 7
0
//////////////////////////////
//void RectDown()
//左边方块下移函数
void CRussiaRectView::RectDown()
{
	//查看是否到达底部
	m_isBottom = IsBottom();
	//1.若没有到达底部,便可以下移
	if (!m_isBottom)
	{
		//m_isBottom = false;
		//1.1 清除以前的方块
		ShapeInMap(m_iCurrentShape,0);
		//1.2 方块下落
		position.x++;
		//1.3 更新新的地图数组
		ShapeInMap(m_iCurrentShape,1);
		//1.4 显示新的图像
		InvalidateCurrent();
	}
}
Ejemplo n.º 8
0
void CGuiControlBar::OnInvertTracker(const CRect& rect)
{
	ASSERT_VALID(this);
	ASSERT(!rect.IsRectEmpty());
		
	CRect rcWin=GetDockRect();
	
	CDC *pDC = m_pDockSite->GetDCEx(NULL,
        DCX_WINDOW|DCX_CACHE|DCX_LOCKWINDOWUPDATE);
	CRect rcBar;
	GetWindowRect(rcBar);
	if (IsVert())  //el sentido de las barras es vertical
	{

		
		
		if (m_SideMove==HTLEFT || m_SideMove==HTRIGHT) //el mouse esta en el borde izquierdo o derecho
		{
			rcWin.OffsetRect(-rect.left,-rect.top);
			rcWin.top+=10;
			rcWin.left=rect.left+2;
			rcWin.right=rect.right+2;
		}
		else  //el mouse esta el borde de arriba pero de una barra vertical
		{
			rcBar.OffsetRect(-rect.TopLeft());
			rcWin=rcBar;
			if (IsLeft() || IsRight())   //a la izquierda
			{
				
				rcWin.top=rect.top-2;
				rcWin.bottom=rect.bottom-2;
			}
			//
			
		}
	}
	else  //el sentido de las barras es horizontal
	{
		
		if (m_SideMove==HTTOP || m_SideMove==HTBOTTOM) //el mouse esta en el borde de arriba o abajo
		{
			rcWin.OffsetRect(-rect.left,-rect.top);
			rcWin.top=rect.top-2;
			rcWin.bottom=rect.bottom-2;
		}
		else		//el mouse esta en el borde derecho
		{
			rcBar.OffsetRect(-rect.TopLeft());
			rcWin=rcBar;
			if (IsBottom() || IsTop())	//abajo
			{		
				rcWin.left=rect.left+2;
				rcWin.right=rect.right+2;
			}
		}
	}
	ClientToScreen(&rcWin);
	GetParentFrame()->ScreenToClient(&rcWin);
	// invert the brush pattern (looks just like frame window sizing)
	CBrush* pBrush = CDC::GetHalftoneBrush();
	HBRUSH hOldBrush = NULL;
	if (pBrush != NULL)
		hOldBrush = (HBRUSH)SelectObject(pDC->m_hDC, pBrush->m_hObject);
	pDC->PatBlt(rcWin.left, rcWin.top, rcWin.Width(), rcWin.Height(), PATINVERT);
	if (hOldBrush != NULL)
		SelectObject(pDC->m_hDC, hOldBrush);
	m_pDockSite->ReleaseDC(pDC);
}
Ejemplo n.º 9
0
BOOL CGuiControlBar::IsHorz()
{
	if (IsTop() || IsBottom())	return TRUE;
	return FALSE;
}
Ejemplo n.º 10
0
///////////////////////////////////////////
//void OnTimer(UINT nIDEvent)
//计时器函数,为程序中所有的时钟动作提供驱动
void CRussiaRectView::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	//1. 如果原来的方块已到底或游戏刚开始
	if (m_isBottom)
	{
		//1 将当前的方块位置保存到地图数组中
		ShapeInMap(m_iCurrentShape,1);

		//2 获得减少的行数和分数
		m_iTotalRow += GetDecreaseRow();
		//2.3 得到此时方块累积的高度
		m_iRectHeight = GetHeight();
		//3. 将当前方块用下一个方块代替
		m_iCurrentShape = m_iNextShape;
		//4. 随机得到下一次的方块样式
		m_iNextShape = Random(19);  
		//5. 初始化当前新方块的初始化位置
		position.x = m_iStartPositionX;
		position.y = m_iStartPositionY;	
		//2.6 显示该图像
		InvalidateCurrent();

		//6. 若到达底部
		if(IsBottom())
		{
			//2.4 若方块的最高累积高度超过了窗口的顶部
			if(m_iRectHeight >= m_iRow -1)
			{
				//2.5 游戏结束
				GameOver();
			} 
		}
		
		RectDown();
	}
	//2.否则没有到达底部
	else  
	{
		//2.1方块下降
		RectDown();
	}
	//右边:如果原来的方块已到底或游戏刚开始,则掉下一个新的方块
	if(!m_bOnePlayer)
	{
		//1. 如果原来的方块已到底或游戏刚开始
		if (m_isBottom2)
		{
			//1 将当前的方块位置保存到地图数组中
			ShapeInMap2(m_iCurrentShape2,1);

			//2 获得减少的行数和分数
			m_iTotalRow2 += GetDecreaseRow2();
			//2.3 得到此时方块累积的高度
			m_iRectHeight2 = GetHeight2();
			//3. 将当前方块用下一个方块代替
			m_iCurrentShape2 = m_iNextShape2;
			//4. 随机得到下一次的方块样式
			m_iNextShape2 = Random(19);  
			//5. 初始化当前新方块的初始化位置
			position2.x = m_iStartPositionX;
			position2.y = m_iStartPositionY;	
			//2.6 显示该图像
			InvalidateCurrent2();

			//6. 若到达底部
			if(IsBottom2())
			{
				//2.4 若方块的最高累积高度超过了窗口的顶部
				if(m_iRectHeight2 >= m_iRow -1)
				{
					//2.5 游戏结束
					GameOver();
				} 
			}			
			RectDown2();
		}
		//2. 否则,当前方块下降
		else  
		{
			RectDown2();
		}
	}

	CView::OnTimer(nIDEvent);
}
Ejemplo n.º 11
0
AFX_INLINE BOOL IsHorz(DWORD dwStyle)
{
	return (IsTop(dwStyle) || IsBottom(dwStyle));
}
Ejemplo n.º 12
0
BOOL CGuiToolBarWnd::IsHorz()
{
	if (IsTop() || IsBottom())	return TRUE;
	return FALSE;
}