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