📄 buttonctrl.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 + -