亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? menu.c

?? LCM(MGLS-12864TA)顯示程序
?? C
字號:
// menu.c
//
#include "includes.h"
 
 
    // 菜單信息結(jié)構(gòu)

	MenuInfor  MenuInforFile  = {"文件",1,20,10,24,12,1,4};

	MenuInfor  MenuInforNew   = {"新建",1,20,10,24,12,1,2};
	MenuInfor  MenuInforEmpy  = {"空白",1,20,10,24,12,1,0};
	MenuInfor  MenuInforTemplate = {"模板",1,20,50,24,12,0,0};
	MenuInfor  MenuInforOpen  = {"打開",1,20,40,24,12,0,0};
	MenuInfor  MenuInforClose = {"關(guān)閉",1,20,70,24,12,0,0};
	MenuInfor  MenuInforSave  = {"保存",1,20,100,24,12,0,0};

	MenuInfor  MenuInforEdit = {"編輯",1,20,50,24,12,0,4};
	MenuInfor  MenuInforCut =  {"剪切",1,20,10,24,12,1,0};
	MenuInfor  MenuInforCopy = {"復(fù)制",1,20,40,24,12,0,0};
	MenuInfor  MenuInforPaste = {"粘貼",1,20,70,24,12,0,0};
	MenuInfor  MenuInforFind =  {"查找",1,20,100,24,12,0,0};

    MenuInfor  MenuInforRoot = {"歡迎",1,20,40,24,12,0,2};

		// 父菜單---文件 
	struct   Menu   MenuFile  = {&MenuInforFile,&MenuRoot,&MenuNew,&MenuEdit,&MenuEdit};
        
	struct   Menu   MenuNew = {&MenuInforNew,&MenuFile,&MenuEmpy,&MenuSave,&MenuOpen}; // 新建
	struct   Menu   MenuEmpy = {&MenuInforEmpy,&MenuNew,0,&MenuTemplate,&MenuTemplate};    // 空白文件
	struct   Menu   MenuTemplate = {&MenuInforTemplate,&MenuNew,0,&MenuEmpy,&MenuEmpy}; // 模板

	struct   Menu   MenuOpen = {&MenuInforOpen,&MenuFile,0,&MenuNew,&MenuClose};  // 打開
	struct   Menu   MenuClose= {&MenuInforClose,&MenuFile,0,&MenuOpen,&MenuSave}; // 關(guān)閉
	struct   Menu   MenuSave = {&MenuInforSave,&MenuFile,0,&MenuClose,&MenuNew}; // 保存


	// 父菜單
	struct   Menu   MenuEdit ={&MenuInforEdit,&MenuRoot,&MenuCut,&MenuFile,&MenuFile}; // 編輯 
 
	struct   Menu   MenuCut ={&MenuInforCut,&MenuEdit,0,&MenuFind,&MenuCopy};  // 剪切
	struct   Menu   MenuCopy ={&MenuInforCopy,&MenuEdit,0,&MenuCut,&MenuPaste};  // 復(fù)制
	struct   Menu   MenuPaste ={&MenuInforPaste,&MenuEdit,0,&MenuCopy,&MenuFind}; // 粘貼
	struct   Menu   MenuFind ={&MenuInforFind,&MenuEdit,0,&MenuPaste,&MenuCut};  // 查找

    struct   Menu   MenuRoot = {&MenuInforRoot,0,&MenuFile,0,0};   // 開始時候的菜單 


void onBeforeKey(struct Menu* pCurMenu)
{
      uchar uLeft,uTop,uRight,uBottom;
      uLeft = pCurMenu->PMenuInfor->offX;
	  uTop  = pCurMenu->PMenuInfor->offY;
	  uRight = uLeft + pCurMenu->PMenuInfor->Height;
	  uBottom = uTop + pCurMenu->PMenuInfor->Width;

	  pCurMenu->PMenuInfor->bIsFocus = 0;            // 當(dāng)前子菜單失去焦點	                                                       
      RectBlock(uLeft - 5,uTop - 5,uRight + 5 ,uBottom + 5,0 ); // 當(dāng)前子菜單失去黑色邊框

      pCurMenu->pLeftMenu->PMenuInfor->bIsFocus = 1; // 左邊兄弟菜單項獲得焦點
      *pCurMenu = *(pCurMenu->pLeftMenu);            // 當(dāng)前菜單項轉(zhuǎn)為左邊兄弟菜單項
}

void onAfterKey(struct Menu* pCurMenu)
{
	  uchar uLeft,uTop,uRight,uBottom;
      uLeft = pCurMenu->PMenuInfor->offX;
	  uTop  = pCurMenu->PMenuInfor->offY;
	  uRight = uLeft + pCurMenu->PMenuInfor->Height;
	  uBottom = uTop + pCurMenu->PMenuInfor->Width;

	  pCurMenu->PMenuInfor->bIsFocus = 0;            // 當(dāng)前子菜單失去焦點	                                                       
      RectBlock(uLeft - 5,uTop - 5,uRight + 5 ,uBottom + 5,0 ); // 當(dāng)前子菜單失去黑色邊框

      pCurMenu->pRightMenu->PMenuInfor->bIsFocus = 1; // 右邊兄弟菜單項獲得焦點
      *pCurMenu = *(pCurMenu->pRightMenu);            // 當(dāng)前菜單項轉(zhuǎn)為左邊兄弟菜單項
}

void onOkKey(struct Menu* pCurMenu)
{
   	if(pCurMenu->pChildMenu != 0)
	{
	  pCurMenu->PMenuInfor->bIsFocus = 0; // 當(dāng)前父菜單項失去焦點 
	  pCurMenu->pChildMenu->PMenuInfor->bIsFocus = 1; // 默認(rèn)第一子菜單項獲得焦點
	  *pCurMenu = *(pCurMenu->pChildMenu); // 菜單轉(zhuǎn)化為子菜單
	}
	else
	{
	  return;
	}
}

void onCancelKey(struct Menu* pCurMenu)
{
    if(pCurMenu->pParentMenu != 0)
	{
	  pCurMenu->PMenuInfor->bIsFocus = 0; // 當(dāng)前菜單項失去焦點 
	  pCurMenu->pParentMenu->PMenuInfor->bIsFocus = 1; // 父菜單項獲得焦點
	  *pCurMenu = *(pCurMenu->pParentMenu);
	}
	else
	{
	  return;
	}
}

void PutPixel(uchar x, uchar y, uchar mode)
{
    fnSetPos(x,y);
	if(mode)	// mode != 0
		fnCW0P(LC_BIT_OP | 0x08 | (7-(y % 8)));
	else
		fnCW0P(LC_BIT_OP | 0x00 | (7-(y % 8)));
}

