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

📄 fungui.c

📁 本人编写的无线电话程序,给予PIC18C801设计,包括了uCOS的移植以及菜单,自己设计的拼音注入法,完整地一级汉字库,希望对大家有所帮助
💻 C
字号:
#define MAX_WINDOW_SIZE	1024		//Maximum data buffer size of a single window
#define MAX_WINDOW_NUM	10			//Maximum number of widows in the system

typedef rom struct _WINDOW{
	INT8U	Flag;
	INT8U	StartY;
	INT8U	StartY;
	INT8U	EndX;
	INT8U	EndY;
	INT16U	WindowSize;
	INT8U	Data[MAX_WINDOW_SIZE];
}WINDOW;

#define INVALID_WINDOW	(WINDOW *)0xffffff

#pragma romdata EXTRAM
WINDOW	SYSWindow[MAX_WINDOW_NUM];	//System widow buffer

WINDOW * ActiveWindow;				//Current active window

#pragma code MYCODE
/********************************************************
 * Function     : WD_Init()
 * Precondition : None
 * Input        : None
 * Output       : None
 * Side effect  : None
 * Note         : Mark all the window empty, called begin 
 *                other window operation
 ********************************************************/

void WD_Init(void){
	INT8U i;
	for(i = 0; i<MAX_WINDOW_NUM; i++){
		SYSWindow[i].Flag = WINDOW_IDLE;
	}
}

/********************************************************
 * Function     : WINDOW * WD_Create(sX, sY, eX, eY)
 * Precondition : WD_Init() has been exacuted
 * Input        : sX   - Start X physical coordinate of window
 *                sY   - Start Y physical coordinate of window
 *                eX   - End X physical coordinate of window
 *                eY   - End Y physical coordinate of window
 * Output       : The window created
 * Side effect  : None
 * Note         : These input coordinates are physical coordinates
 *                of the screen.
 ********************************************************/
WINDOW * WD_Create(INT8U sX, INT8U sY, INT8U eX, INT8U eY){	
	for(i=0; i<MAX_WINDOW_NUM; i++){
		if(SYSWindow[i].Flag == WINDOW_IDLE){
			k = ((INT16U)eX - (INT16U)sX + 1) * ((INT16U)eY - (INT16U)sY + 1)
			for(j=0; j<k; j++){
				SYSWindow[i].Data[j] = 0;
			}
			SysWindow[i].Flag = WINDOW_OCCUPIED;
			return(&SYSWindow[i]);
		}
	}
	return(INVALID_WINDOW);
}

INT8U WD_Write(WINDWO * w, INT8U posX, INT8U PosY){
	if(w == ActiveWindow){	//Write to screen directly
	}
	else{					//Write to display buffer
	}
}

INT8U WD_Up(WINDOW * w){
	INT8U rom p;
	if(ActiveWindow == w) return;
	else{
		//Save current screen
		p = &(ActiveWindow->Data[0];
		
		//Restore window to be actived
		p = &(w->Data[0]);
		
	}
}

⌨️ 快捷键说明

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