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

📄 brewlogincanvas3.cpp

📁 象棋框架
💻 CPP
字号:
// BrewLoginCanvas3.cpp: implementation of the CBrewLoginCanvas3 class.
//
//////////////////////////////////////////////////////////////////////

#include "BrewLoginCanvas3.h"
#include "BrewLoginCanvas2.h"
#include "brewlogin.h"


//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CBrewLoginCanvas3::CBrewLoginCanvas3()
{	
	m_nNewState = LOGIN_TEST_REGISTER;

	m_nControls = m_nTotalLine = 5;
	m_aCtls = new IControl*[m_nControls];

	m_bIsMale = true;	

	m_nFontSpace += 4;
	
	m_nVScrollBarWidth = 5;
	m_nforangle = 0;

	m_nTitle = IDS_UMG_REG;
}

CBrewLoginCanvas3::~CBrewLoginCanvas3()
{
	RELEASEIF(m_pUser,ITEXTCTL);
	RELEASEIF(m_pPasswd,ITEXTCTL);	
	RELEASEIF(m_pSex,ISTATIC);	
	RELEASEIF(m_pNick,ITEXTCTL);
	RELEASEIF(m_pMobile,ITEXTCTL);
	
	if(m_aCtls != NULL)
		delete[] m_aCtls;
	
}

void CBrewLoginCanvas3::setFrame(void *f)
{
	frame = (CBrewLogin*)f;
	m_pShell = frame->frame->getCurrentShell();
	m_offsetX = frame->frame->getScreenOffsetX();
	m_offsetY = frame->frame->getScreenOffsetY();
	m_pdi = frame->frame->getDeviceInfo();

	if(m_pUser == NULL)
	{
		ISHELL_CreateInstance(((CBrewLogin*)f)->m_pIShell, AEECLSID_TEXTCTL, (void **)&m_pUser);
		ITEXTCTL_SetProperties(m_pUser,TP_FRAME);
		ITEXTCTL_SetInputMode( m_pUser, AEE_TM_LETTERS );
		m_aCtls[0] = (IControl*)m_pUser;
	}
	if(m_pPasswd == NULL)
	{
		ISHELL_CreateInstance(((CBrewLogin*)f)->m_pIShell, AEECLSID_TEXTCTL, (void **)&m_pPasswd);
		ITEXTCTL_SetProperties(m_pPasswd,TP_FRAME);
		ITEXTCTL_SetInputMode( m_pPasswd, AEE_TM_LETTERS );	
		m_aCtls[1] = (IControl*)m_pPasswd;
		
	}
	if(m_pNick == NULL)
	{
		ISHELL_CreateInstance(((CBrewLogin*)f)->m_pIShell, AEECLSID_TEXTCTL, (void **)&m_pNick);
		ITEXTCTL_SetProperties(m_pNick,TP_FRAME);
		ITEXTCTL_SetInputMode( m_pNick, AEE_TM_LETTERS );	
		m_aCtls[2] = (IControl*)m_pNick;
		
	}
	if(m_pMobile == NULL)
	{
		ISHELL_CreateInstance(((CBrewLogin*)f)->m_pIShell, AEECLSID_TEXTCTL, (void **)&m_pMobile);
		ITEXTCTL_SetProperties(m_pMobile,TP_FRAME);
		ITEXTCTL_SetInputMode( m_pMobile, AEE_TM_NUMBERS );	
		m_aCtls[3] = (IControl*)m_pMobile;
		
	}
	if(m_pSex == NULL)
	{
		ISHELL_CreateInstance(((CBrewLogin*)f)->m_pIShell,AEECLSID_STATIC,(void**)&m_pSex);
		ISTATIC_SetProperties(m_pSex,ST_CENTERTITLE | ST_NOSCROLL | ST_ENABLE_HLGHT);
		m_aCtls[4] = (IControl*)m_pSex;
	}
	
	UpdateData(true);
	IBitmap* bmp = ISHELL_LoadResBitmap(m_pShell,GAMEVV_RES_FILE,IDB_MAIN_BARROW);
	if(bmp != NULL)
	{
		AEEBitmapInfo  bi;
		IBITMAP_GetInfo(bmp, &bi, sizeof(bi));
		SETAEERECT(&m_rtArrow,0,0,bi.cx,bi.cy);
		RELEASEIF(bmp,IBITMAP);
	}
	else
		SETAEERECT(&m_rtArrow,0,0,0,0);	
}

