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

📄 control.h

📁 ucos-II+移植到arm+s3c2410的全套代码
💻 H
字号:
#ifndef __CONTROL_H__
#define __CONTROL_H__

#include "../ucos-ii/includes.h"               /* uC/OS interface */
#include "../src/GUI/gui.h"
#include "../ucos-ii/add/list.h"

#if USE_MINIGUI==0

#define OSCtrlMemSize	1000
#define OSCtrlblkSize		256

///////////////////////////控件类型/////////////////////
#define CTRLTYPE_LISTCTRL	1	//列表框
#define CTRLTYPE_TEXTCTRL	2	//文本框
#define CTRLTYPE_PICTURECTRL	3	//图片框
#define CTRLTYPE_BUTTONCTRL	4	//按钮
#define CTRLTYPE_WINDOW	100		//窗口

//////////////////////////控件风格/////////////////////
#define CTRL_STYLE_DBFRAME			1	//双重边框
#define CTRL_STYLE_FRAME			2	//单边框
#define CTRL_STYLE_3DUPFRAME		3	//突起3D边框
#define CTRL_STYLE_3DDOWNFRAME		4	//凹陷3D无边框
#define CTRL_STYLE_NOFRAME			5	//无边框

////////////////////////窗口风格////////////////////////
#define WND_STYLE_MODE			0x10000		//有模式窗口
#define WND_STYLE_MODELESS		0x00000		//无模式窗口

#define WND_STYLE_TITLE			0x20000		//有窗口标题

////////////////////////按钮ID/////////////////////////
#define BUTTON_IDOK					1
#define BUTTON_IDCANCEL			2

////////////////////////////////////
typedef struct typeWnd{
	U32 CtrlType;	//控件的类型
	U32 CtrlID;
	structRECT WndRect;	//窗口的位置和大小
	structRECT ClientRect;	//看翱谕户区域
	U32 FontSize;	//窗口的字符大小
	U32 style;		//窗口的的边框风格
	U8 bVisible;	//是否可见
	struct typeWnd* parentWnd;	//控件的父窗口指针
	U8 (*CtrlMsgCallBk)(void*);

	PDC pdc;	//窗口的绘图设备上下文
	U16 Caption[20];	//窗口标题

	List ChildWndList;
	U32 FocusCtrlID;	//子窗口焦点ID
	U32 preParentFocusCtrlID;	//显示窗口之前的父窗口焦点ID
	OS_EVENT* WndDC_Ctrl_mem; //窗口DC控制权
}Wnd, *PWnd;

typedef struct {
	U32 CtrlType;	//控件的类型
	U32 CtrlID;
	structRECT ListCtrlRect;	//控件的位置和大小
	structRECT ClientRect;	//客户区域
	U32 FontSize;	//控件的字符大小
	U32 style;		//控件的的边框风格
	U8 bVisible;	//是否可见
	PWnd parentWnd;	//控件的父窗口指针
	U8 (*CtrlMsgCallBk)(void*);
}OS_Ctrl, *POS_Ctrl;

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;	//列表框滚动条滑块方框
}ListCtrl,*PListCtrl;

typedef struct{
	U32 CtrlType;	//控件的类型
	U32 CtrlID;	//控件的ID
	structRECT TextCtrlRect;	//文本框的位置和大小
	structRECT ClientRect;	//客户区域
	U32 FontSize;	//文本框的字符大小
	U32 style;		//文本框的风格
	U8 bVisible;	//是否可见
	PWnd parentWnd;	//控件的父窗口指针
	U8 (*CtrlMsgCallBk)(void*);

	U8 bIsEdit;	//文本框是否处于编辑状态
	char* KeyTable; //文本框的字符映射表
	U16 text[40];	//文本框中的字符块
}TextCtrl,*PTextCtrl;

typedef struct{
	U32 CtrlType;	//控件的类型
	U32 CtrlID;
	structRECT PictureCtrlRect;	//图片框的位置和大小
	structRECT ClientRect;	//客户区域
	U32 FontSize;	//图片框的字符大小
	U32 style;		//图片框的风格
	U8 bVisible;	//是否可见
	PWnd parentWnd;	//控件的父窗口指针
	U8 (*CtrlMsgCallBk)(void*);

	char picfilename[12]; //图片文件名
}PictureCtrl,*PPictureCtrl;

