亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? table.cpp

?? 網(wǎng)絡(luò)游戲建模書的源代碼
?? CPP
字號:
// table.cpp : implementation file
//

#include "stdafx.h"
#include "..\gamehigh.h"
#include "..\include\table.h"
#include "mymemdc.h"
#include "faceList.h"
#include "basefunction.h"
#include "TablePage.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CTable
extern CFaceList*	gpFaceList;
extern CGameHighApp	theApp;

CTable::CTable()
{
	hHandCur	=NULL;
	lpTable		=NULL;

	memset(&rcEmpty, 0, sizeof(RECT));
	rcEmpty.left	=50;
	rcEmpty.top		=50;
	rcEmpty.right	=rcEmpty.left + 50;
	rcEmpty.bottom	=rcEmpty.top  + 50;

	memset(rcPosArray, 0, sizeof(RECT) * MAX_TABCONTAIN);

	rcPosArray[0].left		=15;
	rcPosArray[0].top		=55;
	rcPosArray[0].right		=rcPosArray[0].left + 32;
	rcPosArray[0].bottom	=rcPosArray[0].top + 32;

	rcPosArray[1].left		=58;
	rcPosArray[1].top		=15;
	rcPosArray[1].right		=rcPosArray[1].left	+ 32;
	rcPosArray[1].bottom	=rcPosArray[1].top	+ 32;

	rcPosArray[2].left		=105;
	rcPosArray[2].top		=55;
	rcPosArray[2].right		=rcPosArray[2].left + 32;
	rcPosArray[2].bottom	=rcPosArray[2].top + 32;

	rcPosArray[3].left		=58;
	rcPosArray[3].top		=100;
	rcPosArray[3].right		=rcPosArray[3].left + 32;
	rcPosArray[3].bottom	=rcPosArray[3].top  + 32;

	memset(rcTextArray, 0, sizeof(RECT) * MAX_TABCONTAIN);

	rcTextArray[0].left		=5;
	rcTextArray[0].top		=5;
	rcTextArray[0].right	=rcTextArray[0].left + 32;
	rcTextArray[0].bottom	=rcTextArray[0].top  + 32;

	rcTextArray[1].left		=110;
	rcTextArray[1].top		=5;
	rcTextArray[1].right	=rcTextArray[1].left + 32;
	rcTextArray[1].bottom	=rcTextArray[1].top  + 32;

	rcTextArray[2].left		=110;
	rcTextArray[2].top		=105;
	rcTextArray[2].right	=rcTextArray[2].left + 32;
	rcTextArray[2].bottom	=rcTextArray[2].top  + 32;

	rcTextArray[3].left		=5;
	rcTextArray[3].top		=105;
	rcTextArray[3].right	=rcTextArray[3].left + 32;
	rcTextArray[3].bottom	=rcTextArray[3].top  + 32;

	uBkIndex		=0;

	pTargetWnd		=NULL;
	if(NULL == hHandCur)
	{
		hHandCur	=::LoadCursor(::AfxGetInstanceHandle(), MAKEINTRESOURCE(IDC_MYHAND));
	}
}

CTable::~CTable()
{
	SAFE_CHECKPOINTER(hHandCur)
	{
		::DestroyCursor(hHandCur);
		hHandCur	=NULL;
	}
}


BEGIN_MESSAGE_MAP(CTable, CWnd)
	//{{AFX_MSG_MAP(CTable)
	ON_WM_PAINT()
	ON_WM_SETCURSOR()
	ON_WM_MOUSEMOVE()
	ON_WM_CREATE()
	ON_WM_LBUTTONUP()
	ON_WM_LBUTTONDOWN()
	ON_WM_ERASEBKGND()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


/////////////////////////////////////////////////////////////////////////////
// CTable message handlers

BOOL CTable::Create(const POINT& ptStart, CWnd* pParentWnd) 
{
	RECT	rect;
	memset(&rect, 0, sizeof(rect));
	::memcpy(&rect, &ptStart, sizeof(POINT));
	rect.right	=rect.left	+	TABLE_WIDTH;
	rect.bottom	=rect.top	+	TABLE_HEIGHT;
	DWORD	dwStyle	=WS_CHILD | WS_VISIBLE;
	return CWnd::Create(NULL, NULL, dwStyle, rect, pParentWnd, 0, NULL);
}

void CTable::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
}

void CTable::SetTable(LPGAMEHIGH_TABLE lpTab)
{
	ASSERT(lpTab);
	SAFE_CHECKPOINTER(lpTab)
	{
		lpTable	=lpTab;
	}
}

LPGAMEHIGH_TABLE CTable::GetTable()
{
	return lpTable;
}

BOOL CTable::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 
{
	// TODO: Add your message handler code here and/or call default
	
	return CWnd::OnSetCursor(pWnd, nHitTest, message);
}

void CTable::OnMouseMove(UINT nFlags, CPoint point) 
{
	if(MK_LBUTTON == nFlags)
	{
		::SetCursor(::LoadCursor(NULL, IDC_ARROW));
		return ;
	}

	POINT	ptMouse;
	memset(&ptMouse, 0, sizeof(ptMouse));
	::GetCursorPos(&ptMouse);
	
	if(this->GetSafeHwnd() == ::WindowFromPoint(ptMouse))
	{
		RECT	rect;
		memset(&rect, 0, sizeof(rect));
		
		this->GetWindowRect(&rect);
		
		if(::PtInRect(&rect, ptMouse) && !::PtInRect(&rcEmpty, point))
		{
			::SetCursor(hHandCur);
		}
		else
		{
			::SetCursor(::LoadCursor(NULL, IDC_ARROW));
		}
	}
	CWnd::OnMouseMove(nFlags, point);
}

int CTable::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	return 0;
}

