⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clientview.cpp

📁 添七,棋牌游戏源代码,功能齐全,稳定,适合用于棋牌游戏开发
💻 CPP
📖 第 1 页 / 共 2 页
字号:

#include "StdAfx.h"
#include "ClientView.h"
#include "ClientGameDlg.h"

//宏定义
#define BT_WIDTH							32						//按钮宽度
#define BT_HEIGHT							32						//按钮高度

//CBitmap				CClientPlayView::m_Back_Center;
CBitmap				CClientPlayView::m_Bitmap_Num;
//BITMAP				CClientPlayView::m_Back_Center_Info;


BEGIN_MESSAGE_MAP(CClientPlayView, CUsingSkinClass)
	ON_WM_CREATE()
	ON_BN_CLICKED(IDC_BEGIN,OnHitBegin)
	ON_BN_CLICKED(IDC_GIVE_BACK,OnHitBackCard)
	ON_BN_CLICKED(IDC_OUT_CARD,OnHitOutCard)
	ON_BN_CLICKED(IDC_CONTINUE, OnHitContinue)
	ON_BN_CLICKED(IDC_LAST_CARD, OnHitLastTurn)
	ON_BN_CLICKED(IDC_BACK_CARD, OnHitLookBack)
	ON_BN_CLICKED(IDC_HAVE_THING, OnHitThing)
	ON_BN_CLICKED(IDC_STOP, OnHitStop)

	ON_BN_CLICKED(IDC_PASS,OnHitPass)
	
END_MESSAGE_MAP()

/*******************************************************************************************************/

//构造函数
CClientPlayView::CClientPlayView(void) :m_GameSet(this),m_GameInfo(this)//,m_GameEndView(this)
{
	AfxSetResourceHandle(GetModuleHandle(CLIENT_DLL_NAME));

	//	if(g_ShowPicture)
	m_PicGameView.SetLoadInfo("tml\\bg3.jpg",CGameImageLink::m_bAutoLock);
	m_PicGameViewLogo.SetLoadInfo("tml\\bgBQ.jpg",CGameImageLink::m_bAutoLock);

	//m_PicTopBar.SetLoadInfo(GetModuleHandle(CLIENT_DLL_NAME),IDB_TOP_BAR,CGameImageLink::m_bAutoLock);
m_PicTopBar.SetLoadInfo("tml\\GmTop2.jpg",CGameImageLink::m_bAutoLock);						//顶端贴图
	m_PicTopBarLeft.SetLoadInfo("tml\\GmTopBQ.jpg",CGameImageLink::m_bAutoLock);					//顶端贴图
	//m_PicTopBarRight.SetLoadInfo(GetModuleHandle(CLIENT_DLL_NAME),IDB_TOP_BAR_RIGHT,CGameImageLink::m_bAutoLock);
m_PicTopBarRight.SetLoadInfo("tml\\GmTop3.jpg",CGameImageLink::m_bAutoLock);					//顶端贴图


//	m_PicBottomBar.SetLoadInfo(GetModuleHandle(CLIENT_DLL_NAME),IDB_BOTTOM_BAR,CGameImageLink::m_bAutoLock);
//	m_PicBottomBarLeft.SetLoadInfo(GetModuleHandle(CLIENT_DLL_NAME),IDB_BOTTOM_BAR_LEFT,CGameImageLink::m_bAutoLock);
//	m_PicBottomBarRight.SetLoadInfo(GetModuleHandle(CLIENT_DLL_NAME),IDB_BOTTOM_BAR_RIGHT,CGameImageLink::m_bAutoLock);
	//	else
	//		m_PicGameView.SetLoadInfo(GetModuleHandle(CLIENT_DLL_NAME),IDB_BACK,CGameImageLink::m_bAutoLock);

	m_iGamePoint=0;
	m_bMeSide=-1;
	m_iHuaKind=0;
	m_iShowStation=-1;
	m_iNtStation=-1;
	m_NT.LoadBitmap(IDB_NT);
	m_NTLogo.LoadBitmap(IDB_NTLOGO);

//	m_Back_Center.LoadBitmap(IDB_BACK_CENTER);
//	m_Back_Center.GetBitmap(&m_Back_Center_Info);

	m_Bitmap_Num.LoadBitmap(IDB_BITMAP_NUM);

	AfxSetResourceHandle(GetModuleHandle(NULL));
	return;
}

//析构函数
CClientPlayView::~CClientPlayView(void)
{
}

//更新用户资料
void CClientPlayView::UpdateUserInfo(BYTE bViewStation)
{
	UpdateViewFace(NULL);
	return;
}

//绘画界面函数
void CClientPlayView::DrawViewFace(CDC * pDC, int iWidth, int iHeight)
{
	//绘画界面
	pDC->FillSolidRect(0,0,BT_WIDTH,BT_HEIGHT,RGB(0,0,0));
//	if(g_ShowPicture)
//		DrawBackPic(pDC,DrawMode::DM_CENTENT,iWidth,iHeight);
//	else
//	{
 	DrawBackPic(pDC,DrawMode::DM_SPREAD,iWidth,iHeight);

		CGameImageHelper LogoHandle(&m_PicGameViewLogo);
		LogoHandle.BitBlt(pDC->GetSafeHdc(),(iWidth-LogoHandle.GetWidth())/2,(iHeight-LogoHandle.GetHeight())/2);

	


//		if (GetSystemMetrics(SM_CXSCREEN)>=1024)
//		{
//			CDC Back_CenterDC;
//			Back_CenterDC.CreateCompatibleDC(pDC);
//			Back_CenterDC.SelectObject(&m_Back_Center);
//		//	pDC->BitBlt((iWidth-m_Back_Center_Info.bmWidth)/2,(iHeight-m_Back_Center_Info.bmHeight)/3,
//		//		m_Back_Center_Info.bmWidth,m_Back_Center_Info.bmHeight,&Back_CenterDC,0,0,SRCCOPY);
//			TransparentBlt2(pDC->GetSafeHdc(),(iWidth-m_Back_Center_Info.bmWidth)/2,(iHeight-m_Back_Center_Info.bmHeight)/3,
//				m_Back_Center_Info.bmWidth,m_Back_Center_Info.bmHeight,Back_CenterDC.GetSafeHdc(),
//				0,0,m_Back_Center_Info.bmWidth,m_Back_Center_Info.bmHeight,RGB(255,0,255));
//		}
//	}

	CDC NumDC;
	NumDC.CreateCompatibleDC(pDC);
	NumDC.SelectObject(&m_Bitmap_Num);

	//绘画用户
	pDC->SetTextColor(RGB(0,0,0));
	for (int i=0;i<4;i++)
	{
		if (m_pUserItem[i]!=NULL)
		{
			UserInfoStruct * pUserInfo=&m_pUserItem[i]->GameUserInfo;
			if (i==1) pDC->SetTextAlign(TA_RIGHT|TA_TOP);
			else pDC->SetTextAlign(TA_LEFT|TA_TOP);
			pDC->TextOut(m_PtName[i].x,m_PtName[i].y,pUserInfo->szName);
			DrawLogo(pDC,m_pUserItem[i]->GameUserInfo.bLogoID,m_PtLogo[i].x,m_PtLogo[i].y,pUserInfo->bUserState==USER_CUT_GAME);
			if (m_uTime[i]!=0) DrawTimer(pDC,m_PtTime[i].x,m_PtTime[i].y,m_uTime[i]);
			if (pUserInfo->bUserState==USER_ARGEE) DrawArgeeFlag(pDC,m_PtAgree[i].x,m_PtAgree[i].y);

			//画打到几了
			if (m_iNtStation!=-1)
			{
				//if(i%2==0)
					///pDC->BitBlt(m_PtNtLogo[i].x+27,m_PtNtLogo[i].y-3,25,23,&NumDC,25*abs((m_StationView.m_iMeStation-2)),0,SRCCOPY);
				//else
					//pDC->BitBlt(m_PtNt[i].x+27,m_PtNt[i].y,25,23,&NumDC,25*abs((m_StationView.m_iOtherStation-2)),0,SRCCOPY);	
			}
		}
	}

	//绘画分数
	if (m_bMeSide!=-1)
	{
		TCHAR szBuffer[20];
		sprintf(szBuffer,TEXT("%s得分:%d"),m_bMeSide?TEXT("本方"):TEXT("敌家"),m_iGamePoint);
		pDC->SetTextAlign(TA_LEFT|TA_TOP);
		pDC->TextOut(iWidth-170-VIEW_FRAME_RIGHT,iHeight-110-20,szBuffer,lstrlen(szBuffer));
	}

	//绘画庄家位置
	if (m_iNtStation!=-1) 
	{
		DrawNt(pDC,m_PtNt[m_iNtStation].x,m_PtNt[m_iNtStation].y);
	}

	//绘画报主位置
	if (m_iShowStation!=-1)
	{
		///DrawNtLogo(pDC,m_PtNtLogo[m_iShowStation].x,m_PtNtLogo[m_iShowStation].y,m_iHuaKind);
	}

	DrawInfo(pDC);
	

	//画框
	CGameImageHelper TopBarHandle(&m_PicTopBar);
	for(int i = 0; i < iWidth; i+=TopBarHandle.GetWidth())
	{
		TopBarHandle.BitBlt(pDC->GetSafeHdc(),i,0);
	}

	CGameImageHelper TopBarLeftHandle(&m_PicTopBarLeft);
	TopBarLeftHandle.BitBlt(pDC->GetSafeHdc(),0,0);

	CGameImageHelper TopBarRightHandle(&m_PicTopBarRight);
	TopBarRightHandle.BitBlt(pDC->GetSafeHdc(),iWidth - TopBarRightHandle.GetWidth(),0);



/*	CGameImageHelper BottomBarHandle(&m_PicBottomBar);
	for(int i = 0; i < iWidth; i+=BottomBarHandle.GetWidth())
	{
		BottomBarHandle.BitBlt(pDC->GetSafeHdc(),i,iHeight - BottomBarHandle.GetHeight());
	}

	CGameImageHelper BottomBarLeftHandle(&m_PicBottomBarLeft);
	BottomBarLeftHandle.BitBlt(pDC->GetSafeHdc(),0,iHeight - BottomBarHandle.GetHeight());

	CGameImageHelper BottomBarRightHandle(&m_PicBottomBarRight);
	BottomBarRightHandle.BitBlt(pDC->GetSafeHdc(),iWidth - BottomBarRightHandle.GetWidth(),iHeight - BottomBarHandle.GetHeight());
*/

	return;
}