void CBrewLoginCanvas3::paint(IDisplay *d, IGraphics *g)
{
	CBrewLoginCanvasBase::paint(d,g);
	//if(!m_bRedraw)
	//	return;
	AEERect rt,rtSex;
	int n = GetLineRect(0,rt);
	if(n != -1)
		DisplayControl(d,GetDispText(IDS_LOGIN_USERNAME),(IControl*)m_pUser,rt,g);	
	n = GetLineRect(1,rt);
	if(n != -1)
		DisplayControl(d,GetDispText(IDS_LOGIN_PASSWORD)
		,(IControl*)m_pPasswd,rt,g);	
	n = GetLineRect(2,rt);
	if(n != -1)
		DisplayControl(d,
		GetDispText(IDS_UMG_NICK),(IControl*)m_pNick,rt,g);
	
	n = GetLineRect(3,rt);
	if(n != -1)
		DisplayControl(d,GetDispText(IDS_UMG_MOBILE)
		,(IControl*)m_pMobile,rt,g);
	
	n = GetLineRect(4,rtSex);
	if(n != -1)
		DisplayControl(d,
		GetDispText(IDS_UMG_SEX),(IControl*)m_pSex,rtSex,g);
	
	SetActiveCtrl(0);	

	if(m_nCurrent >= 0)
	{
		AEERect rt;
		boolean b = true;
		if(m_nCurrent < m_nControls)
		{
			ICONTROL_GetRect(m_aCtls[m_nCurrent],&rt);
			rt.dy = m_nNowSize + m_nFontSpace;

			if(m_aCtls[m_nCurrent] == (IControl*)m_pSex)
			{
				DrawSign(&rtSex,m_pIGraphics);
				b = false;
			}

		}
		else
			GetLineRect(m_nCurrent,rt);
		if(b)
			IDISPLAY_DrawRect(m_pIDisplay,&rt,
				RGB_BLACK,RGB_BLACK,IDF_RECT_FRAME);
		
	}

	
	IDISPLAY_Update(d);	
}

boolean CBrewLoginCanvas3::keyPressed(UINT16 code, UINT32 param)
{
	return false;
}

boolean CBrewLoginCanvas3::keyReleased(UINT16 code, UINT32 param)
{
	return false;
}

boolean CBrewLoginCanvas3::keyRepeated(UINT16 code, UINT32 param)
{
	return false;
}

boolean CBrewLoginCanvas3::key(UINT16 code, UINT32 param)
{	
	if(CBrewLoginCanvasBase::key(code,param))
		return true;	
	switch(code )
	{	
	case AVK_LEFT:
	case AVK_RIGHT:
		if(m_aCtls[m_nCurrent] == (IControl*)m_pSex)
		{
			m_bIsMale = !m_bIsMale;
			Invalidate();
			return true;
		}
		break;
	case AVK_CLR:
	case AVK_SOFT1:
		{
			//((CBrewLogin*)frame)->SetCanvas(CreateLoginCanvas2);
			frame->m_nLoginState = LOGIN_READY_LOGIN;
			return true;
			break;
		}		
	case  AVK_SOFT2:
		{
			if(!UpdateData(false))	//取回数据
			{
				frame->frame->postMessage(m_errMsg,1,MESSAGE_INFO_COLOR,0
					,MESSAGE_YES|MESSAGE_TEXT_CENTER);	
				break;
			}
			frame->m_nLoginState = m_nNewState;
			break;
		}
	}	
	return false;
}



IBrewCanvas *CreateLoginCanvas3(){
	return (IBrewCanvas *)new CBrewLoginCanvas3();
}

void CBrewLoginCanvas3::DisplayControl( IDisplay* pIDisplay, AECHAR* psTextBuf, IControl* pCtl, 
									   AEERect& rRect ,IGraphics* g)
{
	int16 n = rRect.dy;
	if( psTextBuf )
	{
		//ISHELL_LoadResString( pApp->a.m_pIShell, EXPENSETRACKER_RES_FILE, nTitleID, psTextBuf, MAX_RES_STRING_BUF_SIZE * sizeof( AECHAR ) );
		
		// Set the position of the label's daring rectangle
		SETAEERECT( &rRect, rRect.x+2, rRect.y, IDISPLAY_MeasureText( pIDisplay, m_nNowFont, psTextBuf ), m_nNowSize );
		IDISPLAY_DrawText( pIDisplay, m_nNowFont, psTextBuf, -1, rRect.x, rRect.y, &rRect, IDF_ALIGN_MIDDLE| IDF_ALIGN_LEFT );
		IDISPLAY_Update( pIDisplay);
		
		rRect.x = rRect.dx;
		rRect.dx = m_rtInfo.dx - rRect.x;
	}
	
	
	
	
	if(!m_bRedraw)
	{
		if(pCtl != NULL)
			ICONTROL_Redraw(pCtl);
		//return;
	}	
	else
	{
		AEERect rt;
		ICONTROL_GetRect(pCtl,&rt);
		if(rRect.y != rt.y)
		{
			if(pCtl == (IControl*)m_pUser || pCtl == (IControl*)m_pPasswd
				|| pCtl == (IControl*)m_pNick || pCtl == (IControl*)m_pMobile)
			{
				AECHAR p[50];
				ITEXTCTL_GetText((ITextCtl*) pCtl,p,sizeof(p));
				ITEXTCTL_SetText((ITextCtl*) pCtl,p,sizeof(p));
			}
			ICONTROL_SetRect( pCtl, &rRect );
		}
		ICONTROL_Redraw( pCtl );
	}
	if(pCtl == (IControl*)m_pSex)
	{
		AECHAR* ptext;
		if(m_bIsMale)
			ptext = GetDispText(IDS_UMG_MALE);
		else
			ptext = GetDispText(IDS_UMG_FEMALE);
		ISTATIC_SetText((IStatic*)pCtl,ptext,NULL,m_nNowFont,m_nNowFont);		
		n = rRect.dy;
	}
	if(m_aCtls[m_nCurrent] != pCtl)
	{
		n = rRect.dy;
		AEELine ln;
		ln.sx = rRect.x - m_offsetX;
		ln.sy = rRect.y + n - m_offsetY;
		ln.ex = ln.sx + rRect.dx;
		ln.ey = ln.sy;
		IGRAPHICS_DrawLine(m_pIGraphics,&ln);
	}
}

void CBrewLoginCanvas3::SetActiveCtrl(int8 pos)
{
	//AECHAR pbuf[MAX_RES_STRING_BUF_SIZE];
	
	CBrewLoginCanvasBase::SetActiveCtrl(pos);
}

void CBrewLoginCanvas3::DrawSign(AEERect* prt,IGraphics* g)
{
	AEERect rt1,rt2;
	GetFitRect(prt,&m_rtArrow,&rt1,IDF_ALIGN_LEFT | IDF_ALIGN_MIDDLE);
	GetFitRect(prt,&m_rtArrow,&rt2,IDF_ALIGN_RIGHT | IDF_ALIGN_MIDDLE);
	rt1.x -= m_offsetX;
	rt2.x -= m_offsetX;
	rt1.y -= m_offsetY;
	rt2.y -= m_offsetY;

	rt1.x += 3;
	rt2.x -= 3;	//居中一点

	boolean bb = IGRAPHICS_GetFillMode(g);
	uint8 r,gg,b;
	uint8 a;
	IGRAPHICS_GetFillColor(g,&r,&gg,&b,&a);
	AEETriangle Triangle;

	int8 nn = 6;
	IGRAPHICS_SetFillMode(g,true);
	m_nforangle++;
	m_nforangle %= nn;
	if(m_nforangle < nn / 3)
		IGRAPHICS_SetFillColor(g,255,0,0,255);
	else if(m_nforangle < nn * 2 / 3)
		IGRAPHICS_SetFillColor(g,0,255,0,255);
	else if(m_nforangle < nn)
		IGRAPHICS_SetFillColor(g,0,0,255,255);

	//IGRAPHICS_SetFillColor(g,0,255,0,255);
	IGRAPHICS_SetColor(g,0,0,0,255);
	
	AEERect rt;

	{
		MEMCPY(&rt,&rt1,sizeof(AEERect));	
		Triangle.x0 = rt.x;
		Triangle.y0 = rt.y + rt.dy / 2;
		Triangle.x1 = rt.x + rt.dx;
		Triangle.y1 = rt.y;
		Triangle.x2 = rt.x + rt.dx;
		Triangle.y2 = rt.y + rt.dy;	
		IGRAPHICS_DrawTriangle(g,&Triangle);
	}

	{
		MEMCPY(&rt,&rt2,sizeof(AEERect));
		Triangle.x0 = rt.x;
		Triangle.y0 = rt.y;
		Triangle.x1 = rt.x + rt.dx;
		Triangle.y1 = rt.y + rt.dy / 2;
		Triangle.x2 = rt.x;
		Triangle.y2 = rt.y + rt.dy;		
		IGRAPHICS_DrawTriangle(g,&Triangle);
	}

	IGRAPHICS_SetFillMode(g,bb);
	IGRAPHICS_SetFillColor(g,r,gg,b,a);
}

boolean CBrewLoginCanvas3::UpdateData(boolean bUpdateDisp)
{
	if(bUpdateDisp)
	{
		AECHAR* p = frame->m_userMng.urs.userName;
		UINT8 len = frame->m_userMng.urs.userNameLength;
		
		if(len > 0)
		{
			UINT8 i;
			for(i = 0; i < len; i++)
				p[i] = NTOHS(p[i]);
			ITEXTCTL_SetText(m_pUser,p,len);
			for(i = 0; i < len; i++)
				p[i] = HTONS(p[i]);
		}
		
		p = frame->m_userMng.urs.userPass;
		len = frame->m_userMng.urs.userPassLength;
		if(len > 0)
		{
			UINT8 i;
			for(i = 0; i < len; i++)
				p[i] = NTOHS(p[i]);
			ITEXTCTL_SetText(m_pPasswd,p,len);
			for(i = 0; i < len; i++)
				p[i] = HTONS(p[i]);
		}
		
		p = frame->m_userMng.urs.nickName;
		len = frame->m_userMng.urs.nickNameLength;	
		if(len > 0)
		{
			UINT8 i;
			for(i = 0; i < len; i++)
				p[i] = NTOHS(p[i]);
			ITEXTCTL_SetText(m_pNick,p,len);
			for(i = 0; i < len; i++)
				p[i] = HTONS(p[i]);
		}
		AECHAR pp[20];
		STRTOWSTR((char*)(frame->m_userMng.urs.mobileid),pp,20);		
		ITEXTCTL_SetText(m_pMobile,pp,20);

		if(frame->m_userMng.urs.userinfo == 0)
			m_bIsMale = false;
		else 
			m_bIsMale = true;
	}
	else
	{
		char tmp[50];
		GETTEXT(m_pUser,frame->m_userMng.urs.userName);
		GETTEXT(m_pPasswd,frame->m_userMng.urs.userPass);
		GETTEXT(m_pNick,frame->m_userMng.urs.nickName);
		AECHAR pp[20];
		ITEXTCTL_GetText(m_pMobile,pp,20);
		WSTRLOWER(pp);
		WSTRTOSTR(pp,(char*)(frame->m_userMng.urs.mobileid),20);
		if(frame->m_userMng.urs.nickNameLength == 0)
		{
			frame->m_userMng.urs.nickNameLength = frame->m_userMng.urs.userNameLength;
			MEMCPY(frame->m_userMng.urs.nickName,frame->m_userMng.urs.userName,sizeof(frame->m_userMng.urs.nickName));
		}
		if(m_bIsMale)
			frame->m_userMng.urs.userinfo = 1;
		else
			frame->m_userMng.urs.userinfo = 0;
		
		if(frame->m_userMng.urs.userNameLength == 0)
		{
			WSTRCPY(m_errMsg,GetDispText(IDS_UMG_UNAMENULL));
			return false;
		}
		WSTRTOSTR(frame->m_userMng.urs.userName,tmp,sizeof(tmp));
		if(STRLEN(tmp) > 10)
		{
			WSTRCPY(m_errMsg,GetDispText(IDS_UMG_UNAMELONG));
			return false;
		}
		if(frame->m_userMng.urs.userPassLength == 0)
		{
			WSTRCPY(m_errMsg,GetDispText(IDS_UMG_PNULL));
			return false;
		}
		WSTRTOSTR(frame->m_userMng.urs.userPass,tmp,sizeof(tmp));
		if(STRLEN(tmp) > 10)
		{
			WSTRCPY(m_errMsg,GetDispText(IDS_UMG_PLONG));
			return false;
		}
	}
	return true;
}

void CBrewLoginCanvas3::onSuspend()
{
	int i;
	for(i = 0; i < m_nControls; i++)
		ICONTROL_SetActive(m_aCtls[i],false);
	ISTATIC_Reset(m_pSex);	
}
/*
boolean CBrewLoginCanvas3::onEvent(AEEEvent eCode, UINT16 wParam, UINT32 dwParam)
{
	if(eCode == EVT_COMMAND)
	{
		switch(wParam)
		{
		case MESSAGE_YES:			
			break;
		}
	}
	return false;
}
 */

⌨️ 快捷键说明

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