WndEdit.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:3k
源码类别:

模拟服务器

开发平台:

C/C++

  1. /*****************************************************************************************
  2. // 界面窗口体系结构--输入窗口
  3. // Copyright : Kingsoft 2002
  4. // Author :   Wooy(Wu yue)
  5. // CreateTime: 2002-7-22
  6. ------------------------------------------------------------------------------------------
  7. *****************************************************************************************/
  8. #pragma once
  9. #include "WndWindow.h"
  10. #include "WndText.h"
  11. #define WNDEDIT_ES_FILTER 0x00ff
  12. #define WNDEDIT_ES_ENGLISH_AVAILABLE 0x0001 //可以输入西文字符,符号、标点等
  13. #define WNDEDIT_ES_IME_AVAILABLE 0x0002 //可以输入ime字符(中文字符)等
  14. #define WNDEDIT_ES_CHAR_TYPE_FILTER (WNDEDIT_ES_ENGLISH_AVAILABLE | WNDEDIT_ES_IME_AVAILABLE)
  15. #define WNDEDIT_ES_MASK_CHARACTER 0x0010 //显示时以特殊符号替换要显示的字符
  16. #define WNDEDIT_ES_MULTI_LINE 0x0020 //多行编辑
  17. #define WNDEDIT_F_HAVE_FOCUS 0x0100 //为当前拥有输入焦点的窗口
  18. class KWndEdit : public KWndWindow
  19. {
  20. public:
  21. KWndEdit();
  22. ~KWndEdit();
  23. virtual int Init(KIniFile* pIniFile, const char* pSection);//初始化
  24. virtual int WndProc(unsigned int uMsg, unsigned int uParam, int nParam);//窗口函数
  25. virtual void PaintWindow(); //绘制窗口
  26. void SetColor(unsigned int uColor);
  27. void SetText(const char* pText); //设置文本文字
  28. int GetText(char* pBuffer, int nSize, bool bExcludeSpace);//获取字符串内容
  29. void SetIntText(int nNumber); //设置文本串的内容为与表述所整数的字符串
  30. int GetIntNumber();
  31. void Enable(int bEnable); //禁止或者允许使窗口被操作
  32. void Clone(KWndEdit* pCopy);
  33. void ClearText(bool bSafe = false);
  34. int InsertString(const char* pString, int nLen);
  35. void GetCaretPosition(int* nx, int* ny);
  36. unsigned int GetFocusBkColor() {return m_FocusBkColor;}
  37. void SetFocusBkColor(unsigned int nC) {m_FocusBkColor = nC;}
  38. protected:
  39. void SetTextPtr(char* pText, int nMaxLen); //设置文本缓冲区指针
  40. int InsertChar(int nChar); //
  41. int InsertChar(char cLow, char cHigh); //
  42. int OnKeyDown(int nKeyCode, int nModifiers);//响应键盘按键操作
  43. private:
  44. int CharFromPos(int x, int y); //retrieves information about the character closest to a specified point in the client area of an edit control
  45. void UpdateData();
  46. void FmtForShow();
  47. int Paste();
  48. private:
  49. unsigned int m_Flag;
  50. int m_nFontSize; //字体大小
  51. char* m_pText; //文本缓冲区指针
  52. int m_nBufferSize; //文本缓冲区指针的长度
  53. int m_nLimitText; //字符串长度(BYTE)限制,不包括字符串结束符号。
  54. int m_nTextLen; //字符串实际长度
  55. int m_nSkipAhead; //显示时忽略前端超出的字符,前端被忽略字符的容量
  56. int m_nSkipBehind; //显示时忽略后端超出的字符,后端被忽略字符的容量
  57. int m_nCaretLineIndex; //插入符所在的行位置
  58. int m_nCaretPos; //插入符的位置
  59. int m_nCaretTime; //控制插入符显示的时钟
  60.     int         m_nCaretX;
  61.     int         m_nCaretY;
  62.     //HWND        m_hEdit;
  63. unsigned int m_TextColor; //字体颜色
  64. unsigned int m_TextBorderColor; //字体边缘颜色
  65. unsigned int m_FocusBkColor; //有焦点时的背景颜色
  66. };
  67. //=====================================
  68. // 文本缓冲区长度为32的文本输入窗口类
  69. //=====================================
  70. class KWndEdit32 : public KWndEdit
  71. {
  72. private:
  73. char m_Text[32];
  74. public:
  75. KWndEdit32();
  76. };
  77. //=====================================
  78. // 文本缓冲区长度为32的文本输入窗口类
  79. //=====================================
  80. class KWndEdit512 : public KWndEdit
  81. {
  82. private:
  83. char m_Text[512];
  84. public:
  85. KWndEdit512();
  86. };