void CClientPlayView::TransparentBlt2( HDC hdcDest,      // 目标DC
					int nXOriginDest,   // 目标X偏移
					int nYOriginDest,   // 目标Y偏移
					int nWidthDest,     // 目标宽度
					int nHeightDest,    // 目标高度
					HDC hdcSrc,         // 源DC
					int nXOriginSrc,    // 源X起点
					int nYOriginSrc,    // 源Y起点
					int nWidthSrc,      // 源宽度
					int nHeightSrc,     // 源高度
					UINT crTransparent  // 透明色,COLORREF类型
					)
{
	HBITMAP hOldImageBMP, hImageBMP = CreateCompatibleBitmap(hdcDest, nWidthDest, nHeightDest);	// 创建兼容位图
	HBITMAP hOldMaskBMP, hMaskBMP = CreateBitmap(nWidthDest, nHeightDest, 1, 1, NULL);			// 创建单色掩码位图
	HDC		hImageDC = CreateCompatibleDC(hdcDest);
	HDC		hMaskDC = CreateCompatibleDC(hdcDest);
	hOldImageBMP = (HBITMAP)SelectObject(hImageDC, hImageBMP);
	hOldMaskBMP = (HBITMAP)SelectObject(hMaskDC, hMaskBMP);

	// 将源DC中的位图拷贝到临时DC中
//	if (nWidthDest == nWidthSrc && nHeightDest == nHeightSrc)
		BitBlt(hImageDC, 0, 0, nWidthDest, nHeightDest, hdcSrc, nXOriginSrc, nYOriginSrc, SRCCOPY);
//	else
//		StretchBlt(hImageDC, 0, 0, nWidthDest, nHeightDest, 
//					hdcSrc, nXOriginSrc, nYOriginSrc, nWidthSrc, nHeightSrc, SRCCOPY);

	// 设置透明色
	SetBkColor(hImageDC, crTransparent);

	// 生成透明区域为白色,其它区域为黑色的掩码位图
	BitBlt(hMaskDC, 0, 0, nWidthDest, nHeightDest, hImageDC, 0, 0, SRCCOPY);

	// 生成透明区域为黑色,其它区域保持不变的位图
	SetBkColor(hImageDC, RGB(0,0,0));
	SetTextColor(hImageDC, RGB(255,255,255));
	BitBlt(hImageDC, 0, 0, nWidthDest, nHeightDest, hMaskDC, 0, 0, SRCAND);

	// 透明部分保持屏幕不变,其它部分变成黑色
	SetBkColor(hdcDest,RGB(255,255,255));
	SetTextColor(hdcDest,RGB(0,0,0));
	BitBlt(hdcDest, nXOriginDest, nYOriginDest, nWidthDest, nHeightDest, hMaskDC, 0, 0, SRCAND);

	// "或"运算,生成最终效果
	BitBlt(hdcDest, nXOriginDest, nYOriginDest, nWidthDest, nHeightDest, hImageDC, 0, 0, SRCPAINT);

	// 清理、恢复	
	SelectObject(hImageDC, hOldImageBMP);
	DeleteDC(hImageDC);
	SelectObject(hMaskDC, hOldMaskBMP);
	DeleteDC(hMaskDC);
	DeleteObject(hImageBMP);
	DeleteObject(hMaskBMP);
}