typedef struct {
	U32 CtrlType;	//控件的类型
	U32 CtrlID;
	structRECT ButtonCtrlRect;	//控件的位置和大小
	structRECT ClientRect;	//客户区域
	U32 FontSize;	//控件的字符大小
	U32 style;		//控件的的边框风格
	U8 bVisible;	//是否可见
	PWnd parentWnd;	//控件的父窗口指针
	U8 (*CtrlMsgCallBk)(void*);

	U16 Caption[10];	//按纽标题
}ButtonCtrl, *PButtonCtrl;

void initOSCtrl(void);
U32 SetWndCtrlFocus(PWnd pWnd, U32 CtrlID);	//设置窗口中控件的焦点
U32 GetWndCtrlFocus(PWnd pWnd);

void ReDrawOSCtrl(void);	//绘制所有的操作系统的控件
OS_Ctrl* GetCtrlfromID(PWnd pWnd, U32 ctrlID);
OS_Ctrl* CreateOSCtrl(U32 CtrlID, U32 CtrlType, structRECT* prect, U32 FontSize, U32 style, PWnd parentWnd);
void SetCtrlMessageCallBk(POS_Ctrl pOSCtrl, U8(*CtrlMsgCallBk)(void*));
void OSOnSysMessage(void* pMsg);
void ShowCtrl(OS_Ctrl *pCtrl, U8 bVisible);


PListCtrl CreateListCtrl(U32 CtrlID, structRECT* prect, int MaxNum, U32 FontSize, U32 style, PWnd parentWnd);
void DestoryListCtrl(PListCtrl plistCtrl);
U8 AddStringListCtrl(PListCtrl pListCtrl, U16 string[]);
void ListCtrlReMoveAll(PListCtrl pListCtrl);
void ReLoadListCtrl(PListCtrl pListCtrl,U16* string[],int nstr);
void DrawListCtrl(PListCtrl pListCtrl);
void ListCtrlSelMove(PListCtrl pListCtrl, int moveNum, U8 Redraw);	//列表框高亮度条移,正数下移,负数上移
void ListCtrlOnTchScr(PListCtrl pListCtrl, int x, int y, U32 tchaction);

PTextCtrl CreateTextCtrl(U32 CtrlID, structRECT* prect,  U32 FontSize, U32 style,char* KeyTable, PWnd parentWnd);
void DestoryTextCtrl(PTextCtrl pTextCtrl);
void SetTextCtrlText(PTextCtrl pTextCtrl, U16 *pch, U8 IsRedraw);
U16* GetTextCtrlText(PTextCtrl pTextCtrl);
void DrawTextCtrl(PTextCtrl pTextCtrl);
void AppendChar2TextCtrl(PTextCtrl pTextCtrl, U16 ch, U8 IsReDraw);

void TextCtrlDeleteChar(PTextCtrl pTextCtrl,U8 IsReDraw);
void SetTextCtrlEdit(PTextCtrl pTextCtrl, U8 bIsEdit);
void TextCtrlOnTchScr(PTextCtrl pListCtrl, int x, int y, U32 tchaction);


PPictureCtrl CreatePictureCtrl(U32 CtrlID, structRECT* prect,  char filename[], U32 style, PWnd parentWnd);
void DestoryPictureCtrl(PPictureCtrl pPictureCtrl);
void DrawPictureCtrl(PPictureCtrl pPictureCtrl);

PButtonCtrl CreateButton(U32 CtrlID, structRECT* prect,  U32 FontSize, U32 style, U16 Caption[], PWnd parentWnd);
void DestoryButton(PButtonCtrl pButton);
void DrawButton(PButtonCtrl pButton);
void ButtonOnTchScr(PButtonCtrl pButtonCtrl, int x, int y, U32 tchaction);


PWnd CreateWindow(U32 CtrlID, structRECT* prect,  U32 FontSize, U32 style, U16 Caption[], PWnd parentWnd);
void DestoryWindow(PWnd pWnd);
void ShowWindow(PWnd pwnd, BOOLEAN isShow);
void DrawWindow(PWnd pwnd);
void WndOnTchScr(PWnd pCtrl, int x,int y, U32 tchaction);

#endif //#if USE_MINIGUI==0

#endif

⌨️ 快捷键说明

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