control.h
上传用户:wealth48
上传日期:2022-06-24
资源大小:1701k
文件大小:6k
源码类别:

uCOS

开发平台:

C/C++

  1. #ifndef __CONTROL_H__
  2. #define __CONTROL_H__
  3. #include "../ucos-ii/includes.h"               /* uC/OS interface */
  4. #include "../src/GUI/gui.h"
  5. #include "../ucos-ii/add/list.h"
  6. #if USE_MINIGUI==0
  7. #define OSCtrlMemSize 1000
  8. #define OSCtrlblkSize 256
  9. ///////////////////////////控件类型/////////////////////
  10. #define CTRLTYPE_LISTCTRL 1 //列表框
  11. #define CTRLTYPE_TEXTCTRL 2 //文本框
  12. #define CTRLTYPE_PICTURECTRL 3 //图片框
  13. #define CTRLTYPE_BUTTONCTRL 4 //按钮
  14. #define CTRLTYPE_WINDOW 100 //窗口
  15. //////////////////////////控件风格/////////////////////
  16. #define CTRL_STYLE_DBFRAME 1 //双重边框
  17. #define CTRL_STYLE_FRAME 2 //单边框
  18. #define CTRL_STYLE_3DUPFRAME 3 //突起3D边框
  19. #define CTRL_STYLE_3DDOWNFRAME 4 //凹陷3D无边框
  20. #define CTRL_STYLE_NOFRAME 5 //无边框
  21. ////////////////////////窗口风格////////////////////////
  22. #define WND_STYLE_MODE 0x10000 //有模式窗口
  23. #define WND_STYLE_MODELESS 0x00000 //无模式窗口
  24. #define WND_STYLE_TITLE 0x20000 //有窗口标题
  25. ////////////////////////按钮ID/////////////////////////
  26. #define BUTTON_IDOK 1
  27. #define BUTTON_IDCANCEL 2
  28. ////////////////////////////////////
  29. typedef struct typeWnd{
  30. U32 CtrlType; //控件的类型
  31. U32 CtrlID;
  32. structRECT WndRect; //窗口的位置和大小
  33. structRECT ClientRect; //看翱谕户区域
  34. U32 FontSize; //窗口的字符大小
  35. U32 style; //窗口的的边框风格
  36. U8 bVisible; //是否可见
  37. struct typeWnd* parentWnd; //控件的父窗口指针
  38. U8 (*CtrlMsgCallBk)(void*);
  39. PDC pdc; //窗口的绘图设备上下文
  40. U16 Caption[20]; //窗口标题
  41. List ChildWndList;
  42. U32 FocusCtrlID; //子窗口焦点ID
  43. U32 preParentFocusCtrlID; //显示窗口之前的父窗口焦点ID
  44. OS_EVENT* WndDC_Ctrl_mem; //窗口DC控制权
  45. }Wnd, *PWnd;
  46. typedef struct {
  47. U32 CtrlType; //控件的类型
  48. U32 CtrlID;
  49. structRECT ListCtrlRect; //控件的位置和大小
  50. structRECT ClientRect; //客户区域
  51. U32 FontSize; //控件的字符大小
  52. U32 style; //控件的的边框风格
  53. U8 bVisible; //是否可见
  54. PWnd parentWnd; //控件的父窗口指针
  55. U8 (*CtrlMsgCallBk)(void*);
  56. }OS_Ctrl, *POS_Ctrl;
  57. typedef struct{
  58. U32 CtrlType; //控件的类型
  59. U32 CtrlID;
  60. structRECT ListCtrlRect; //列表框的位置和大小
  61. structRECT ClientRect; //列表框列表区域
  62. U32 FontSize;
  63. U32 style; //列表框的风格
  64. U8 bVisible; //是否可见
  65. PWnd parentWnd; //控件的父窗口指针
  66. U8 (*CtrlMsgCallBk)(void*);
  67. U16 **pListText; //列表框所容纳的文本指针
  68. int ListMaxNum; //列表框所容纳的最大文本的行数
  69. int ListNum; //列表框所容纳的文本的行数
  70. int ListShowNum; //列表框所能显示的文本行数
  71. int CurrentHead; //列表的表头号
  72. int CurrentSel; //当前选中的列表项号
  73. structRECT ListCtrlRollRect; //列表框滚动条方框
  74. structRECT RollBlockRect; //列表框滚动条滑块方框
  75. }ListCtrl,*PListCtrl;
  76. typedef struct{
  77. U32 CtrlType; //控件的类型
  78. U32 CtrlID; //控件的ID
  79. structRECT TextCtrlRect; //文本框的位置和大小
  80. structRECT ClientRect; //客户区域
  81. U32 FontSize; //文本框的字符大小
  82. U32 style; //文本框的风格
  83. U8 bVisible; //是否可见
  84. PWnd parentWnd; //控件的父窗口指针
  85. U8 (*CtrlMsgCallBk)(void*);
  86. U8 bIsEdit; //文本框是否处于编辑状态
  87. char* KeyTable; //文本框的字符映射表
  88. U16 text[40]; //文本框中的字符块
  89. }TextCtrl,*PTextCtrl;
  90. typedef struct{
  91. U32 CtrlType; //控件的类型
  92. U32 CtrlID;
  93. structRECT PictureCtrlRect; //图片框的位置和大小
  94. structRECT ClientRect; //客户区域
  95. U32 FontSize; //图片框的字符大小
  96. U32 style; //图片框的风格
  97. U8 bVisible; //是否可见
  98. PWnd parentWnd; //控件的父窗口指针
  99. U8 (*CtrlMsgCallBk)(void*);
  100. char picfilename[12]; //图片文件名
  101. }PictureCtrl,*PPictureCtrl;
  102. typedef struct {
  103. U32 CtrlType; //控件的类型
  104. U32 CtrlID;
  105. structRECT ButtonCtrlRect; //控件的位置和大小
  106. structRECT ClientRect; //客户区域
  107. U32 FontSize; //控件的字符大小
  108. U32 style; //控件的的边框风格
  109. U8 bVisible; //是否可见
  110. PWnd parentWnd; //控件的父窗口指针
  111. U8 (*CtrlMsgCallBk)(void*);
  112. U16 Caption[10]; //按纽标题
  113. }ButtonCtrl, *PButtonCtrl;
  114. void initOSCtrl(void);
  115. U32 SetWndCtrlFocus(PWnd pWnd, U32 CtrlID); //设置窗口中控件的焦点
  116. U32 GetWndCtrlFocus(PWnd pWnd);
  117. void ReDrawOSCtrl(void); //绘制所有的操作系统的控件
  118. OS_Ctrl* GetCtrlfromID(PWnd pWnd, U32 ctrlID);
  119. OS_Ctrl* CreateOSCtrl(U32 CtrlID, U32 CtrlType, structRECT* prect, U32 FontSize, U32 style, PWnd parentWnd);
  120. void SetCtrlMessageCallBk(POS_Ctrl pOSCtrl, U8(*CtrlMsgCallBk)(void*));
  121. void OSOnSysMessage(void* pMsg);
  122. void ShowCtrl(OS_Ctrl *pCtrl, U8 bVisible);
  123. PListCtrl CreateListCtrl(U32 CtrlID, structRECT* prect, int MaxNum, U32 FontSize, U32 style, PWnd parentWnd);
  124. void DestoryListCtrl(PListCtrl plistCtrl);
  125. U8 AddStringListCtrl(PListCtrl pListCtrl, U16 string[]);
  126. void ListCtrlReMoveAll(PListCtrl pListCtrl);
  127. void ReLoadListCtrl(PListCtrl pListCtrl,U16* string[],int nstr);
  128. void DrawListCtrl(PListCtrl pListCtrl);
  129. void ListCtrlSelMove(PListCtrl pListCtrl, int moveNum, U8 Redraw); //列表框高亮度条移,正数下移,负数上移
  130. void ListCtrlOnTchScr(PListCtrl pListCtrl, int x, int y, U32 tchaction);
  131. PTextCtrl CreateTextCtrl(U32 CtrlID, structRECT* prect,  U32 FontSize, U32 style,char* KeyTable, PWnd parentWnd);
  132. void DestoryTextCtrl(PTextCtrl pTextCtrl);
  133. void SetTextCtrlText(PTextCtrl pTextCtrl, U16 *pch, U8 IsRedraw);
  134. U16* GetTextCtrlText(PTextCtrl pTextCtrl);
  135. void DrawTextCtrl(PTextCtrl pTextCtrl);
  136. void AppendChar2TextCtrl(PTextCtrl pTextCtrl, U16 ch, U8 IsReDraw);
  137. void TextCtrlDeleteChar(PTextCtrl pTextCtrl,U8 IsReDraw);
  138. void SetTextCtrlEdit(PTextCtrl pTextCtrl, U8 bIsEdit);
  139. void TextCtrlOnTchScr(PTextCtrl pListCtrl, int x, int y, U32 tchaction);
  140. PPictureCtrl CreatePictureCtrl(U32 CtrlID, structRECT* prect,  char filename[], U32 style, PWnd parentWnd);
  141. void DestoryPictureCtrl(PPictureCtrl pPictureCtrl);
  142. void DrawPictureCtrl(PPictureCtrl pPictureCtrl);
  143. PButtonCtrl CreateButton(U32 CtrlID, structRECT* prect,  U32 FontSize, U32 style, U16 Caption[], PWnd parentWnd);
  144. void DestoryButton(PButtonCtrl pButton);
  145. void DrawButton(PButtonCtrl pButton);
  146. void ButtonOnTchScr(PButtonCtrl pButtonCtrl, int x, int y, U32 tchaction);
  147. PWnd CreateWindow(U32 CtrlID, structRECT* prect,  U32 FontSize, U32 style, U16 Caption[], PWnd parentWnd);
  148. void DestoryWindow(PWnd pWnd);
  149. void ShowWindow(PWnd pwnd, BOOLEAN isShow);
  150. void DrawWindow(PWnd pwnd);
  151. void WndOnTchScr(PWnd pCtrl, int x,int y, U32 tchaction);
  152. #endif //#if USE_MINIGUI==0
  153. #endif