//建立消息
int CClientPlayView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CUsingSkinClass::OnCreate(lpCreateStruct) == -1)	return -1;

	//建立控件
	AfxSetResourceHandle(GetModuleHandle(CLIENT_DLL_NAME));

	m_StationView.Create(this,100);
	m_NtList.Create(IDD_NT_LIST,this);
	m_btOutCard.Create(TEXT("出牌"),WS_CHILD|WS_CLIPSIBLINGS,CRect(0,0,80,25),this,IDC_OUT_CARD);
	m_btGiveBack.Create(TEXT("留底牌"),WS_CHILD|WS_CLIPSIBLINGS,CRect(0,0,80,25),this,IDC_GIVE_BACK);
	m_btContinue.Create(TEXT("继续"),WS_CHILD|WS_CLIPSIBLINGS,CRect(0,0,80,25),this,IDC_CONTINUE);
	
	m_btPass.Create(TEXT("不出"),WS_CHILD|WS_CLIPSIBLINGS,CRect(0,0,80,25),this,IDC_PASS);
	
//	m_btLastTurn.Create(TEXT("上一轮"),WS_CHILD|WS_CLIPSIBLINGS|WS_VISIBLE|WS_DISABLED|BS_OWNERDRAW,CRect(0,0,75,25),this,IDC_LAST_CARD);
	m_btLastTurn.Create(TEXT("上一轮"),WS_CHILD|WS_CLIPSIBLINGS|WS_VISIBLE|WS_DISABLED|BS_OWNERDRAW,CRect(0,0,75,25),this,IDC_LAST_CARD);
//	m_btBackCard.Create(TEXT("底牌"),WS_CHILD|WS_CLIPSIBLINGS|WS_VISIBLE|WS_DISABLED|BS_OWNERDRAW,CRect(0,0,50,25),this,IDC_BACK_CARD);
	m_btBackCard.Create(TEXT("排序"),WS_CHILD|WS_CLIPSIBLINGS|WS_VISIBLE|WS_DISABLED|BS_OWNERDRAW,CRect(0,0,50,25),this,IDC_BACK_CARD);
	m_btThing.Create(TEXT("有事要走"),WS_CHILD|WS_CLIPSIBLINGS|WS_VISIBLE|WS_DISABLED|BS_OWNERDRAW,CRect(0,0,25,25),this,IDC_HAVE_THING);
	m_btStop.Create(TEXT("提前结束"),WS_CHILD|WS_CLIPSIBLINGS|WS_VISIBLE|WS_DISABLED|BS_OWNERDRAW,CRect(0,0,25,25),this,IDC_STOP);
	m_GameNoteView.Create(NULL,NULL,WS_CHILD|WS_CLIPSIBLINGS,CRect(0,0,0,0),this,50,NULL);
	m_GameNoteView.AutoSize();



	///m_btBackCard.LoadButtonBitmap(GetModuleHandle(CLIENT_DLL_NAME),IDB_BUTTON_BACKCARD,false);
	//m_btLastTurn.LoadButtonBitmap(GetModuleHandle(CLIENT_DLL_NAME),IDB_BUTTON_LASTTURN,false);		
