📄 brewlogincanvas42.cpp
字号:
// BrewLoginCanvas42.cpp: implementation of the CBrewLoginCanvas42 class.
//
//////////////////////////////////////////////////////////////////////
#include "BrewLoginCanvas42.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CBrewLoginCanvas42::CBrewLoginCanvas42()
{
m_nNewState = LOGIN_TEST_MODIFY;
delete[] m_aCtls;
m_nControls = m_nTotalLine = 6;
m_aCtls = new IControl*[m_nControls];
m_bIsMale = true;
m_nTitle = IDS_UMG_MOD;
}
CBrewLoginCanvas42::~CBrewLoginCanvas42()
{
RELEASEIF(m_pPasswdNew,ITEXTCTL);
}
IBrewCanvas *CreateLoginCanvas42(){
return (IBrewCanvas *)new CBrewLoginCanvas42();
}
void CBrewLoginCanvas42::paint(IDisplay *d, IGraphics *g)
{
CBrewLoginCanvasBase::paint(d,g);
AEERect rt,rtSex;
int i = 0;
int n = GetLineRect(i++,rt);
if(n != -1)
DisplayControl(d,
GetDispText(IDS_LOGIN_USERNAME),(IControl*)m_pUser,rt,g);
n = GetLineRect(i++,rt);
if(n != -1)
DisplayControl(d,
GetDispText(IDS_UMG_OLDP),(IControl*)m_pPasswd,rt,g);
n = GetLineRect(i++,rt);
if(n != -1)
DisplayControl(d,
GetDispText(IDS_UMG_NEWP),(IControl*)m_pPasswdNew,rt,g);
n = GetLineRect(i++,rt);
if(n != -1)
DisplayControl(d,
GetDispText(IDS_UMG_NICK),(IControl*)m_pNick,rt,g);
n = GetLineRect(i++,rt);
if(n != -1)
DisplayControl(d,
GetDispText(IDS_UMG_MOBILE),(IControl*)m_pMobile,rt,g);
n = GetLineRect(i++,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);
}
void CBrewLoginCanvas42::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();
int i = 0;
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[i++] = (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[i++] = (IControl*)m_pPasswd;
}
if(m_pPasswdNew == NULL)
{
ISHELL_CreateInstance(((CBrewLogin*)f)->m_pIShell, AEECLSID_TEXTCTL, (void **)&m_pPasswdNew);
ITEXTCTL_SetProperties(m_pPasswdNew,TP_FRAME);
ITEXTCTL_SetInputMode( m_pPasswdNew, AEE_TM_LETTERS );
m_aCtls[i++] = (IControl*)m_pPasswdNew;
}
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[i++] = (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_LETTERS );
m_aCtls[i++] = (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[i++] = (IControl*)m_pSex;
}
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);
UpdateData(true);
}
boolean CBrewLoginCanvas42::UpdateData(boolean bUpdateDisp)
{
if(!CBrewLoginCanvas3::UpdateData(bUpdateDisp))
return false;
if(bUpdateDisp)
{
AECHAR* p = frame->m_userMng.userNewPass;
UINT8 len = frame->m_userMng.userNewPassLength;
if(len > 0)
{
UINT8 i;
for(i = 0; i < len; i++)
p[i] = NTOHS(p[i]);
ITEXTCTL_SetText(m_pPasswdNew,p,len);
for(i = 0; i < len; i++)
p[i] = HTONS(p[i]);
}
if(len = 0)
{
MEMCPY(frame->m_userMng.userNewPass,frame->m_userMng.urs.userPass,sizeof(frame->m_userMng.userNewPass));
frame->m_userMng.userNewPassLength = frame->m_userMng.urs.userPassLength;
}
}
else
{
char tmp[50];
GETTEXT(m_pPasswdNew,frame->m_userMng.userNewPass);
if(frame->m_userMng.userNewPassLength == 0)
{
WSTRCPY(m_errMsg,
GetDispText(IDS_UMG_NEWPNULL));
return false;
}
WSTRTOSTR(frame->m_userMng.userNewPass,tmp,sizeof(tmp));
if(STRLEN(tmp) > 10)
{
WSTRCPY(m_errMsg,GetDispText(IDS_UMG_NEWPLONG));
return false;
}
}
return true;
}
void CBrewLoginCanvas42::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 ||
pCtl == (IControl*)m_pPasswdNew)
{
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);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -