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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tablepage.cpp

?? 網絡游戲建模書的源代碼
?? CPP
字號:
// tablepage.cpp : implementation file
//

#include "stdafx.h"
#include "..\gamehigh.h"
#include "..\include\tablepage.h"
#include "MainData.h"
#include "macros.h"
#include "mymemdc.h"


extern CGameHighApp	theApp;

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

/////////////////////////////////////////////////////////////////////////////
// CTablePage

IMPLEMENT_DYNCREATE(CTablePage, CView)

CTablePage::CTablePage()
{
	dwCurRoomID	=0;

	memset(pTableArray, 0, sizeof(CTable*) * MAX_TABLE);

	lpTabArray	=NULL;
}

CTablePage::~CTablePage()
{
	SAFE_DELETE_ARRAY(lpTabArray);

	for(int i= 0; i< MAX_TABLE; i++)
	{
		SAFE_CHECKPOINTER(pTableArray[i])
		{
			SAFE_CHECKWND(pTableArray[i])
			{
				pTableArray[i]->DestroyWindow();
			}
			SAFE_DELETE(pTableArray[i]);
		}
	}
}


BEGIN_MESSAGE_MAP(CTablePage, CView)
	//{{AFX_MSG_MAP(CTablePage)
	ON_WM_CREATE()
	ON_WM_VSCROLL()
	ON_WM_ERASEBKGND()
	ON_WM_MOUSEMOVE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTablePage drawing

void CTablePage::OnDraw(CDC* pDC)
{
	RECT	rect;
	memset(&rect, 0, sizeof(RECT));
	this->GetClientRect(&rect);

	CMyMemDC	memdc(pDC, rect);
	
	CBrush	m_Brush;
	m_Brush.CreateSolidBrush(RGB(16, 154, 148));
	memdc->FillRect(&rect, &m_Brush);
	
	int	nRowCount	=15;
	int	nColCount	=3;
	for(int i=0; i< nRowCount; i++)
	{
		for(int j=0; j< nColCount; j++)
		{
			SAFE_CHECKWND(pTableArray[i])
			{
				RECT	rcWnd;
				memset(&rcWnd, 0, sizeof(RECT));
				pTableArray[i * nColCount + j]->GetWindowRect(&rcWnd);
				this->ScreenToClient(&rcWnd);

				POINT	ptLeft;
				memset(&ptLeft, 0, sizeof(POINT));
				ptLeft.x	=rcWnd.left;
				ptLeft.y	=rcWnd.top;

				POINT	ptRight;
				memset(&ptRight, 0, sizeof(POINT));
				ptRight.x	=rcWnd.right;
				ptRight.y	=rcWnd.bottom;

				if(::PtInRect(&rect, ptLeft) ||
					::PtInRect(&rect, ptRight))
				{
					pTableArray[i * nColCount + j]->DrawTable(&memdc);
				}
			}
		}//end for j
	}//end for i
}

/////////////////////////////////////////////////////////////////////////////
// CTablePage diagnostics

#ifdef _DEBUG
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CTablePage message handlers

int CTablePage::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CView::OnCreate(lpCreateStruct) == -1)
		return -1;

	this->SetScrollRange(SB_VERT, 0, TABLE_HEIGHT * 15);

	int	nRowCount	=15;
	int	nColCount	=3;
	for(int i=0; i< nRowCount; i++)
	{
		for(int j=0; j< nColCount; j++)
		{
			CTable*	pTable	=new CTable();
			ASSERT(pTable);
			if(NULL != pTable)
			{
				POINT	ptStart;
				memset(&ptStart, 0, sizeof(POINT));
				ptStart.x	=j * TABLE_WIDTH;
				ptStart.y	=i * TABLE_HEIGHT;
				pTable->Create(ptStart, this);
				pTable->ModifyStyleEx(NULL, WS_EX_TRANSPARENT, 0);
				pTableArray[i * nColCount + j]	=pTable;
				pTableArray[i * nColCount + j]->SetDrawTargetWnd(this);
			}
		}
	}

	RECT	rect;
	memset(&rect, 0, sizeof(RECT));
	m_StartButton.Create("開始", WS_VISIBLE | WS_CHILD, rect, this, START_BUTTONID);
	m_StartButton.ShowWindow(SW_HIDE);
	return 0;
}