uchar ReverPrin(uchar *ptr)   
{
    uchar c1,c2;
    uchar *tmpBuf;                           // LCD顯示數(shù)據(jù)緩沖區(qū)
	uchar i=0,j=0,j1=0,k,uLen=0,uRow,uCol,uVal=0;
	const typFNT_GB12 data1 ;

	uchar uIndex1,uIndex2;  // 存儲漢字的索引
	uchar uMask1,uMask2;    // 1個字橫向字模信息的2個字節(jié)
	uchar k1,k2;
   while (ptr[uLen]!=0)
   {
     uLen++; ////探測字串長度
   }; 

    tmpBuf = ptr;
	i = 0;
	while(i<uLen)
	{
		c1 = tmpBuf[i];
		c2 = tmpBuf[i+1];
		uRow = fnGetRow();
		uCol = fnGetCol();
		
		if(c1 >= 0x20 && c1 <= 0x7f)		// 0x20---0x7f
		{	// ASCII 的 12行 * 6列 字符顯示
			for( j = 0; j < 12; j++)            // 逐行顯示
			{
				for ( k = 0; k < 6; k++)        // 逐列顯示
				{
					cursor(uRow + j,uCol + k);  // 置當(dāng)前顯示地址
					k1 =   (uCol + k) & 0x07 ;  // 當(dāng)前屏幕點屬于的字節(jié)單元的像素點;水平共16字節(jié)單元,
  												// 每字節(jié)8個像素點,從左到右為01234567點,  
												// 對應(yīng)數(shù)據(jù)的76543210位
					k2 = 7 - k1;                // 當(dāng)前屏幕點屬于的字節(jié)單元的位
					k1 = BIT(7-k);              // 當(dāng)前屏幕點屬于的字節(jié)單元的數(shù)據(jù)的第7-k個數(shù)據(jù)位置1,其余置0
					uVal = pgm_read_byte(ASCII_TBL+(c1-0x20)*12 + j);
					k1 =  ( uVal  & k1 ) == k1 ? 1 : 0;  // 測試對應(yīng)字庫中字的第j行1字節(jié)數(shù)據(jù)中的7-k個數(shù)據(jù)位是否為1
					if(k1 == 0)
						fnCW0P(LC_BIT_OP | 0x08 | k2 );    // 反轉(zhuǎn)顯示
					else
						fnCW0P(LC_BIT_OP |  k2 );          // 反轉(zhuǎn)顯示
				}
				
			}   
			
			cursor(uRow ,uCol + 6);             // 下一個字符
			i++;
		}
		else    // 0x80 -- 0xff
			
		{	    // 中文12行*12列漢字顯示 
			 
           for(j1 = 0; j1 < sizeof(GB_12)/sizeof(GB_12[0]);j1 ++) // 找字
			{
			    memcpy_P(&data1, &GB_12[j1], sizeof(typFNT_GB12)); // 從程序區(qū)拷貝一個結(jié)構(gòu)體數(shù)據(jù)

			    uIndex1 = data1.Index[0];
                uIndex2 = data1.Index[1];

 				if(c1 == uIndex1 && c2 == uIndex2)
 					break;
 			}
			
 			if(j1 >= sizeof(GB_12)/sizeof(GB_12[0]) )       // 找不到,屏幕就是空白
 				return 0;
 			for( j=0;j<12;j++)								// 逐行顯示
			{
				for ( k = 0; k < 8; k++)                    // 逐列顯示
				{
					cursor(uRow + j,uCol + k);              // 置當(dāng)前顯示地址
					k1 = (uCol + k) & 0x07 ;                // 當(dāng)前屏幕點屬于的字節(jié)單元的像素點;水平共16字節(jié)單元,
					                                        // 每字節(jié)8個像素點,從左到右為01234567點,  
												            // 對應(yīng)數(shù)據(jù)的76543210位
					k2 = 7 - k1;							// 當(dāng)前屏幕點屬于的字節(jié)單元的位
					k1 = BIT(7 - (k & 0x07));               // 當(dāng)前屏幕點屬于的字節(jié)單元的數(shù)據(jù)的第7 - k & 0x07個數(shù)據(jù)位置1,其余置0
			     
				 	memcpy_P(&data1, &GB_12[j1], sizeof(typFNT_GB12));

					uMask1 = data1.Msk[2*j];
					 
					k1  =  (uMask1 & k1 ) == k1 ? 1 : 0;  // 漢字左邊部分
 
					if(k1 == 0)                             // 反轉(zhuǎn)顯示
						fnCW0P(LC_BIT_OP | 0x08 | k2 );
					else
						fnCW0P(LC_BIT_OP |  k2 );           // 反轉(zhuǎn)顯示 		
				} 

                for ( k = 0; k < 4; k++)                    // 逐列顯示
				{
					cursor(uRow + j,uCol + k +8);           // 置當(dāng)前顯示地址
					k1 = (uCol + k + 8) & 0x07 ;            // 當(dāng)前屏幕點屬于的字節(jié)單元的像素點;水平共16字節(jié)單元,
					                                        // 每字節(jié)8個像素點,從左到右為01234567點,  
												            // 對應(yīng)數(shù)據(jù)的76543210位
					k2 = 7 - k1;							// 當(dāng)前屏幕點屬于的字節(jié)單元的位
					k1 = BIT(7 - (k & 0x07));               // 當(dāng)前屏幕點屬于的字節(jié)單元的數(shù)據(jù)的第7 - k & 0x07個數(shù)據(jù)位置1,其余置0
				
					uMask2 = data1.Msk[2*j+1];
					k1  =  (uMask2 & k1 ) == k1 ? 1 : 0;    // 漢字右邊部分
 
					if(k1 == 0)                             // 反轉(zhuǎn)顯示
						fnCW0P(LC_BIT_OP | 0x08 | k2 );
					else
						fnCW0P(LC_BIT_OP |  k2 );           // 反轉(zhuǎn)顯示  		
				} 

			} 
				cursor(uRow ,uCol + 13);                    // 下一個漢字
				i +=2;                                      // 在字符串中一個漢字占2個字節(jié)
		}  	
		
		
	} 
	return uLen;    
	
}


// chRight 畫矩形
void RectBlock(uchar chLeft,uchar chTop,uchar chRight,uchar chBottom,uchar mode)
{
  	uchar i,j;
	if( chLeft > chRight)                     // 使 chLeft 不大于 chRight
	{
		i = chLeft;
		chLeft = chRight;
		chRight = i;
	}
	
	if( chTop > chBottom)                     // 使  chTop 不大于 chBottom
	{
		i = chTop;
		chTop = chBottom;
		chBottom = i;
	 }
	
    if(chRight > 64 ) 
	{
        chRight = 64;
	}

 //  if(chBottom > 127 ) 
//	{
 //       chBottom = 110;
//	}

	for( i = chLeft; i <= chRight; i++)       // 逐個點畫
		for( j = chTop; j <= chBottom;j++)
		{
			PutPixel(i,j,mode);  
		}
}   


void MenuDis(MenuInfor * pMenuInfor)
{
    uchar chX,chY;
	
	if(pMenuInfor == 0)
		return;
	
    chX = pMenuInfor->offX;
    chY = pMenuInfor->offY;
	cursor(chX,chY);

    if( pMenuInfor->bIsFocus == 1)                           // 反轉(zhuǎn)顯示
	{
	     RectBlock(chX - 5,chY -5,chX + pMenuInfor->Height + 5,chY + pMenuInfor->Width + 5,1);                                  // 現(xiàn)將背景填黑
		 ReverPrin(pMenuInfor->strChinese); 
	}
	else                                                    // 不反轉(zhuǎn)顯示
	{   
		 dprintf(pMenuInfor->strChinese);	         
	}
}

void DisPaly(struct Menu * pCurMenu)
{
  uchar i=0;

  if(pCurMenu->pParentMenu == 0)    // 如果是根菜單,直接顯示
  {
     MenuDis(pCurMenu->PMenuInfor); // 根菜單顯示
	 return;
  }

  uchar ucNum = pCurMenu->pParentMenu->PMenuInfor->subMenuNum; // 兄弟菜單項的個數(shù)
  
  for(i = 0; i < ucNum; i++ ) 
  {
	  MenuDis(pCurMenu->PMenuInfor);      // 菜單顯示
      pCurMenu = pCurMenu->pRightMenu;
  } 
        
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美电影精品一区二区| 国产精品一区二区男女羞羞无遮挡 | 日韩电影在线看| 欧美日本韩国一区二区三区视频| 国产一区欧美日韩| 精品国精品国产| 成人性生交大片免费看中文网站| 日韩毛片一二三区| 欧美老女人第四色| 丁香婷婷综合五月| 日本伊人午夜精品| 久久精品国产澳门| 中文字幕日韩精品一区| 91精品欧美福利在线观看| 福利91精品一区二区三区| 国产成人免费视频一区| 婷婷激情综合网| 中文字幕一区二区三区不卡在线| 国产精品久久毛片a| 91精品国产综合久久久久| 8v天堂国产在线一区二区| 日韩久久久久久| 欧美国产日本韩| 91精品黄色片免费大全| 日韩欧美国产综合在线一区二区三区| 欧美一区二区久久| 欧美性三三影院| www.性欧美| 国产精品一区二区三区四区| a亚洲天堂av| 欧美日韩国产经典色站一区二区三区| 日韩欧美国产一区二区三区| 国产欧美一区二区精品性色超碰 | 亚洲综合激情另类小说区| 日韩三级中文字幕| 欧美日韩亚洲另类| 欧美午夜精品一区二区蜜桃| 日韩欧美专区在线| 亚洲免费看黄网站| 国产精品久久看| 亚洲v中文字幕| 午夜欧美2019年伦理| 国产一区啦啦啦在线观看| 午夜私人影院久久久久| 精彩视频一区二区| 亚洲h动漫在线| 国产高清在线精品| 欧美丰满美乳xxx高潮www| 国产精品区一区二区三| 国产精品区一区二区三| 日韩中文字幕一区二区三区| 日韩综合小视频| 色综合久久综合网欧美综合网| 成人免费毛片片v| 日韩限制级电影在线观看| 亚洲人精品一区| 国产精品亚洲人在线观看| 在线成人av影院| 亚洲午夜免费电影| 日本人妖一区二区| 欧美伊人精品成人久久综合97| 亚洲国产精品成人综合色在线婷婷 | 在线亚洲人成电影网站色www| 激情综合色综合久久综合| 欧美日韩一区二区三区高清| 亚洲狼人国产精品| 午夜视黄欧洲亚洲| 色av综合在线| 亚洲人午夜精品天堂一二香蕉| 国产精品18久久久| 久久综合99re88久久爱| 国产精品成人一区二区艾草| 国产精品中文字幕欧美| 欧美成人r级一区二区三区| 国产亚洲人成网站| 一区二区欧美在线观看| 久久av中文字幕片| 欧美成人a∨高清免费观看| 久久精品国产亚洲高清剧情介绍| 91精品欧美综合在线观看最新| 视频一区在线播放| 日韩欧美国产精品一区| 久久综合综合久久综合| www国产亚洲精品久久麻豆| 极品尤物av久久免费看| 久久亚区不卡日本| 国产91清纯白嫩初高中在线观看| 中文字幕精品一区| av成人免费在线| 亚洲一区日韩精品中文字幕| 欧美色精品在线视频| 欧美精品第1页| 久久综合网色—综合色88| 日韩—二三区免费观看av| 日韩免费视频一区| 国产毛片精品视频| 国产精品动漫网站| 欧美性色黄大片手机版| 日本三级韩国三级欧美三级| 2020国产精品久久精品美国| 国产成人自拍在线| 亚洲精品国产一区二区三区四区在线| 日本高清无吗v一区| 奇米精品一区二区三区在线观看 | 亚洲国产日韩综合久久精品| 欧美日韩国产精选| 精品一区二区免费视频| 国产精品每日更新在线播放网址| 在线中文字幕一区二区| 免费成人av在线播放| 国产精品水嫩水嫩| 欧美久久久久久久久久| 福利电影一区二区| 天天做天天摸天天爽国产一区| 精品国产一区二区三区忘忧草| 99久久er热在这里只有精品15 | 久久婷婷综合激情| 91麻豆自制传媒国产之光| 国产精品福利影院| 欧美精品在线一区二区三区| 国产精品一区二区在线看| 亚洲成人动漫在线免费观看| 精品成a人在线观看| 欧美亚洲综合一区| 成av人片一区二区| 亚洲美女视频在线| 亚洲精品一区二区三区蜜桃下载 | 欧美经典三级视频一区二区三区| 欧美亚洲综合一区| 不卡一区二区在线| 久久99精品网久久| 香蕉成人啪国产精品视频综合网 | 亚洲靠逼com| 久久久一区二区三区捆绑**| 国产成人在线影院| 免费成人美女在线观看| 亚洲图片有声小说| 一区二区三区四区在线播放| 中文一区二区完整视频在线观看 | 国产精品自拍一区| 日韩av网站在线观看| 亚洲国产美女搞黄色| 亚洲乱码国产乱码精品精98午夜| 国产农村妇女毛片精品久久麻豆 | 91精品麻豆日日躁夜夜躁| 一本色道久久综合狠狠躁的推荐| 国产a级毛片一区| 精品一区二区三区在线播放| 日韩 欧美一区二区三区| 亚洲国产日韩精品| 亚洲精品五月天| 亚洲主播在线观看| 亚洲一级二级三级| 亚洲国产日韩av| 婷婷中文字幕综合| 日本女人一区二区三区| 爽爽淫人综合网网站| 日韩中文字幕av电影| 日韩av不卡在线观看| 青娱乐精品在线视频| 美女尤物国产一区| 亚洲一区在线观看视频| 精品一区二区三区在线观看| 日本vs亚洲vs韩国一区三区二区| 亚洲韩国一区二区三区| 午夜久久久久久| 蜜桃视频一区二区| 久久精品噜噜噜成人88aⅴ| 国产在线视频一区二区| 国产精品久久久久天堂| 亚洲同性同志一二三专区| 亚洲狼人国产精品| 日韩福利电影在线| 国产精品99精品久久免费| 成人精品免费看| 欧美专区日韩专区| 日韩一二三区不卡| 国产精品色呦呦| 亚洲午夜久久久| 国产乱人伦精品一区二区在线观看| 国产精品影视在线| 色域天天综合网| 日韩视频免费观看高清在线视频| 中文字幕国产一区二区| 亚洲国产中文字幕在线视频综合| 免费成人在线网站| 成人精品视频一区二区三区| 欧美亚洲国产一区二区三区va| 欧美一区二区免费观在线| 国产日产亚洲精品系列| 亚洲在线中文字幕| 国内国产精品久久| 91高清在线观看| 亚洲精品一区二区三区蜜桃下载| 中文字幕亚洲欧美在线不卡| 免费成人你懂的| 色av一区二区| 中文幕一区二区三区久久蜜桃| 视频在线在亚洲| 91免费看片在线观看|