void CTable::DrawTable(CDC *pDC)
{
	ASSERT(pDC);
	if(NULL == pDC)
	{
		return ;
	}

	if(NULL == lpTable)
	{
		return ;
	}

	if(NULL == gpFaceList)
	{
		return ;
	}

	//首先繪畫背景顏色
	COLORREF	clrBk	=RGB(18, 153, 145);
	CBrush	m_Brush;
	m_Brush.CreateSolidBrush(clrBk);
	
	RECT	rect;
	memset(&rect, 0, sizeof(RECT));
	this->GetClientRect(&rect);
	SAFE_CHECKWND(pTargetWnd)
	{
		this	  ->ClientToScreen(&rect);
		pTargetWnd->ScreenToClient(&rect);
	}

	pDC->FillRect(&rect, &m_Brush);
	m_Brush.DeleteObject();

	m_Brush.CreateSolidBrush(RGB(0, 128, 128));
	for(int i=0; i<MAX_TABCONTAIN; i++)
	{
		RECT	rcTemp;
		memset(&rcTemp, 0, sizeof(RECT));
		::CopyRect(&rcTemp, &(rcPosArray[i]));
		SAFE_CHECKWND(pTargetWnd)
		{
			this	  ->ClientToScreen(&rcTemp);
			pTargetWnd->ScreenToClient(&rcTemp);
		}
		pDC->FillRect(&rcTemp, &m_Brush);	
	}
	m_Brush.DeleteObject();

	CImageList*	pBkImgList	=gpFaceList->GetBkImgList();
	if(NULL != pBkImgList 
		&& pBkImgList->GetSafeHandle() 
		&& 0 < pBkImgList->GetImageCount())
	{
		RECT	rcTemp;
		memset(&rcTemp, 0, sizeof(RECT));
		::CopyRect(&rcTemp, &(rcEmpty));
		SAFE_CHECKWND(pTargetWnd)
		{
			this	  ->ClientToScreen(&rcTemp);
			pTargetWnd->ScreenToClient(&rcTemp);
		}

		HICON	hIcon	=pBkImgList->ExtractIcon(uBkIndex);
		SAFE_CHECKPOINTER(hIcon)
		{
			::DrawIconEx(pDC->GetSafeHdc(), rcTemp.left, rcTemp.top, hIcon, 
				BKICON_SIZE, BKICON_SIZE, 0, NULL, DI_NORMAL); 
			::DestroyIcon(hIcon);
			hIcon	=NULL;
		}
	}

	//繪畫桌子上的人
	CImageList*	pImgList1	=gpFaceList->GetImageList1();
	if(NULL == pImgList1 ||
		NULL == pImgList1->GetSafeHandle() ||
		0    >= pImgList1->GetImageCount())
		return ;

	HICON	hIcon	=pImgList1->ExtractIcon(0);
	SAFE_CHECKPOINTER(hIcon)
	{
		for(i=0; i<MAX_TABCONTAIN; i++)
		{
			if(0 != strlen(lpTable->userStatus[i].userID))
			{
				RECT	rcTemp;
				memset(&rcTemp, 0, sizeof(RECT));
				::CopyRect(&rcTemp, &(rcPosArray[i]));
				SAFE_CHECKWND(pTargetWnd)
				{
					this	  ->ClientToScreen(&rcTemp);
					pTargetWnd->ScreenToClient(&rcTemp);
				}

				::DrawIconEx(pDC->GetSafeHdc(), rcTemp.left, rcTemp.top, hIcon, 
					LARGEICON_SIZE, LARGEICON_SIZE, 0, NULL, DI_NORMAL); 
			}
		}
		::DestroyIcon(hIcon);
		hIcon	=NULL;
	}

	LOGFONT	lf;
	memset(&lf, 0, sizeof(LOGFONT));
	if(IsWin9x())
	{
		lf.lfHeight	=15;
	}
	else
	{
		lf.lfHeight	=14;
	}

	CFont	m_Font;
	m_Font.CreateFontIndirect(&lf);
	CFont*	pOldFont	=pDC->SelectObject(&m_Font);

	pDC->SetBkMode(TRANSPARENT);

	char buffer[256];
	memset(buffer, 0, sizeof(char) * 256);
	for(i=0; i<MAX_TABCONTAIN; i++)
	{
		RECT	rcTemp;
		memset(&rcTemp, 0, sizeof(RECT));
		::CopyRect(&rcTemp, &(rcTextArray[i]));
		SAFE_CHECKWND(pTargetWnd)
		{
			this	  ->ClientToScreen(&rcTemp);
			pTargetWnd->ScreenToClient(&rcTemp);
		}

		memset(buffer, 0, sizeof(char) * 256);
		if(0 != strlen(lpTable->userStatus[i].userName))
		{
			wsprintf(buffer, "%s", lpTable->userStatus[i].userName);
		}
		else 
			if(0 != strlen(lpTable->userStatus[i].userID))
		{
			wsprintf(buffer, "%s", lpTable->userStatus[i].userID);
		}
		
		pDC->DrawText(buffer, &(rcTemp), DT_WORDBREAK);
	}

	memset(&rect, 0, sizeof(RECT));
	this->GetClientRect(&rect);
	rect.top	=rect.bottom - 16;
	
	SAFE_CHECKWND(pTargetWnd)
	{
		this		->ClientToScreen(&rect);
		pTargetWnd	->ScreenToClient(&rect);
	}
	
	memset(buffer, 0, sizeof(char) * 256);
	wsprintf(buffer, "- %d -", lpTable->tableID + 1);
	pDC->DrawText(buffer, &rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);

	pDC->SelectObject(pOldFont);
	m_Font.DeleteObject();
}



void CTable::OnLButtonUp(UINT nFlags, CPoint point) 
{
		
	CWnd::OnLButtonUp(nFlags, point);
}

void CTable::OnLButtonDown(UINT nFlags, CPoint point) 
{
	POINT	ptMouse;
	memset(&ptMouse, 0, sizeof(ptMouse));
	::GetCursorPos(&ptMouse);
	if(this->GetSafeHwnd() != ::WindowFromPoint(ptMouse))
	{
		return ;
	}
	CMainData*	pMainData	=theApp.GetMainData();
	ASSERT(pMainData);
	if(NULL == pMainData)
	{
		return ;
	}

	LPGAMEHIGH_TABLE	lpOldTab	=NULL;
	lpOldTab						=pMainData->Attrib_GetMyTable();
	for(int i=0; i<	MAX_TABCONTAIN; i++)
	{
		RECT	rect;
		memset(&rect, 0, sizeof(RECT));
		::CopyRect(&rect, &(rcPosArray[i]));
	
		if(::PtInRect(&rect, point))
		{
			if(NULL != lpTable &&
				0 == strlen(lpTable->userStatus[i].userID))
			{	//用戶坐到這張桌子上

				CWnd*	pWnd	=this->GetParent();
				SAFE_CHECKWND(pWnd)
				{
					pWnd->PostMessage(WM_TABLE_SITDOWN, (WPARAM)this, i);
				}
				break;
			} // end if(NULL != lpTable
		}//end if ptinrect
	}//end for

	CWnd::OnLButtonDown(nFlags, point);
}

LRESULT CTable::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
	return CWnd::WindowProc(message, wParam, lParam);
}

BOOL CTable::OnEraseBkgnd(CDC* pDC) 
{
	return TRUE;
}

void CTable::SetDrawTargetWnd(CWnd *pWnd)
{
	SAFE_CHECKWND(pWnd)
	{
		pTargetWnd	=pWnd;
	}
}

