📄 commonctl.h
字号:
virtual int FindActiveID();
virtual void SetVisible(boolean bVisible);
//事件响应
virtual boolean OnEvent(AEEEvent evtCode, uint16 param16, uint32 param32);
//以下是brew提供的IStatic控件接口的简单封装,具体参数意义及使用方法
//请参照Brew SDK API Reference
virtual void SetRect(const AEERect * prc);
virtual void GetRect(AEERect * prc);
virtual boolean IsActive();
virtual void SetActive(boolean bActive);
virtual boolean Redraw();
virtual void Reset();
virtual uint32 GetProperties();
virtual void SetProperties(uint32 dwProps);
virtual boolean SetTextFromFile(char* szFileName,boolean bAppend);
virtual void SizeToFit(AEERect *prc);
virtual boolean SetTextEx(byte * pbText, IAStream * pStream, boolean bAppend );
virtual boolean SetText(AECHAR * pTitle,AECHAR * pText, AEEFont fntTitle, AEEFont fntText );
virtual void SetRect(AEERect * prc);
virtual void SetFont(AEEFont fntText,AEEFont fntTitle);
virtual boolean IsScrollable();
virtual int GoToLine(int nLineIdx);
private:
IStatic * m_pIStatic;
};
/*!
@ingroup CommonCtl
@brief TextCtl主要是brew提供的ITextCLT的C++封装,
同时继承自ControlBase时提供了一些与ControlContainer适应的方法
*/
class TextCtl : public ControlBase
{
public:
TextCtl(int ControlID,int TabOrder);
virtual ~TextCtl();
//继承自VisibleObj
virtual AppResult Open();
virtual AppResult Close();
virtual AppResult Enable();
virtual AppResult Disable();
virtual AppResult Update();
//继承自ControlBase
virtual ControlBase* FindNextTabCtl(int CurTabOrder,Tab_Direction Dir);
virtual ControlBase* FindActiveCtl();
virtual int FindActiveID();
virtual void SetVisible(boolean bVisible);
//事件响应
virtual boolean OnEvent(AEEEvent evtCode, uint16 param16, uint32 param32);
//以下是brew提供的IText控件接口的简单封装,具体参数意义及使用方法
//请参照Brew SDK API Reference
virtual void SetRect(const AEERect * prc);
virtual void GetRect(AEERect * prc);
virtual boolean IsActive();
virtual void SetActive(boolean bActive);
virtual boolean Redraw();
virtual void Reset();
virtual uint32 GetProperties();
virtual void SetProperties(uint32 dwProps);
virtual void EnableCommand(boolean bEnable,uint16 nCmdId);
virtual void EnumModeInit();
virtual int32 GetCursorPos();
virtual boolean GetText(AECHAR * pBuffer, unsigned int nMaxChars);
virtual AECHAR* GetTextPtr();
virtual void SetCursorPos(int32 nOffset);
virtual void SetMaxSize (uint16 nMaxSize);
virtual void SetSoftKeyMenu(IMenuCtl * pm);
virtual boolean SetTitle(const char * pszResFile, uint16 wResID, AECHAR * pText );
virtual boolean SetText(const AECHAR * psz,int cch);
virtual boolean SetTextFromResFile(char* ResFileName,int StingID);
virtual AEETextInputMode EnumNextMode(AEETextInputModeInfo * pmInfo);
virtual AEETextInputMode GetInputMode(AEETextInputModeInfo * pmInfo);
virtual AEETextInputMode SetInputMode(AEETextInputMode wMode);
protected:
ITextCtl * m_pITextCtl ;
};
/*!
@ingroup CommonCtl
@brief InputCtl继承自TextCtl,提供了中文输入法选择的支持
*/
class InputCtl : public TextCtl
{
public:
InputCtl(int ControlID,int TabOrder);
virtual ~InputCtl();
virtual AppResult Open();
virtual AppResult Close();
virtual AppResult Enable();
virtual AppResult Disable();
virtual AppResult Update();
virtual boolean OnEvent(AEEEvent evtCode, uint16 param16, uint32 param32);
virtual boolean Redraw();
virtual void SetRect(const AEERect * prc);
AppResult SetImage(char* ResFileName,int16 BitmapID);
void SetModes(uint16 key,int8 modenum = 3);
void AddModes(AEETextInputMode mode);
protected:
AEETextInputMode ChooseMode();
void DrawHints();
private:
// ITextCtl * m_pITextCtl;
IImage * m_pIImage;
uint16 modeKey;
int8 frame;
int8 modeNum;
int8 counter;
AEETextInputMode modes[10];
AEERect hRect,tRect;
};
/*!
@ingroup CommonCtl
@brief TextDisplayCtl接口是为了解决StaticCtl不支持透明背景而重新编写的一个简单的控件
支持单行背景透明文本的显示,主要作为TextCtl控件的标题使用。
实际上在TextDisplayCtl类内部没有控件的指针,因此TextDisplayCtl不可以设置为ACTIVE
IsActive()返回值一定是FALSE.对于这个控件最有意义的属性是VISIBLE,用来控制是否可见。
同样TextDisplayCtl没有ControlID也没有TabOrder,大部分接口是为了与其它控件兼容而设置的
用户只要利用SetText或SetTextFromResFile设置好需要显示的文本再用SetRect设置显示区域
调用update即可显示文本,可以用SetProperties来设置文本在Rect中的对齐方式,具体设置见
IDISPLAY_DrawText中的文本属性设置,如果有需要取得此控件指针,请设置ID号
*/
class TextDisplayCtl : public ControlBase
{
public:
TextDisplayCtl(int ControlID = ID_INVALID_CTL,int TabOrder = CTL_NO_TABORDER);
virtual ~TextDisplayCtl();
//继承自VisibleObj
virtual AppResult Open();
virtual AppResult Close();
virtual AppResult Enable();
virtual AppResult Disable();
virtual AppResult Update();
//独有函数
virtual void SetRect(const AEERect * prc);
virtual void GetRect(AEERect * prc);
virtual void SetProperties(uint32 dwFlags);
virtual boolean SetTextFromResFile(char* ResFileName,int StingID);
virtual boolean SetText(AECHAR* pText);
//继承自ControlBase
virtual ControlBase* FindNextTabCtl(int CurTabOrder,Tab_Direction Dir);
virtual ControlBase* FindActiveCtl();
virtual int FindActiveID();
virtual ControlBase* GetCtl(int ControlID);
virtual boolean IsActive();
virtual void SetActive(boolean bActive);
virtual boolean Redraw();
virtual void Reset();
virtual uint32 GetProperties();
private:
boolean m_IsActive;
AEEFont m_Font;
AEERect m_clipRect;
AECHAR m_Text[MAX_TEXT_LENGTH];
uint32 m_dwFlags;
};
#define BTC_MAX_TEXT_LEN 32
#define BTC_DX 10
#define BTC_DY 14
#define BTC_TITLE_HIGH 16
#define DIGIT 0
#define UPPERCASE (DIGIT + 10)
#define LOWERCASE (UPPERCASE + 26)
#define TOTAL (LOWERCASE + 26)
#define BTC_FLAG_ENABLEUPDOWN 0x00000001
#define DEFAULT_DURATION 500
/*!
@ingroup CommonCtl
@brief BelTextCtl采用Sprite实现ITextCtl接口,接受用户输入。
*/
class BELTextCtl : public BREWObj
{
public:
BELTextCtl(AEEApplet* app);
virtual ~BELTextCtl();
void SetRes(const char * pszResFile, uint16 wResID, uint8 iOffset);
void SetProperties(uint32 dwProps);
void SetRect(const AEERect * prc);
void SetActive(boolean bActive);
void SetMaxSize(uint16 nMaxSize);
void SetInterval(uint8 dx, uint8 dy);
boolean SetTitle(const char * pszResFile, uint16 wResID, AECHAR * pText);
boolean SetText(const AECHAR * psz, int cch);
boolean Redraw();
boolean GetText(AECHAR * pBuffer, unsigned int nMaxChars);
virtual boolean HandleEvent(AEEEvent evtCode, uint16 wParam, uint32 dwParam);
void SetMaskSymbol(uint8 index);
void EnableMask(boolean bEnable);
void EnableFilterDigit(boolean bEnable);
AppResult Enable();
AppResult Disable();
void SetTimerDuration(uint16 duration);
static void OnBelTextTimer(void* pUser);
protected:
uint8 GetOffset(AECHAR c, boolean bCareCase = FALSE);
void ChangeFocus();
boolean HandleDigitKey(uint8 digit);
void InitPos();
void StartTimer();
void StopTimer();
protected:
AEEApplet* m_pApp;
SpriteMgr* m_pSpriteMgr;
SpriteModel m_SpriteModel[BTC_MAX_TEXT_LEN];
SpriteModel m_FocusModel;
AEERect m_TotalRect;
AEERect m_InputRect;
boolean m_bActive;
uint8 m_iMaxSize;
uint32 m_iProperty;
AECHAR m_pTitle[BTC_MAX_TEXT_LEN];
AECHAR m_pText[BTC_MAX_TEXT_LEN];
uint8 m_iIntervalx;
uint8 m_iIntervaly;
uint8 m_iOffset;
uint8 m_iFocus;
boolean m_bUpperCase;
boolean m_bMasking;
uint8 m_iMaskIndex;
boolean m_bFilter;
uint16 m_iDuration;
boolean m_bTiming;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -