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

📄 buttonctrl.cpp

📁 国外网游源码....除工具源码缺少之外,其余程序都全...至于,什么游戏,因为国内还没有,所以找不到测试
💻 CPP
字号:
// ButtonCtrl.cpp
#include "StdAfx.h"
#include "ButtonCtrl.h"
#include <STDIO.H>

CButtonCtrl::CButtonCtrl(LPDIRECT3DDEVICE9 pd3dDevice, CDrawEx *pDrawEx)
:m_pDrawEx(pDrawEx) 
{
	m_pd3dDevice=pd3dDevice;
	m_bDisble = false;
	m_bImageCnt = 0;
}

CButtonCtrl::~CButtonCtrl()
{
	Release();
}

HRESULT CButtonCtrl::CreateButton(char *szFileName,DWORD dwID, DWORD ButtonType, DWORD dwX, DWORD dwY, DWORD dwCentX, DWORD dwCentY)
{
	m_dwCentX = dwCentX;
	m_dwCentY = dwCentY;

	m_dwPosX = dwX + m_dwCentX;
	m_dwPosY = dwY + m_dwCentY;

	m_wState = StateButton_Normal;
	
	m_dwBtnType = ButtonType;
	
	char m_strTemp[43];
	int m_iTempImageCount = 0;
	char Expand[4];
	
	int lll = strlen(szFileName);
	
	memcpy(Expand, &szFileName[lll-3], 4);
	
	if(!strcmp(Expand, "mca"))
	{
		//=======================================================================
		char* m_strCode = "<Mirage Creator's Games><固扼陵农府俊捞磐>";
		unsigned int length = 0;			//png颇老狼 荤捞令甫 舅扁 困茄 函荐捞促.
		
		char* TotalName = "";
		char* TotalSaveName = "";
		
		// PNG 颇老 菊俊 内靛 笼绢持扁 内靛绰 => <Mirage Creator's Games><固扼陵农府俊捞磐> = 42BYTE + Width[4byte] + Height[4byte]
		// m_strCode = "<Mirage Creator's Games><固扼陵农府俊捞磐>";
		FILE *fp;
		
		fp = fopen(szFileName,"rb");

		if( fp == NULL )
		{
			char strMsg[128]={NULL,};
			sprintf(&strMsg[0],"[Failed] %s 颇老捞 绝澜",szFileName);
			OutputDebugString(&strMsg[0]);
			return E_FAIL;
		}

		fread(&m_strTemp, 1, 42, fp);
		fread(&m_iTempImageCount, 1, sizeof(int), fp);

//		if(m_iTempImageCount != 4)
		if(m_iTempImageCount != ButtonType+2)	//滚瓢 鸥涝捞尔 捞固瘤 箭磊尔 厚背
		{
			char* TempErrorMessage = "";
			sprintf(TempErrorMessage, "%s绰 %d 滚瓢 捞固瘤 颇老捞 酒聪促.",szFileName, ButtonType+2);
			MessageBox(g_pApp->GetWindowHandle(), TempErrorMessage, "Error", MB_OK);
			return E_FAIL;
		}

		for(int i = 0; i < m_iTempImageCount; i++)
		{
			int TempDataSize = 0;
			fread(&m_pSprite[i].m_iWidth, 1, sizeof(int), fp);
			fread(&m_pSprite[i].m_iHeight, 1, sizeof(int), fp);
			fread(&TempDataSize, 1, sizeof(unsigned int), fp);
			
			BYTE *pData2 = new BYTE[TempDataSize];
			fread((BYTE*)pData2, sizeof(BYTE), TempDataSize, fp);
			if(FAILED( D3DXCreateTextureFromFileInMemoryEx(m_pd3dDevice,pData2,length-50,
				D3DX_DEFAULT,D3DX_DEFAULT,D3DX_DEFAULT,0,
				D3DFMT_UNKNOWN,MEMORY_POOL,
				D3DX_FILTER_TRIANGLE|D3DX_FILTER_MIRROR,
				D3DX_FILTER_TRIANGLE|D3DX_FILTER_MIRROR,D3DCOLOR_ARGB(255,255,0,255), 
				NULL, NULL, &(m_pSprite[i].pTex))))
			{
				OutputDebugString("[角菩] 咆胶贸 肺爹 角菩");
				return E_FAIL;
			}
			delete []pData2;
		}
	
		fclose(fp);
		//=================================== metaljack 眠啊.
	}
	else
	{
		MessageBox(g_pApp->GetWindowHandle()," *.mca 颇老捞 绝促.", "Error", MB_OK);
	}

	m_dwWidth = m_pSprite[0].m_iWidth;
	m_dwHeight = m_pSprite[0].m_iHeight;

	//能飘费俊 ID甫 悸泼秦霖促.
	SetID(dwID);

	return S_OK;
}

