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

📄 template.h

📁 综合实验源代码-电子菜单
💻 H
字号:
#ifndef __TEMPLATE__H__
#define __TEMPLATE__H__

//template.h

#include"..\ucos-ii\includes.h"               /* uC/OS interface */
#include "..\ucos-ii\add\osaddition.h"
#include"..\inc\osfile.h"
#include"..\inc\drv\rtc.h"
#include "..\inc\drv.h"
#include <string.h>
#include "..\ucos-ii\add\list.h"
#include "..\inc\drv\figure.h"
#include "..\inc\drv\display.h"
#include "..\inc\maro.h"
#include "..\template.h"


//数据结构
typedef struct{
	U32 CtrlType;	//控件的类型
	U32 CtrlID;
	structRECT ListCtrlRect;	//列表框的位置和大小
	structRECT ClientRect;	//列表框列表区域
	U32 FontSize;
	U32 style;		//列表框的风格
	U8 bVisible;	//是否可见
	PWnd parentWnd;	//控件的父窗口指针
	U8 (*CtrlMsgCallBk)(void*);

	U16 **pListText;	//列表框所容纳的文本指针
	int ListMaxNum;	//列表框所容纳的最大文本的行数
	int ListNum;		//列表框所容纳的文本的行数
	int ListShowNum;	//列表框所能显示的文本行数
	int CurrentHead;	//列表的表头号
	int CurrentSel;	//当前选中的列表项号
	structRECT ListCtrlRollRect;	//列表框滚动条方框
	structRECT RollBlockRect;	//列表框滚动条滑块方框
	int Max_Word_Num;          // 单条列表所包含的最多字数
	u8 IsDraw3DRect;             // 是否画三维边框的矩形
}ListCtrl2, *PListCtrl2;



//变量外部声明
extern List OSCtrl;	//系统控件的链表,表头保留
extern OS_MEM *pCtrlMem;
extern int OSFontSize[];
extern OS_EVENT *Rtc_Rw_Sem;                   //Rtc读写控制权旗语

//消息定义
#define   OSM_MENU_SELCHANGE			999		//菜单的选择被改变的消息
#define   OSM_LISTCTRL2_SELCHANGE           998        // 开关量选择改变的消息

// 模板预定义常量定义
#define CTRLTYPE_MENU                                 5	       //水平列表框
#define MENU_SHOW_NUM                              2           //水平菜单显示条目
#define MENU_NAME_NUM                               2          //菜单名称所占字数

#define CLEARANCEx                                       (OSFontSize[FONTSIZE_MIDDLE]/2)            // 复合显示中的字串间隙,X向
#define CLEARANCEy                                       (OSFontSize[FONTSIZE_MIDDLE]/2)
#define CLEARANCEmenu                                8
#define SWIT_NAME_NUM               3  //开关量名称所占字节长度,均为假定值,可调节
#define SWIT_VAL_NUM                  1  // 开关量状态所占字节长度
#define SWIT_NUM_DISP                3  // 要显示的开关量的数目
#define SWIT_NUM_CTRL                5  // 要控制的开关量的数目
#define SIMU_NAME_NUM               4  //模拟量量名称所占字节长度
#define SIMU_VAL_NUM                  3   //模拟量数据段所占字节长度
#define SIMU_UNIT_NUM                3   //模拟量单位所占字节长度
#define SIMU_NUM                          5   // 要显示的模拟量的数目
#define LINE_WIDTH_DEFAULT      6  //缺省的直线宽度
#define HELP_ITEM_NUM                2 // 帮助界面下,选项的数目


//////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////     基本API函数   //////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
PDC GetCtrlParentDC(POS_Ctrl pCtrl);


void ReleaseCtrlParentDC(POS_Ctrl pCtrl);


void strChar2U8(U8 ch2[], const  char ch1[]);


void U82strChar(char ch2[], const U8 ch1[] );


void Int2strChar(char ch[], const int number);


 int  strChar2Int(char ch[]);


void Unicode2strChar(char ch2[], const u16 ch1[]);


int   CntUstrNum(u16 *ustr) ; // 计算Unicode 串的字数
//////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////  简单图形API函数 (new)   /////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
void HorizonLine(PDC pdc,int Point1x, int Point1y ,int Point2x, int Point2y);


void VerticalLine(PDC pdc, int Point1x, int Point1y, int Point2x, int Point2y);


void UniformLine(PDC pdc, int Point1x, int Point1y, int Point2x, int Point2y, int PenWidth);


void Draw3DDownRect(PDC pdc, int Textx,int Texty,int TextNum, u8 fnt); //画3D 凹矩形,用于模拟量数字的显示


void Draw3DDownRect2(PDC pdc, structRECT * prect);  ////画3D 凸矩形,用于开关量显示


void Draw3DUpRect(PDC pdc, int Textx,int Texty,int TextNum, u8 fnt); //画3D 凹矩形,用于模拟量数字的显示


void Draw3DUpRect2(PDC pdc, structRECT * prect) ;//画3D 凹矩形,用于模拟量数字的显示

//////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////    状态量显示函数:模拟量+开关量   //////////////////////////
///////////////////////////////////////////////////////////////////////////////////////

void SwitDisp(PDC pdc,structPOINT  pStartPt,  u16 *SwitName, u16 *SwitVal); //single 开关量的显示


void SimuDisp(PDC pdc, structPOINT pStartPt,  u16 *SimuName, u16 *SimuVal, u16 *SimuUnit);//single 模拟量复合显示


 void CmpSwitDisp(PDC pdc,structPOINT  pStartPt,  u16 **SwitName, u16 **SwitVal, int SwitNum); //复合开关量的显示


void CmpSimuDisp(PDC pdc, structPOINT pStartPt,  u16 **SimuName, u16 **SimuVal, u16 **SimuUnit, int SimuNum);//模拟量复合显示

//////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////  控件函数   //////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
PListCtrl CreateMenu(U32 CtrlID, structRECT* prect, int MaxNum, U32 FontSize, U32 style, PWnd parentWnd);


void MenuDrawClient(PListCtrl pListCtrl, PDC pdc);

	
void DrawMenu(PListCtrl pListCtrl);


void MenuSelMove(PListCtrl pListCtrl, int moveNum, U8 Redraw);	//列表框高亮度条移,正数下移,负数上移


void ListCtrl2SelMove(PListCtrl2 pListCtrl, int moveNum, U8 Redraw);//列表框高亮度条移,正数下移,负数上移


void DrawListCtrl2(PListCtrl2 pListCtrl);
 

void CreateListCtrl2Patch(PListCtrl2 pListCtrl, int Max_Word_Num, u8 IsDraw3DRect);


void TextOutRect2(PDC pdc, structRECT * prect, U16 * ch, U8 bunicode, U8 fnt);

#endif


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -