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

📄 wndplay.h

📁 caro program is written by VC++ and AI
💻 H
字号:
/****************************************************************************/
//
// ~~~~~~~~~~~~~~~~ Window Play's Functions I ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ~~~~~~~~~~~~~~~~ Window Credit's Functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//							WndPlay.h
//
//***************************************************************************/



//***************************************************************************/
// ~~~~~~~~~~~~~~~~ Window Play's Functions I ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#include "wndplay2.h"

//////////////////////////////////////////////////////////////////////////////
// WndPlay Paint Message
void Play_Paint()
{
HDC hDC;
PAINTSTRUCT ps;
int x, y ,i;

	hDC=BeginPaint(WndPlay.hWnd ,&ps);

	for(x=0; x < setting.iBlock; x++)
		for(y=0; y < setting.iBlock; y++)
		{
			MyRectangle(hDC,(x)*XBLOCK,(y)*XBLOCK,(x+1)*XBLOCK+1,(y+1)*XBLOCK+1, skin.crBlockBorder,skin.crBlock);
		}

	// Draw Win Line
	if(play.fWin == 1)
	{
		for( i=0; i<4 ; i++ )
			if(play.pSWin[i].x >=0 )
				MyLineEx(hDC, play.pSWin[i].x +1 , play.pSWin[i].y +1 , play.pEWin[i].x +1 , play.pEWin[i].y +1 , PS_SOLID, XBLOCK /2 , play.iWinner == 0 ? skin.crPColor[1] : skin.crPColor[0] );
	}

	for(x=0; x < setting.iBlock; x++)
		for(y=0; y < setting.iBlock; y++)
		{
			if( pBlock(x,y) >=0 )
			{
				DrawBlock( (x)*XBLOCK, (y)*XBLOCK, pBlock(x,y), skin.crPColor[ pBlock( x, y )] );
			}
		}

	// Draw Mouse HiLight
	MyRectangle(hDC, (ec.pMouse.x )*XBLOCK, (ec.pMouse.y )*XBLOCK, (ec.pMouse.x + 1)*XBLOCK+1, (ec.pMouse.y + 1)*XBLOCK+1, skin.crBlock, skin.crMouse);
		
	if( pBlock(ec.pMouse.x, ec.pMouse.y) >=0 &&  pBlock(ec.pMouse.x, ec.pMouse.y) < MAX_PLAYER )
		DrawBlock((ec.pMouse.x)*XBLOCK, (ec.pMouse.y)*XBLOCK, pBlock(ec.pMouse.x , ec.pMouse.y ), skin.crBlock );
	else
		DrawBlock( (ec.pMouse.x)*XBLOCK , (ec.pMouse.y)*XBLOCK , play.iTurn ,
			RGB ( 
				min( 255, ( GetRValue(skin.crPColor[play.iTurn] ) + GetRValue(skin.crMouse ) )/2 ),
				min( 255, ( GetGValue(skin.crPColor[play.iTurn] ) + GetGValue(skin.crMouse ) )/2 ),
				min( 255, ( GetBValue(skin.crPColor[play.iTurn] ) + GetBValue(skin.crMouse ) )/2 )
				) 
			);

	EndPaint(WndPlay.hWnd , &ps);
}

//////////////////////////////////////////////////////////////////////////////
// WndPlay Mouse Move Message
void Play_MouseMove(LPARAM lParam)
{
	if( GetAsyncKeyState(VK_LBUTTON)<0 && ( ec.poDrag.x != LOWORD(lParam) / XBLOCK || ec.poDrag.y != HIWORD(lParam) / XBLOCK) )
	{
		ec.fDrag = TRUE;

		SetClassLong(WndPlay.hWnd , GCL_HCURSOR, (LONG) LoadCursor(ec.hInst ,"IDC_MOVE"));

		play.siHPlay += ec.poDrag.x - LOWORD(lParam) / XBLOCK;
		play.siVPlay += ec.poDrag.y - HIWORD(lParam) / XBLOCK;

		SendMessage(WndChild.hWnd , WM_SIZE, 0, 0 );
	}
	else
	{
		
		ec.poDrag.x = LOWORD(lParam) / XBLOCK;
		ec.poDrag.y = HIWORD(lParam) / XBLOCK;

		if(!play.fWin && !play.fComPlay && !play.fKey )
		{
			MoveHiLight( min(LOWORD(lParam) / XBLOCK , setting.iBlock),
				min(HIWORD(lParam) / XBLOCK , setting.iBlock) );

			// Set Track Mouse Event ---- Need for WM_MOUSELEAVE
			CheckMouseLeave(WndPlay.hWnd);
		}
	}
}

//////////////////////////////////////////////////////////////////////////////
// WndPlay Mouse Leave Message
void Play_MouseLeave()
{
HDC hDC;

	ec.fDrag = FALSE;
	SetClassLong(WndPlay.hWnd , GCL_HCURSOR, (LONG) LoadCursor(ec.hInst , "IDC_CURSOR"));

	if( !play.fKey )
	{
		hDC = GetDC(WndPlay.hWnd );
		MyRectangle(hDC, (ec.pMouse.x)*XBLOCK, (ec.pMouse.y)*XBLOCK, (ec.pMouse.x+ 1)*XBLOCK+1, (ec.pMouse.y + 1)*XBLOCK+1, skin.crBlockBorder, skin.crBlock);
		if( pBlock(ec.pMouse.x, ec.pMouse.y) >=0 )
		{
			DrawBlock((ec.pMouse.x)*XBLOCK, (ec.pMouse.y)*XBLOCK, pBlock(ec.pMouse.x , ec.pMouse.y ), skin.crPColor[ pBlock( ec.pMouse.x , ec.pMouse.y )] );
		}
		ec.pOld.x = -1;
		ec.pOld.y= -1;
		ec.pMouse.x = -1;
		ec.pMouse.y= -1;
		ReleaseDC(WndPlay.hWnd , hDC);

		// Set status
		ShowStatus(DEFAULT_STATUS);
	}
}

//////////////////////////////////////////////////////////////////////////////
// WndPlay Left Mouse Down Message
void Play_LButtonDown(LPARAM lParam)
{
}

//////////////////////////////////////////////////////////////////////////////
// WndPlay Left Mouse Up Message
void Play_LButtonUp(LPARAM lParam)
{
	if(!ec.fDrag)
	{
		if(play.fKey)
			play.fKey = FALSE;
		else
			ClickBlock( LOWORD(lParam) / XBLOCK, 
				HIWORD(lParam) / XBLOCK );
	}
	else
	{
		ec.fDrag = FALSE;
		SetClassLong(WndPlay.hWnd , GCL_HCURSOR, (LONG) LoadCursor(ec.hInst , "IDC_CURSOR"));
	}
}



//***************************************************************************/
// ~~~~~~~~~~~~~~~~ Window Credit's Functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

void Credit_Paint()
{
HDC hDC;
PAINTSTRUCT ps;
int i;
HFONT hFont;
TCHAR szBuffer[50];

	if ( ec.iCreditPos * CREDIT_STEP <= WndCredit.yClient + WndChild.yClient )
	{
		TCHAR *szCredit[] = {
		"\tAnitsoft

⌨️ 快捷键说明

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