//	m_btStop.EnableWindow(true);
	//移动位置
	m_btLastTurn.SetFont(&CGameImageLink::m_HFont);
	m_btBackCard.SetFont(&CGameImageLink::m_HFont);
	m_btThing.SetFont(&CGameImageLink::m_HFont);

	//建立客户扑克
	int iCreateIndex[4]={2,1,3,0};
	for (int i=0;i<4;i++)
	{
		m_UserCard[iCreateIndex[i]].Create(NULL,NULL,WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS,CRect(0,0,0,0),this,20+i,NULL);
		m_UserCard[iCreateIndex[i]].SetLookMode(false);
		m_UserCard[iCreateIndex[i]].SetShowCard(true);
	}

	///for (int i = 0;i < 3;i++)
	{
		///m_UserBackCard[i].Create(NULL,NULL,WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS,CRect(0,0,0,0),this,30+i,NULL);
		///m_UserBackCard[i].SetShowCard(true);
	}

	m_MeCard.Create(NULL,NULL,WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS,CRect(0,0,0,0),this,25,NULL);
	m_MeCard.InitGameCard(GetParent());
	m_MeBackCard.Create(NULL,NULL,WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS,CRect(0,0,0,0),this,26,NULL);
	m_MeBackCard.InitGameCard(GetParent());
	m_MeBackCard.SetShowCard(false);
	m_MeBackCard.SetUseMouse(false);
	m_MeBackCard.ShowWindow(SW_HIDE);


	
	///add扣牌
	m_MeKouCard.Create(NULL,NULL,WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS,CRect(0,0,0,0),this,27,NULL);
	m_MeKouCard.InitGameCard(GetParent());
	m_MeKouCard.SetShowCard(true);
	m_MeKouCard.SetUseMouse(false);
	/////
	

	//载入资源
	m_btOutCard.SetFont(&CGameImageLink::m_HFont);
	m_btGiveBack.SetFont(&CGameImageLink::m_HFont);
	m_btContinue.SetFont(&CGameImageLink::m_HFont);

	m_btPass.SetFont(&CGameImageLink::m_HFont);
	
	AfxSetResourceHandle(GetModuleHandle(NULL));

	//BYTE b[5]={2,7,9,10,11};
	//m_UserCard[0].SetCard(b,NULL,5);
	//m_UserCard[1].SetCard(b,NULL,5);
	//m_UserCard[2].SetCard(b,NULL,5);
	//m_UserCard[3].SetCard(b,NULL,5);
	//m_MeCard.SetCard(b,NULL,5);

	return 0;
}

void CClientPlayView::FixControlSize(int cx,int cy)
{
	if ((cx==0)||(cy==0)) return;
	CRect m_ClientRect;
	GetClientRect(&m_ClientRect);

	//修正位置
	cy-=90;
	m_ClientRect.bottom-=90;

	//扑克索引
	POINT ptCardPoint[4];

	//移动坐标
	int iMidLine=cy/2;
	int iBaseLine=(cy-362)/2;

	ptCardPoint[0].x=m_ClientRect.Width()/2;///cx/2;
	ptCardPoint[0].y=35+VIEW_FRAME_TOP+40;
//	iListState[0]=SW_MODE_CENTER;
	m_PtNt[0].x=cx/2-115;
	m_PtNt[0].y=15+VIEW_FRAME_TOP;
	m_PtNtLogo[0].x=m_ClientRect.Width()/2;
	m_PtNtLogo[0].y=32+VIEW_FRAME_TOP;
	m_PtLogo[0].x=m_ClientRect.Width()/2-50;
	m_PtLogo[0].y=15+VIEW_FRAME_TOP;
	m_PtName[0].x=m_ClientRect.Width()/2-10;
	m_PtName[0].y=15+VIEW_FRAME_TOP;
	m_PtTime[0].x=m_ClientRect.Width()/2-85;
	m_PtTime[0].y=15+VIEW_FRAME_TOP;
	m_PtAgree[0].x=m_ClientRect.Width()/2+25;
	m_PtAgree[0].y=30+VIEW_FRAME_TOP;
	
//	iListState[1]=SW_MODE_RIGHT;
	if (GetSystemMetrics(SM_CXSCREEN)>=1024)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -