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

📄 commonctl.h

📁 用VC在BREW平台上开发的手机游戏Superball的源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
	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 + -