LPRECT CTable::GetTextArray(int nIndex)
{
	if(nIndex > 0 &&
		nIndex < MAX_TABCONTAIN)
	{
		return &rcTextArray[nIndex];
	}
	return NULL;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲1区2区3区4区| 欧美自拍丝袜亚洲| 国产最新精品免费| 久久99热国产| 国产精品一二一区| 国产精品一二三| 国产激情一区二区三区四区 | 综合av第一页| 国产日韩欧美不卡在线| 国产午夜精品久久久久久免费视 | 久久精品一区蜜桃臀影院| 亚洲精品一线二线三线无人区| 日韩欧美国产系列| 久久日韩精品一区二区五区| 久久一区二区三区国产精品| 国产色91在线| 国产精品久久久久久久裸模| 亚洲三级电影全部在线观看高清| 亚洲精品欧美激情| 视频一区免费在线观看| 久久99精品国产91久久来源| 国产一区二区在线影院| 丁香啪啪综合成人亚洲小说| 色丁香久综合在线久综合在线观看| 欧美日韩一级片网站| 精品国产99国产精品| 国产精品美女久久久久久| 亚洲一卡二卡三卡四卡| 秋霞影院一区二区| 成人性生交大片免费看视频在线| 99久久777色| 欧美乱妇一区二区三区不卡视频| 欧美电视剧在线看免费| 国产精品欧美极品| 亚洲成人在线免费| 国产一区日韩二区欧美三区| av在线播放一区二区三区| 欧美欧美午夜aⅴ在线观看| 精品粉嫩aⅴ一区二区三区四区| 国产精品网友自拍| 日韩专区中文字幕一区二区| 国产福利91精品一区| 欧美视频中文字幕| 久久亚洲二区三区| 亚洲欧美电影一区二区| 免费观看成人鲁鲁鲁鲁鲁视频| www.99精品| 精品少妇一区二区三区免费观看| 国产精品国产三级国产普通话三级| 午夜精品久久久久影视| 国产成人a级片| 91麻豆精品国产91久久久资源速度| 国产欧美一区二区精品性色 | 国产精品一区二区男女羞羞无遮挡| 色天使色偷偷av一区二区| 欧美大片日本大片免费观看| 国产精品久久久久9999吃药| 美女视频黄a大片欧美| 色婷婷av一区二区三区gif| 亚洲精品一区在线观看| 午夜视频在线观看一区二区| av亚洲产国偷v产偷v自拍| 日韩三区在线观看| 亚洲激情综合网| 国产 欧美在线| 欧美一级淫片007| 亚洲综合另类小说| 99久久777色| 欧美韩国日本综合| 久久精品噜噜噜成人av农村| 在线观看欧美精品| 日韩理论片在线| 国产成人免费高清| 精品成人一区二区三区四区| 婷婷成人激情在线网| 91行情网站电视在线观看高清版| 国产精品天天看| 国产精品18久久久久久久久久久久 | 国产一区二区精品久久| 欧美一区二区在线看| 亚洲国产另类av| 色老汉一区二区三区| 国产精品欧美综合在线| 福利电影一区二区| 久久亚洲精品小早川怜子| 麻豆久久久久久| 欧美一区二区三区四区视频| 亚洲午夜精品17c| 在线一区二区三区四区五区 | 国产在线视频精品一区| 日韩欧美一区二区不卡| 无码av免费一区二区三区试看 | 日韩欧美资源站| 五月天一区二区| 正在播放亚洲一区| 婷婷久久综合九色综合伊人色| 欧美三级日韩三级国产三级| 亚洲国产精品久久一线不卡| 欧美性做爰猛烈叫床潮| 一区二区激情视频| 欧美这里有精品| 亚洲午夜在线电影| 欧美日韩黄色影视| 日韩精品视频网站| 欧美一级片在线看| 久久99在线观看| 久久精品欧美一区二区三区麻豆| 国产美女av一区二区三区| 久久综合色鬼综合色| 成人做爰69片免费看网站| 中文字幕一区二区视频| 91在线观看一区二区| 一区二区三区四区高清精品免费观看 | 国产成人午夜视频| 国产精品福利一区| 在线看一区二区| 午夜国产精品一区| 日韩精品一区二| 国产精品白丝jk白祙喷水网站| 中文字幕av不卡| 91国内精品野花午夜精品| 午夜精品久久久久影视| 日韩三级av在线播放| 国产麻豆一精品一av一免费 | 成人国产在线观看| 亚洲欧洲综合另类| 在线成人高清不卡| 精一区二区三区| 国产精品超碰97尤物18| 欧美另类videos死尸| 久久国产精品露脸对白| 中文字幕成人av| 欧美色老头old∨ideo| 韩国三级中文字幕hd久久精品| 国产精品久久久久毛片软件| 欧美三级日韩三级| 国产一区二区在线免费观看| 中文字幕日本乱码精品影院| 欧美情侣在线播放| 国产福利一区二区三区视频在线| 一区二区不卡在线播放| 欧美电影免费观看高清完整版在 | 中文字幕不卡的av| 欧亚洲嫩模精品一区三区| 日本aⅴ免费视频一区二区三区| 久久久午夜精品| 91成人免费在线| 久久99久久精品欧美| 亚洲久草在线视频| 日韩欧美色综合| 91色视频在线| 韩日精品视频一区| 亚洲国产色一区| 久久精品欧美日韩| 欧美日韩黄色一区二区| 高清国产一区二区三区| 日韩精品一二三区| 亚洲丝袜制服诱惑| 亚洲精品一线二线三线无人区| 91成人网在线| 成人永久免费视频| 蜜臀av性久久久久av蜜臀妖精| 成人免费在线视频| 久久午夜老司机| 91精品国产色综合久久久蜜香臀| 丁香激情综合国产| 蜜臀精品久久久久久蜜臀 | 全国精品久久少妇| 亚洲激情六月丁香| 国产农村妇女精品| 欧美成人一区二区三区在线观看 | 日韩欧美你懂的| 91极品美女在线| 处破女av一区二区| 久久99精品一区二区三区三区| 亚洲国产wwwccc36天堂| 国产精品你懂的在线欣赏| 精品国产精品一区二区夜夜嗨| 欧美亚洲综合色| 99免费精品在线观看| 国产福利一区二区| 国产综合成人久久大片91| 欧美aaaaaa午夜精品| 亚洲成av人片在线观看无码| 17c精品麻豆一区二区免费| 国产亚洲成av人在线观看导航| 91精品国产综合久久久久久久久久| 欧美亚洲另类激情小说| 色综合色综合色综合色综合色综合| 国产成a人亚洲| 国产一区二区三区黄视频| 美女久久久精品| 日韩影院精彩在线| 性做久久久久久免费观看欧美| 一区二区激情小说| 一区二区在线观看免费 | 91免费观看视频在线| 成人午夜激情在线| 成人高清免费观看| 丁香桃色午夜亚洲一区二区三区|