HRESULT CButtonCtrl::CreateButtonEx(SPRITE_TEXTURE *pTex,DWORD dwID, DWORD ButtonType, DWORD dwX, DWORD dwY, DWORD dwCentX, DWORD dwCentY)
{
	m_dwCentX = dwCentX;
	m_dwCentY = dwCentY;

	m_dwPosX = dwX + m_dwCentX;
	m_dwPosY = dwY + m_dwCentY;

	m_wState = StateButton_Normal;
	
	m_dwBtnType = ButtonType;

	m_pSpriteButton[m_bImageCnt] = pTex;
	
	m_dwWidth = m_pSpriteButton[m_bImageCnt]->m_iWidth;
	m_dwHeight = m_pSpriteButton[m_bImageCnt]->m_iHeight;

	//能飘费俊 ID甫 悸泼秦霖促.
	SetID(dwID);

	m_bImageCnt++;
	
	return S_OK;
}

HRESULT CButtonCtrl::CreateButtonInMemory(CButtonCtrl *Button,DWORD dwID, DWORD ButtonType, DWORD dwX, DWORD dwY, DWORD dwCentX, DWORD dwCentY)
{
	m_dwCentX = dwCentX;
	m_dwCentY = dwCentY;

	m_dwPosX = dwX + m_dwCentX;
	m_dwPosY = dwY + m_dwCentY;

	m_wState = StateButton_Normal;
	
	m_dwBtnType = ButtonType;
	
//	char m_strTemp[43];
	int m_iTempImageCount = 0;
	
	memcpy(&m_pSprite, &Button->m_pSprite, sizeof(Button->m_pSprite) );
	
	m_dwWidth = m_pSprite[0].m_iWidth;
	m_dwHeight = m_pSprite[0].m_iHeight;

	//能飘费俊 ID甫 悸泼秦霖促.
	SetID(dwID);

	return S_OK;
}

void CButtonCtrl::Release()
{
	for(int i=0; i < 4; i++)
	if(m_pSprite[i].pTex)
		SAFE_RELEASE(m_pSprite[i].pTex);
}

void CButtonCtrl::DrawButton(DWORD dwAlpha, float fAngle, DWORD iPosX, DWORD iPosY, DWORD dwWidth, DWORD dwHeight)
{
	// 叼弃飘 荤捞令啊 酒聪搁 货肺 荤捞令甫 嘎苗淋
	if(dwWidth!=0) m_dwWidth = dwWidth;
	if(dwHeight!=0) m_dwHeight = dwHeight;

	if(iPosX!=0) m_dwPosX = iPosX+m_dwCentX;
	if(iPosY!=0) m_dwPosY = iPosY+m_dwCentY;

	m_pDrawEx->DrawSpriteEx(m_pSprite[ m_wState ],(float)m_dwPosX,(float)m_dwPosY,dwAlpha,dwWidth,dwHeight,0.0f,0.0f,fAngle);
}

void CButtonCtrl::DrawButtonEx(DWORD dwAlpha, float fAngle, DWORD iPosX, DWORD iPosY, DWORD dwWidth, DWORD dwHeight)
{
	// 叼弃飘 荤捞令啊 酒聪搁 货肺 荤捞令甫 嘎苗淋
	if(dwWidth!=0) m_dwWidth = dwWidth;
	if(dwHeight!=0) m_dwHeight = dwHeight;

	if(iPosX!=0) m_dwPosX = iPosX+m_dwCentX;
	if(iPosY!=0) m_dwPosY = iPosY+m_dwCentY;

	m_pDrawEx->DrawSpriteEx(*m_pSpriteButton[ m_wState ],(float)m_dwPosX,(float)m_dwPosY,dwAlpha,dwWidth,dwHeight,0.0f,0.0f,fAngle);
}

void CButtonCtrl::ButtonMove(DWORD dwX, DWORD dwY)
{
	// 父距 何葛(促捞倔肺弊冠胶)啊 框流老 版快, dwX俊 何葛 困摹(谅惑窜) 蔼阑 逞败林搁
	// m_dwCentX 肺 官肺 措涝秦辑 荤侩窃.
	m_dwPosX = dwX + m_dwCentX;
	m_dwPosY = dwY + m_dwCentY;
}

bool CButtonCtrl::UpdateData(DWORD dwX, DWORD dwY, UINT nMsg)
{
	// Disble 盲农
	if( m_wState == StateButton_Disble )
		return false;

	if(MouseCheck(dwX, dwY))
	{
		switch(nMsg)
		{
		case WM_LBUTTONUP: 
			{
				//m_wState = StateButton_Over;
				//return true;				
				if(m_dwBtnType == Two_Button)
					return true;
				if(m_dwBtnType == Three_Button)
				{
					m_wState = StateButton_Over;
				}
				if(m_dwBtnType == Four_Button)
				{
					m_wState = StateButton_Over;
				}
				return true;				
			}
			break;
		case WM_MOUSEMOVE: 
			{
//				if(m_wState != StateButton_Click)
//					m_wState = StateButton_Over;
//				return true;
				if(m_dwBtnType == Two_Button)
					return true;
				if(m_wState != StateButton_Click && m_dwBtnType == Three_Button)
					m_wState = StateButton_Over;
				if(m_wState != StateButton_Click && m_dwBtnType == Four_Button)
					m_wState = StateButton_Over;

				return true;
			}
			break;
		case WM_LBUTTONDOWN: 
			{
				g_pSound->PlaySound(0, 0);	//滚瓢 努腐 家府.

				if(m_dwBtnType == Two_Button)
				{
					m_wState = StateButton_Click - 1;
				}
				if(m_dwBtnType == Three_Button || m_dwBtnType == Four_Button)
				{
					m_wState = StateButton_Click;
				}
				return true;
			}
			break;
		case WM_LBUTTONDBLCLK: 
			{
				if(m_dwBtnType == Two_Button)
				{
					m_wState = StateButton_Click - 1;
				}
				if(m_dwBtnType == Three_Button || m_dwBtnType == Four_Button)
				{
					m_wState = StateButton_Click;
				}
				return true;
			}
			break;
		case WM_RBUTTONDOWN: 
			{
				if(m_dwBtnType == Two_Button)
				{
					m_wState = StateButton_Click - 1;
				}
				if(m_dwBtnType == Three_Button || m_dwBtnType == Four_Button)
				{
					m_wState = StateButton_Click;
				}
				return true;
			}
			break;

		default: 
			{
				m_wState = StateButton_Normal; 
				return false;
			}
			break;
		}
	}
	else
	{
		m_wState = StateButton_Normal;
		return false;
	}

}

bool CButtonCtrl::IsButtonDown()
{
	if(m_wState == StateButton_Click)
		return true;
	return false;
}

bool CButtonCtrl::MouseCheck(POINT pt)
{
//	DWORD PosX = m_dwPosX + m_dwCentX;
//	DWORD PosY = m_dwPosY + m_dwCentY;
	
	DWORD PosX = m_dwPosX;	//metaljack 荐沥
	DWORD PosY = m_dwPosY;
	
	// 0 锅狼 Width, Height啊 扁霖
	if( pt.x > PosX && pt.x < (PosX + m_dwWidth) &&
		pt.y > PosY && pt.y < (PosY + m_dwHeight) )
	{
		return true;
	}
	return false;
}

bool CButtonCtrl::MouseCheck(DWORD dwX, DWORD dwY)
{
	POINT pt = {dwX, dwY};

	if( MouseCheck(pt) )
		return true;
	return false;
}

void CButtonCtrl::Enble(bool bEnble)
{
	if(bEnble)
	{
		m_wState=StateButton_Normal;
	}
	else
	{
		m_wState=StateButton_Disble; 
	}
}

⌨️ 快捷键说明

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