void CTablePage::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	SCROLLINFO si;
	GetScrollInfo(SB_VERT,&si);

	int	nPageHeight	=TABLE_HEIGHT;
	
	switch (nSBCode)
	{
	case SB_BOTTOM:
		si.nPos	=TABLE_HEIGHT * 15;
		break;
	case SB_ENDSCROLL:
		return;
	case SB_LINEDOWN:
		si.nPos++;
		break;
	case SB_LINEUP:
		si.nPos--;
		break;
	case SB_PAGEDOWN:
		si.nPos+=nPageHeight;
		break;
	case SB_PAGEUP:
		si.nPos-=nPageHeight;
		break;
	case SB_THUMBPOSITION:
		si.nPos = nPos;
		break;
	case SB_THUMBTRACK:
		si.nPos = nPos;
		break; ;
	case SB_TOP:
		si.nPos	=0;
		break;
	default:
		ASSERT(FALSE);
	}

	SetScrollInfo(SB_VERT,&si);	

	CalcTablePos();
//	CView::OnVScroll(nSBCode, nPos, pScrollBar);
}

BOOL CTablePage::CalcTablePos()
{
	SCROLLINFO si;
	GetScrollInfo(SB_VERT,&si);
	int	nZeroPoint	=si.nPos;

	int	nRowCount	=15;
	int	nColCount	=3;

	for(int i=0; i< nRowCount; i++)
	{
		for(int j=0; j< nColCount; j++)
		{
			SAFE_CHECKWND(pTableArray[i])
			{
				POINT	ptStart;
				memset(&ptStart, 0, sizeof(POINT));
				ptStart.x	=j * TABLE_WIDTH;
				ptStart.y	=i * TABLE_HEIGHT - nZeroPoint;

				RECT	rect;
				memset(&rect, 0, sizeof(RECT));
				rect.left	=ptStart.x;
				rect.top	=ptStart.y;
				rect.right	=rect.left	+ TABLE_WIDTH;
				rect.bottom	=rect.top	+ TABLE_HEIGHT;	
				pTableArray[i * nColCount + j]->MoveWindow(&rect, FALSE);
			}
		}//end for j
	}//end for i

	//移動按鈕
	CMainData*	pMainData	=theApp.GetMainData();
	ASSERT(pMainData);
	if(NULL == pMainData)
	{
		return TRUE;
	}
	
	LPGAMEHIGH_TABLE	lpTab	=pMainData->Attrib_GetMyTable();
	int					nPos	=pMainData->Attrib_GetMyPos();
	if(NULL != lpTab &&
		-1  != nPos)
	{
		CTable*	pTable		=FindTable(lpTab);		
		CButton*	pButton	=&m_StartButton;
		SAFE_CHECKWND(pButton)
		{
			LPRECT	lprc	=pTable->GetTextArray(nPos);
			
			RECT	rcButton;
			memset(&rcButton, 0, sizeof(RECT));
			::CopyRect(&rcButton, lprc);
			
			rcButton.bottom	=rcButton.top    + 22;
			rcButton.right	=rcButton.left	 + 38;
			
			pTable->ClientToScreen(&rcButton);
			this->ScreenToClient(&rcButton);
			
			pButton->MoveWindow(&rcButton);
		}
	}	

		
	this->Invalidate();
	return TRUE;
}

void CTablePage::SetRoomID(DWORD dwRoomID)
{
	dwRoomID	=dwRoomID;
	SAFE_CHECKWND(this)
	{
		CMainData*	pMainData	=theApp.GetMainData();
		SAFE_CHECKPOINTER(pMainData)
		{
			SAFE_DELETE_ARRAY(lpTabArray);

			int					nCount	=0;
			pMainData->Async_GameHigh_LoadTableFromRoom(dwRoomID, lpTabArray, nCount);

			if(nCount != MAX_TABLE)
			{
				ASSERT(NULL);
				return ;
			}
			SAFE_CHECKPOINTER(lpTabArray)
			{
				for(int i=0; i<nCount; i++)
				{
					pTableArray[i]->SetTable(&lpTabArray[i]);
				}
			}//end SAFE_CHECKPOINTER
		}	//end SAFE_CHECKPOINTER
	}//end SAFE_CHECKWND
}

void CTablePage::RefreshTable(LPGAMEHIGH_TABLE lpTab)
{
	ASSERT(lpTab);
	if(NULL == lpTab)
		return ;

	CTable*	pTable	=FindTable(lpTab);
	SAFE_CHECKWND(pTable)
	{
		RECT	rect;
		memset(&rect, 0, sizeof(RECT));
		pTable->GetWindowRect(&rect);
		this->ScreenToClient(&rect);
		this->InvalidateRect(&rect);
	}
}

CTable* CTablePage::FindTable(LPGAMEHIGH_TABLE lpTab)
{
	ASSERT(lpTab);
	if(NULL == lpTab)
		return NULL;
	for(int i=0; i<MAX_TABLE; i++)
	{
		if(lpTab == pTableArray[i]->GetTable())
		{
			return pTableArray[i];
		}
	}
	return NULL;
}

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

BOOL CTablePage::AutoJoin()
{
	CMainData*	pMainData	=theApp.GetMainData();
	if(NULL == pMainData)
		return FALSE;
	SAFE_CHECKPOINTER(pMainData->Attrib_GetMyTable())
	{	//用戶已經坐在桌子上了.
		return FALSE;
	}

	//優先法則的確定,要人數未滿4人,但人越多為準

	return FALSE;
}

LRESULT CTablePage::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
	CMainData*	pMainData	=theApp.GetMainData();
	if(NULL == pMainData)
	{
		return CView::WindowProc(message, wParam, lParam);
	}

	switch(message)
	{
	case WM_TABLE_SITDOWN:
		{
			OnTableSitDown(wParam, lParam);
		}
		break;
	case WM_COMMAND:
		{
			if(HIWORD(wParam) == BN_CLICKED && 
				START_BUTTONID == LOWORD(wParam))
			{
				CButton*	pButton	=&m_StartButton;
				SAFE_CHECKWND(pButton)
				{
					pButton->ShowWindow(SW_HIDE);
					//Start JQ
					DWORD	nDllIndex	=dwCurRoomID / 1000;
					HMODULE	hMoudal		=NULL;
					switch(nDllIndex)
					{
					case 0:
						{
							hMoudal		=theApp.hJQLib;
						}
						break;
					default:
						break;
					}
#ifdef _DEBUG		//debug code
					LPGAMEHIGH_TABLE	lpTable	=pMainData->Attrib_GetMyTable();


#else				//release
					SAFE_CHECKPOINTER(hMoudal)
					{
						STARTMODUAL	startModual	=(STARTMODUAL)::GetProcAddress(hMoudal, "StartModual");
						SAFE_CHECKPOINTER(startModual)
						{
							startModual(pMainData->Attrib_GetMyTable(), pMainData->Attrib_GetMyID());
						}	
					}
#endif	
				}	//end safe_checkwnd(pbutton);
			}//end if highword
		}//end case
		break;
	default:
		break;
	}
	return CView::WindowProc(message, wParam, lParam);
}

void CTablePage::OnTableSitDown(WPARAM wParam, LPARAM lParam)
{
	CTable*	pTable	=(CTable*)wParam;
	SAFE_CHECKFALSEWND(pTable)
	{
		return ;
	}

	CMainData*	pMainData	=theApp.GetMainData();
	ASSERT(pMainData);
	if(NULL == pMainData)
	{
		return ;
	}

	//先清除舊的狀態
	LPGAMEHIGH_TABLE	lpOldTab	=NULL;
	lpOldTab						=pMainData->Attrib_GetMyTable();
	
	SAFE_CHECKPOINTER(lpOldTab)
	{
		pMainData->Implemen_StandUp(lpOldTab);
		
		SAFE_CHECKWND(this)
		{
			this->RefreshTable(lpOldTab);
		}
	}

	//設置自已的狀態
	LPGAMEHIGH_TABLE	lpTable	=pTable->GetTable();
	if(NULL == lpTable)
	{
		return ;
	}
	
	strcpy(lpTable->userStatus[lParam].userID, pMainData->Attrib_GetMyID());
				
	LPGAMEHIGH_USERINFO	lpinfo	=pMainData->Attrib_GetMyInfo();
	SAFE_CHECKPOINTER(lpinfo)
	{
		strcpy(lpTable->userStatus[lParam].userName, lpinfo->userName);
	}
	pMainData->Attrib_SetMyTable(lpTable);

	//m_StartButton
	CButton*	pButton	=&m_StartButton;
	SAFE_CHECKWND(pButton)
	{
		LPRECT	lprc	=pTable->GetTextArray(lParam);

		RECT	rcButton;
		memset(&rcButton, 0, sizeof(RECT));
		::CopyRect(&rcButton, lprc);

		rcButton.bottom	=rcButton.top    + 22;
		rcButton.right	=rcButton.left	 + 38;

		pTable->ClientToScreen(&rcButton);
		this->ScreenToClient(&rcButton);

		pButton->MoveWindow(&rcButton);
		pButton->ShowWindow(SW_SHOW);
		pButton->BringWindowToTop();
	}
				
	//刷新窗口區
	RECT rcWnd;
	memset(&rcWnd, 0, sizeof(RECT));
	pTable->GetWindowRect(&rcWnd);
	this->ScreenToClient(&rcWnd);
	this->InvalidateRect(&rcWnd);
	
}

void CTablePage::OnMouseMove(UINT nFlags, CPoint point) 
{
	CView::OnMouseMove(nFlags, point);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久精品欧美丰满| 国产在线精品一区二区三区不卡| 青青草国产精品亚洲专区无| 夫妻av一区二区| 欧美精品v日韩精品v韩国精品v| 国产农村妇女毛片精品久久麻豆| 日韩电影在线免费| 91丝袜高跟美女视频| 国产女人水真多18毛片18精品视频| 日本不卡123| 在线看日本不卡| 国产精品久久久久久久久免费樱桃| 麻豆视频观看网址久久| 欧美色图第一页| 亚洲视频综合在线| 国产99久久久国产精品潘金| 欧美大片国产精品| 麻豆精品一二三| 欧美一三区三区四区免费在线看 | 国产日本亚洲高清| 久久精品国产在热久久| 欧美绝品在线观看成人午夜影视| 一区免费观看视频| www.亚洲激情.com| 国产精品福利一区| 处破女av一区二区| 国产精品乱人伦中文| 国产毛片精品国产一区二区三区| 精品国产乱码久久久久久久久| 亚洲第一成人在线| 欧美日韩视频不卡| 天堂蜜桃91精品| 欧美剧情电影在线观看完整版免费励志电影| 中文字幕亚洲成人| 日本福利一区二区| 亚洲123区在线观看| 欧美精品丝袜中出| 奇米精品一区二区三区在线观看一| 91精品国产综合久久小美女 | 亚洲乱码国产乱码精品精98午夜| 91网站在线观看视频| 亚洲欧美视频在线观看| 色综合久久综合网97色综合| 一区二区在线观看不卡| 欧美在线观看一区| 日韩激情视频在线观看| 日韩欧美不卡一区| 国产九九视频一区二区三区| 中文字幕免费观看一区| 91理论电影在线观看| 亚洲午夜久久久久中文字幕久| 欧美男生操女生| 日本欧美肥老太交大片| 久久亚洲精华国产精华液 | 国产成人av资源| 中文字幕中文乱码欧美一区二区| 色欧美片视频在线观看| 亚洲gay无套男同| 久久在线观看免费| 99r国产精品| 日韩av电影天堂| 国产精品毛片久久久久久| 91丝袜呻吟高潮美腿白嫩在线观看| 亚洲免费电影在线| 欧美大胆人体bbbb| 成人免费观看av| 日韩av一区二区三区四区| 国产午夜精品理论片a级大结局| 成人av免费网站| 丝瓜av网站精品一区二区 | gogogo免费视频观看亚洲一| 一区二区三区成人在线视频| 精品福利一区二区三区免费视频| 成人一区二区三区视频在线观看| 一区二区成人在线| 国产三级精品视频| 欧美精品成人一区二区三区四区| 粗大黑人巨茎大战欧美成人| 五月婷婷色综合| 国产精品久久久久久久久免费相片 | 成人av网址在线观看| 午夜精品久久久久久久久久| 国产日韩成人精品| 欧美一区二区三区日韩| 99久久婷婷国产综合精品| 老司机一区二区| 亚洲成在人线在线播放| 国产精品久久久久久户外露出 | 精品一区二区在线观看| 一区二区久久久久| 国产视频在线观看一区二区三区| 欧美高清性hdvideosex| 91农村精品一区二区在线| 国产精品一二三四五| 日韩精品电影在线观看| 婷婷开心激情综合| 亚洲另类一区二区| 国产农村妇女毛片精品久久麻豆| 日韩一区二区三区免费观看| 色老综合老女人久久久| 不卡视频一二三| 成人看片黄a免费看在线| 久久成人18免费观看| 丝瓜av网站精品一区二区| 亚洲午夜久久久久中文字幕久| 中文字幕日韩av资源站| 亚洲国产精品精华液ab| 国产日韩精品一区二区三区 | 久久综合久久99| 欧美mv和日韩mv的网站| 51久久夜色精品国产麻豆| 欧美日韩三级视频| 3751色影院一区二区三区| 欧美日韩你懂的| 欧美一区二区三区日韩视频| 67194成人在线观看| 日韩精品一区二区在线观看| 日韩欧美高清一区| 国产亚洲欧美一区在线观看| www激情久久| 久久免费视频色| 国产亚洲欧美激情| 中文字幕乱码日本亚洲一区二区 | 精品捆绑美女sm三区| 日韩精品一区二区三区视频播放| 日韩精品在线看片z| 精品久久久久久久久久久久包黑料 | 午夜欧美一区二区三区在线播放| 亚洲一级二级三级| 亚洲gay无套男同| 久久精品国产精品亚洲综合| 国产在线播放一区三区四| 不卡一二三区首页| 欧美久久久一区| 久久综合色之久久综合| 中文字幕一区二区三区精华液| 亚洲免费av高清| 青草av.久久免费一区| 国产成人丝袜美腿| 在线观看免费视频综合| 欧美成人官网二区| 亚洲欧洲国产专区| 午夜精品久久久久久久| 极品少妇xxxx精品少妇| 99久久er热在这里只有精品66| 欧美影院午夜播放| 久久久精品中文字幕麻豆发布| 综合电影一区二区三区| 日韩二区在线观看| 99久久精品国产精品久久| 91精品久久久久久久久99蜜臂| 国产亚洲va综合人人澡精品| 一区二区三区在线不卡| 狠狠色丁香久久婷婷综| 91福利精品视频| 久久女同性恋中文字幕| 一区二区三区在线视频播放| 精品一区二区三区免费观看| 99国产精品视频免费观看| 日韩一卡二卡三卡四卡| 亚洲视频香蕉人妖| 精品一区二区三区不卡| 欧洲国内综合视频| 中文字幕久久午夜不卡| 性做久久久久久久免费看| 大陆成人av片| 精品电影一区二区| 亚洲精品五月天| 国产精品77777| 欧美日韩国产色站一区二区三区| 久久久精品免费观看| 日韩激情一区二区| 色视频成人在线观看免| 亚洲国产精品99久久久久久久久| 日本不卡123| 91麻豆福利精品推荐| 精品国产乱码久久久久久免费| 亚洲一区二区美女| 成人sese在线| 国产午夜精品久久久久久久| 男人的天堂久久精品| 在线观看视频一区二区| 亚洲欧美一区二区视频| 国产一区在线不卡| 日韩一区二区电影网| 日韩精品一二三| 91国产视频在线观看| 国产欧美日韩视频在线观看| 国产美女一区二区三区| 日韩欧美黄色影院| 蜜桃传媒麻豆第一区在线观看| 一本到一区二区三区| **性色生活片久久毛片| jizz一区二区| 亚洲另类一区二区| 99久久精品免费| 一区二区三区免费观看| 97久久精品人人澡人人爽| 最新日韩av在线| 91浏览器打开|