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); }
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; }
//绘画界面 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; }