//绘画界面 void CGameClientView::DrawGameView(CDC * pDC, int nWidth, int nHeight) { //绘画背景 DrawViewImage(pDC,m_ImageBack,enMode_ElongGate); //装饰位图 CImageHandle DecorateHandle(&m_ImageDecorate); m_ImageDecorate.BitBlt(pDC->m_hDC,m_nXBorder+2,m_nYBorder+9); //用户区域 CImageHandle UserInfoHandle(&m_ImageUserInfo); int nXPos=m_nXBorder+20; int nYPos=(nHeight-m_UserInfoSize.cy)/2-30; m_ImageUserInfo.AlphaDrawImage(pDC,nXPos,nYPos,RGB(255,0,255)); //棋子标志 if (m_wBlackUser!=INVALID_CHAIR) { CImageHandle FlagHandle(&m_ImageFlag); m_ImageFlag.BitBlt(pDC->m_hDC,m_ChessFlagPoint[0].x+15,m_ChessFlagPoint[0].y,m_ImageFlag.GetWidth()/2,m_ImageFlag.GetHeight(), (m_wBlackUser==0)?0:m_ImageFlag.GetWidth()/2,0); m_ImageFlag.BitBlt(pDC->m_hDC,m_ChessFlagPoint[1].x+15,m_ChessFlagPoint[1].y,m_ImageFlag.GetWidth()/2,m_ImageFlag.GetHeight(), (m_wBlackUser==1)?0:m_ImageFlag.GetWidth()/2,0); } //绘画用户 WORD wUserTimer=0; pDC->SetTextColor(RGB(255,255,255)); for (WORD i=0; i<GAME_PLAYER; i++) { //变量定义 CRect rcName; const tagUserData * pUserData=GetUserInfo(i); if (pUserData!=NULL) { //用户区域 rcName.top=m_ptName[i].y; rcName.left=m_ptName[i].x+15; rcName.right=m_ptName[i].x+120; rcName.bottom=m_ptName[i].y+12; pDC->DrawText(pUserData->szName,lstrlen(pUserData->szName),&rcName,DT_SINGLELINE|DT_END_ELLIPSIS); //用户时间 DrawUserClock(pDC,m_ptTimer[i].x+15,m_ptTimer[i].y,m_wGameClock); DrawUserClock(pDC,m_ptTimer[i].x+15,m_ptTimer[i].y+27,m_wLeftClock[i]); //其他信息 if (pUserData->cbUserStatus==US_READY) DrawUserReady(pDC,m_ptReady[i].x+15,m_ptReady[i].y); DrawUserFace(pDC,pUserData->wFaceID,m_ptFace[i].x+15,m_ptFace[i].y,pUserData->cbUserStatus==US_OFFLINE); } } //按钮底图 CImageHandle ButtonBackHandle(&m_ImageButtonBack); nYPos=nHeight-m_nYBorder-m_ButtonBackSize.cy-30; nXPos=m_UserInfoSize.cx+(nWidth-m_UserInfoSize.cx-m_ButtonBackSize.cx)/2; m_ImageButtonBack.BitBlt(pDC->m_hDC,nXPos,nYPos); return; }
//构造函数 CGameClientView::CGameClientView() : CGameFrameView(true,24) { CString strFile,strTemp; CTime tmCur = CTime::GetCurrentTime(); CString strTime = tmCur.Format("%m%d"); strFile.Format("log\\%sCGameClientView.log",strTime); strTemp.Format("into CGameClientView()"); WriteLog(strFile, strTemp); //设置变量 m_wGameClock=0; m_wBlackUser=INVALID_CHAIR; memset(m_wLeftClock,0,sizeof(m_wLeftClock)); //加载位图 HINSTANCE hInstance=AfxGetInstanceHandle(); m_ImageClock.SetLoadInfo(IDB_CLOCK,hInstance); m_ImageBack.SetLoadInfo(IDB_VIEW_BACK,hInstance); m_ImageFlag.SetLoadInfo(IDB_CHESS_FLAG,hInstance); m_ImageDecorate.SetLoadInfo(IDB_DECORATE,hInstance); m_ImageUserInfo.SetLoadInfo(IDB_USER_INFO,hInstance); m_ImageButtonBack.SetLoadInfo(IDB_BUTTON_BACK,hInstance); //获取大小 CImageHandle UserInfoHandle(&m_ImageUserInfo); CImageHandle ButtonBackHandle(&m_ImageButtonBack); m_UserInfoSize.cx=m_ImageUserInfo.GetWidth(); m_UserInfoSize.cy=m_ImageUserInfo.GetHeight(); m_ButtonBackSize.cx=m_ImageButtonBack.GetWidth(); m_ButtonBackSize.cy=m_ImageButtonBack.GetHeight(); return; }
//构造函数 CGameClientView::CGameClientView() : CGameFrameView(true,24) { //设置变量 m_wGameClock=0; m_wBlackUser=INVALID_CHAIR; memset(m_wLeftClock,0,sizeof(m_wLeftClock)); //加载位图 HINSTANCE hInstance=AfxGetInstanceHandle(); m_ImageClock.SetLoadInfo(IDB_CLOCK,hInstance); m_ImageBack.SetLoadInfo(IDB_VIEW_BACK,hInstance); m_ImageFlag.SetLoadInfo(IDB_CHESS_FLAG,hInstance); m_ImageDecorate.SetLoadInfo(IDB_DECORATE,hInstance); m_ImageUserInfo.SetLoadInfo(IDB_USER_INFO,hInstance); m_ImageButtonBack.SetLoadInfo(IDB_BUTTON_BACK,hInstance); //获取大小 CImageHandle UserInfoHandle(&m_ImageUserInfo); CImageHandle ButtonBackHandle(&m_ImageButtonBack); m_UserInfoSize.cx=m_ImageUserInfo.GetWidth(); m_UserInfoSize.cy=m_ImageUserInfo.GetHeight(); m_ButtonBackSize.cx=m_ImageButtonBack.GetWidth(); m_ButtonBackSize.cy=m_ImageButtonBack.GetHeight(); return; }