예제 #1
0
void CTextProgressCtrl::OnPaint() {
	CPaintDC dc(this); // device context for painting

	int saveDC = dc.SaveDC();

	CRect rcClient;
	GetClientRect(&rcClient);

	CBrush brHollow;
	brHollow.Attach(::GetStockObject(NULL_BRUSH));
	dc.SelectObject(&brHollow);

	// frame
	CPen pen(PS_SOLID, SCALEX(1), ::GetSysColor(COLOR_WINDOWFRAME));
	dc.SelectObject(&pen);
	HIDPI_BorderRectangle(dc.GetSafeHdc(), rcClient.left, rcClient.top, rcClient.right, rcClient.bottom);

	// inside
	rcClient.DeflateRect(SCALEX(1), SCALEY(1));

	int nWd = (Hi - Lo);
	double pos = (double) Pos / nWd;

	// bar
	int nPhysPos = (int) (rcClient.Width() * pos);
	COLORREF clrBar = ::GetSysColor(COLOR_HIGHLIGHT);
	CRect rcBar(rcClient.left, rcClient.top, rcClient.left + nPhysPos, rcClient.bottom);
	dc.FillSolidRect(&rcBar, clrBar);

	COLORREF clrBkgnd = ::GetSysColor(COLOR_3DSHADOW);
	CRect rcBack(rcClient.left + nPhysPos, rcClient.top, rcClient.right, rcClient.bottom);
	dc.FillSolidRect(&rcBack, clrBkgnd);

	// draw text over the progress bar
	rcClient.DeflateRect(SCALEX(4), -1, SCALEX(4), 1);

	dc.SetBkMode(TRANSPARENT);
	dc.SetTextColor(::GetSysColor(COLOR_HIGHLIGHTTEXT));

	CRect rcSize(0, 0, 0, 0);
	if (!m_strSize.IsEmpty()) {
		dc.SelectObject(&m_fntSize);
		rcSize = rcClient;
		dc.DrawText(m_strSize, rcSize, DT_RIGHT | DT_BOTTOM | DT_SINGLELINE | DT_NOPREFIX | DT_CALCRECT);
		dc.DrawText(m_strSize, rcClient, DT_RIGHT | DT_BOTTOM | DT_SINGLELINE | DT_NOPREFIX);
	}

	dc.SelectObject(&m_fntText);
	CRect rcProgress = rcClient;
	rcProgress.right -= rcSize.Width() - SCALEX(6);
	DrawTextEndEllipsis(dc, m_strText, rcProgress, DT_LEFT | DT_BOTTOM | DT_SINGLELINE | DT_NOPREFIX);

	// validate
	GetClientRect(&rcClient);
	ValidateRect(rcClient);

	dc.RestoreDC(saveDC);
}
예제 #2
0
파일: Editor.cpp 프로젝트: dreieier/Nexus
VstEditor::VstEditor( void* effect ) :
    Editor(),
	AEffGUIEditor( effect )
{
    LPTSTR lpDllPath = new TCHAR[ _MAX_PATH ];
    GetModuleFileName( (HMODULE)hInstance, lpDllPath, _MAX_PATH );  // get the file path of the dll

    string dllPath = Utils::tchar2string( lpDllPath );
    dllPath = dllPath.substr( 0, dllPath.find_last_of( '\\' )+1 );
    
    options_.open( dllPath, "nexus_plugin.options" );
    colors.init( dllPath, colors );

    CRect rcSize( options_.windowLeft_, options_.windowTop_, options_.windowRight_, options_.windowBottom_ );
    rcSize.offset( -rcSize.left, -rcSize.top );
    setSize( rcSize );

    delete[] lpDllPath;
}
예제 #3
0
//绘画界面
void CGameClientView::DrawGameView(CDC * pDC, int nWidth, int nHeight)
{
	//绘画背景
	DrawViewImage(pDC,m_ImageViewCenter,enMode_Centent);

	//人物句柄
	CImageHandle ImageHumanHandle(&m_ImageHuman);

	//获取大小
	int nItemWidth=m_ImageHuman.GetWidth()/8;
	int nItemHeight=m_ImageHuman.GetHeight()/2;

	//扑克句柄
	CImageHandle ImageCardHandle(&m_ImageCard);

	//扑克大小
	int nCardWidth=m_ImageCard.GetWidth()/13;
	int nCardHeight=m_ImageCard.GetHeight()/5;

	//D句柄
	CImageHandle ImageDHandle(&m_ImageD);

	//D大小
	int nDWidth = m_ImageD.GetWidth();
	int nDHeight = m_ImageD.GetHeight();

	//扑克掩图
	CImageHandle ImageCardMaskHandle(&m_ImageCardMask);

	//掩图大小
	int nCardMaskWidth = m_ImageCardMask.GetWidth();
	int nCardMaskHeight = m_ImageCardMask.GetHeight();

	//绘画用户
	if(!m_bReset)
	{
		for (WORD i=0;i<GAME_PLAYER;i++)
		{
			//绘制人物
			if(m_wUserGender[i] == 2)//男
			{
				m_ImageHuman.AlphaDrawImage(pDC,m_ptHuman[i].x,m_ptHuman[i].y,nItemWidth,nItemHeight,nItemWidth*i,0,RGB(255,0,255));
			}
			else if(m_wUserGender[i] == 1)//女
			{
				m_ImageHuman.AlphaDrawImage(pDC,m_ptWomen[i].x,m_ptWomen[i].y,nItemWidth,nItemHeight,nItemWidth*i,nItemHeight,RGB(255,0,255));
			}
		}
	}

	//绘画用户
	if(m_bShowUser==FALSE)return ;
	for (WORD i=0;i<GAME_PLAYER;i++)
	{
		//变量定义
		WORD wUserTimer=GetUserTimer(i);
		const tagUserData * pUserData=GetUserInfo(i);

#ifdef _DEBUG
		//tagUserData Obj;
		//Obj.cbGender = 0;
		//_sntprintf( Obj.szName,sizeof(Obj.szName),TEXT("用户的名字"));
		//Obj.lScore = 10000;
		//Obj.cbUserStatus = US_READY;
		//m_wUserPost[i] = i;
		//pUserData = &Obj;
		//wUserTimer = 10;
#endif

		//绘画用户
		if (pUserData!=NULL)
		{
			WORD wUserId = m_wUserPost[i];
			pDC->SetTextColor((wUserTimer>0)?RGB(0,250,0):RGB(0,220,0));

			//绘制人物
			if(pUserData->cbGender == 0)
				m_ImageHuman.AlphaDrawImage(pDC,m_ptHuman[wUserId].x,m_ptHuman[wUserId].y,nItemWidth,nItemHeight,nItemWidth*wUserId,0,RGB(255,0,255));
			else
				m_ImageHuman.AlphaDrawImage(pDC,m_ptWomen[wUserId].x,m_ptWomen[wUserId].y,nItemWidth,nItemHeight,nItemWidth*wUserId,nItemHeight,RGB(255,0,255));

			//绘制举手
			if (pUserData->cbUserStatus==US_READY)
				DrawUserReady(pDC,m_ptReady[wUserId].x,m_ptReady[wUserId].y);

			//绘制时间
			if (wUserTimer>0)
			{
				DrawUserTimer(pDC,m_ptTimer[wUserId].x,m_ptTimer[wUserId].y,wUserTimer);
				if(wUserTimer%2==0)
				{
					CImageHandle ImageArrowheadHandle(&m_ImageArrowhead);
					int wPost = (wUserId+2)%8;
					int iAddY=0,iAddX=0;
					if(wUserId==0 || wUserId==1)
					{
						iAddY=25;
						//iAddX=10;
					}
					else if(wUserId==2)
					{
						iAddX=-40;
					}
					else if(wUserId==3||wUserId==4)
					{
						wPost = 6;
						iAddY=-45;
						iAddX=-10;
					}
					else if(wUserId==5)
					{
						iAddY=-45;
						//iAddX=10;
					}
					else if(wUserId==6)
					{
						iAddY=5;
						iAddX=35;
					}
					else if(wUserId==7)
					{
						iAddY=25;
						iAddX=10;
					}
					m_ImageArrowhead.AlphaDrawImage(pDC,m_ptTimer[wUserId].x+iAddX,m_ptTimer[wUserId].y+iAddY,
						m_ImageArrowhead.GetWidth()/8,m_ImageArrowhead.GetHeight(),
						m_ImageArrowhead.GetWidth()/8*wPost,0,RGB(255,0,255));
				}
			}

			//绘制D
			if(m_wDUser != INVALID_CHAIR)
			{
				m_ImageD.AlphaDrawImage(pDC,m_ptD[m_wDUser].x,m_ptD[m_wDUser].y,nDWidth,nDHeight,0,0,RGB(255,0,255));
			}

			//绘制小扑克
			if (pUserData->cbUserStatus!=US_READY)
				m_SmallCardControl[wUserId].DrawCardControl(pDC);

			m_CardControl[wUserId].DrawCardControl(pDC,m_bGameEnd);

			if(m_lTableScore[wUserId]>0)
			{
				m_GoldView[wUserId].DrawGoldView(pDC,m_ptJetton[wUserId].x,m_ptJetton[wUserId].y,true);
			}
		}

		//用户扑克
		m_CardControl[i].DrawCardControl(pDC,m_bGameEnd);

		//中心扑克
		m_CenterCardControl.DrawCardControl(pDC,m_bGameEnd);
	}

	//绘制中心筹码
	if(m_lCenterScore >0)
	{
		m_CenterGoldView.DrawGoldView(pDC,m_ptCenterJetton.x,m_ptCenterJetton.y,true,true,(BYTE)m_wDUser);
	}

	//绘画扑克
	for (WORD i=0;i<GAME_PLAYER+1;i++)
	{
		////绘制小扑克
		//if(i<GAME_PLAYER)
		//{
		//	m_SmallCardControl[i].DrawCardControl(pDC);
		//}

		//筹码移动
		if(m_MoveGoldView[i].GetGold()>0 && i<GAME_PLAYER)
		{
			m_MoveGoldView[i].DrawGoldView(pDC,m_JettonStatus[i].ptCourse.x,m_JettonStatus[i].ptCourse.y,true);
		}

		//小扑克
		if(m_CardStatus[i].GetCount()==0)continue;
		tagCardStatus * pCardStatus = &(m_CardStatus[i].GetAt(0));
		if(pCardStatus->wMoveCount>0)
		{
			//小扑克
			m_SmallCardControl[i].DrawOneCard(pDC,0,pCardStatus->ptCourse.x,pCardStatus->ptCourse.y);			
		}
	}

	//绘画用户
	for (WORD i=0;i<GAME_PLAYER;i++)
	{
		const tagUserData * pUserData=GetUserInfo(i);
		//绘画用户
		if (pUserData!=NULL)
		{
			WORD wUserId = m_wUserPost[i];

			//绘画框架
			CImageHandle ImageFrameHandle(&m_ImageUserFrame);
			m_ImageUserFrame.AlphaDrawImage(pDC,m_ptName[wUserId].x,m_ptName[wUserId].y,
				m_ImageUserFrame.GetWidth()/8,m_ImageUserFrame.GetHeight(),
				m_ImageUserFrame.GetWidth()/8*wUserId,0,RGB(255,0,255));

			CFont ViewFont;
			ViewFont.CreateFont(-15,0,0,0,400,0,0,0,134,3,2,1,1,TEXT("Arial"));
			CFont *pOldFont=pDC->SelectObject(&ViewFont);

			CSize rcSize(103,30);
			CRect rcName(m_ptName[wUserId],rcSize);
			pDC->SetBkMode(TRANSPARENT);
			pDC->SetTextColor(RGB(255,255,255));
			pDC->DrawText(pUserData->szName,lstrlen(pUserData->szName),&rcName,DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS);

			//用户金币
			CRect rcName1(m_ptName[wUserId].x,m_ptName[wUserId].y+20,m_ptName[wUserId].x+108,m_ptName[wUserId].y+50);
			pDC->SetTextColor(RGB(255,255,4));
			TCHAR szBuffer[128]=TEXT("");
			LONG lLeaveScore=pUserData->lScore - ((m_lTotalScore[wUserId]>0)?m_lTotalScore[wUserId]:0L);
			if(lLeaveScore<0)lLeaveScore=pUserData->lScore;

			//加千数点
			LONG lTempCount = lLeaveScore;
			GetGlodString(lTempCount,szBuffer);

			pDC->DrawText(szBuffer,lstrlen(szBuffer),&rcName1,DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS);
			pDC->SelectObject(pOldFont);
			ViewFont.DeleteObject();	
		}
	}

	//坐下按钮
	if(m_wMyIsLookOn!=INVALID_CHAIR)
	{
		//查找空位
		for (WORD i=0;i<GAME_PLAYER;i++)
		{
			const tagUserData * pUserData=GetUserInfo(i);
			WORD wUserId = m_wUserPost[i];
			//坐下按钮
			if (pUserData==NULL)
			{
				m_btSitDown[wUserId].ShowWindow(SW_SHOW);
			}
			else
			{
				m_btSitDown[wUserId].ShowWindow(SW_HIDE);
			}
		}
	}

	return;
}