EditCtrl.h
上传用户:maxiaolivb
上传日期:2022-06-07
资源大小:915k
文件大小:1k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. #pragma once
  2. #include "extern.h"
  3. #define MAX_STRING 1024
  4. struct st_Char
  5. {
  6. bool bIME;
  7. char szChar[3];
  8. };
  9. class EditCtrl :
  10. public hgeGUIObject
  11. {
  12. public:
  13. EditCtrl(int nId, float fPosX, float fPosY, float fWidth, float fHeight, DWORD dwTextColor, DWORD dwFrameColor);
  14. ~EditCtrl(void);
  15. virtual void Render();
  16. virtual void Update(float dt);
  17. virtual void Focus(bool bFocused);
  18. virtual bool KeyClick(int key, int chr);
  19. protected:
  20. bool m_bFocus;
  21. char m_szText[MAX_STRING];
  22. DWORD m_dwTextColor;
  23. DWORD m_dwFrameColor;
  24. float m_fTime;
  25. bool m_bBlink;
  26. int m_nCurPos;
  27. bool m_bComposition; //是否正在组字状态
  28. vector <st_Char*> m_pCharArray; //字符池
  29. // 添加一个新的IME字符
  30. bool AddCharEx(const char *szNewChar,int nPos = -1);
  31. // 添加一个普通的字符
  32. bool AddChar(const char szNewChar,int nPos = -1);
  33. // 删除一个指定位置的字符
  34. bool DelChar(int nPos);
  35. // 清除字符池
  36. void ClearCharArray();
  37. // 重绘光标
  38. void RedrawCursor();
  39. // 刷新字符串数据
  40. void UpdataString();
  41. public:
  42. // 开始组字状态
  43. void StartComposition();
  44. // 结束组字状态
  45. void EndComposition();
  46. // 是否组字状态
  47. bool IsComposition(){return m_bComposition;};
  48. // 组字字符消息
  49. void OnImeCharMsg(const char *szNewChar);
  50. };