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

📄 control.c.svn-base

📁 keilC底层软件,能够结合硬件产生加解密密文,具有安全保护功能.
💻 SVN-BASE
📖 第 1 页 / 共 5 页
字号:
	        	DrawTab(p_ctrl->firstlable_x, y, 3, &labelno[0]);

        BcdToAsc(p_ctrl->ppzhm[i].text,&dsppzhm[0],4);
        YJHStringDisplay(p_ctrl->firsttext_x, y+1, 0x45, p_ctrl->dispmode, &dsppzhm[0], 8);
        if(p_ctrl->mode==6)		//批量记录图标显示
        {
          if(p_ctrl->ppzhm[i].sign==0x00)			//记录删除
          {
            p_bmp=(ucharx *)p_ctrl->bmp_no;            //BMPDisplay(p_ctrl->box_right-30,y,(uchar *)p_ctrl->bmp_no);
          }
          else if(p_ctrl->ppzhm[i].sign==0x55)	//有历史纪录
          {
            p_bmp=(ucharx *)p_ctrl->bmp_ok;            //BMPDisplay(p_ctrl->box_right-30,y,(uchar *)p_ctrl->bmp_ok);
          }
          else if(p_ctrl->ppzhm[i].sign==0x57)	//批审待授
          {
            p_bmp=(ucharx *)p_ctrl->bmp_blank;            //BMPDisplay(p_ctrl->box_right-30,y,(uchar *)p_ctrl->bmp_blank);
          }
          else if(p_ctrl->ppzhm[i].sign==0x5f)	//批签待审
          {
            p_bmp=(ucharx *)p_ctrl->bmp_doubt;            //BMPDisplay(p_ctrl->box_right-30,y,(uchar *)p_ctrl->bmp_doubt);
          }
          BMPDisplay(p_ctrl->box_right-30,y,(uchar *)p_ctrl->bmp_doubt);
        }
        if((i+1)==(p_ctrl->currline))
        {
          YJHReverseRectangle(p_ctrl->box_left+1,y-1,p_ctrl->box_right-7,y+15);
        }
        y=y+p_ctrl->lineinter;
      }
      if((p_ctrl->records)>(p_ctrl->maxdspline))
      {
        nums=(uint)(p_ctrl->ppzhm[0].label);
        DrawRollbar(p_ctrl->box_right-7,p_ctrl->box_top+2,p_ctrl->box_bottom-2,nums,p_ctrl->maxdspline,(unsigned int)p_ctrl->records);
      }
    }
  }
  else
  {
    if(f_cursor==1)
    {
      if(p_ctrl->kind==0)	//如果不带选择框
      {
        f_headref=0;
      }
      y=p_ctrl->first_y+(oldcurr-1)*(p_ctrl->lineinter);
      YJHReverseRectangle(p_ctrl->box_left+1,y-1,p_ctrl->box_right-7,y+15);
      y=p_ctrl->first_y+(p_ctrl->currline-1)*(p_ctrl->lineinter);
      YJHReverseRectangle(p_ctrl->box_left+1,y-1,p_ctrl->box_right-7,y+15);
    }
  }
  
  /*
  if(f_headref==1)
  {
    if(p_ctrl->kind!=0)	//如果带选择框
    {
      draw_selbox(p_ctrl->sel_left,p_ctrl->sel_top,p_ctrl->sel_right,p_ctrl->sel_bottom);
      BcdToAsc(p_ctrl->ppzhm[p_ctrl->currline-1].text,&dsppzhm[0],4);
      YJHStringDisplay(p_ctrl->sel_left+3, p_ctrl->sel_top+2, 0x45, p_ctrl->dispmode, &dsppzhm[0], 8);
    }
  }
  */
  
  if(f_headrev==1)
  {
    YJHReverseRectangle(p_ctrl->sel_left+1,p_ctrl->sel_top+1,p_ctrl->sel_right-1,p_ctrl->sel_bottom-1);
  }
  return NOKEY;
}


//*********************************************
//函数说明: 画选择框外边框带小三角. 但右下角坐标为
//		   不含小三角的矩型右下角坐标,边框类型及颜
//		   色均固定
//*********************************************
void	draw_selbox(uchar x1,uchar y1,uchar x2,uchar y2)
{
	//显示选择框部分
	YJHDrawRectangle(x1,y1,x2,y2,0x42);
	YJHDrawRectangle(x2,y1,x2+8,y2,0x42);
	DrawTrigonDn(x2+2,y1+6,0x3);
}

void	rollbar_ctrl(rollbarx	*p_ctrl,uchar	key)
{
	if((key == KEYREFRSH)||(key == KEYSINGLEREFRSH)) {
		DrawRollbar(p_ctrl->bar_left,p_ctrl->bar_top,p_ctrl->bar_bottom,p_ctrl->firstline,p_ctrl->windowline,p_ctrl->allline);
	}
}




//画标号函数
void	ZDHDrawTab(uchar x, uchar y, uchar lablelen,uchar CharColor, ucharx *pstring)
{
	uchar	width;
	width=lablelen*6+4;
	YJHDrawRectangle( x, y, x+width,y+12,0x63);
	DrawPixel(x, y, 0x0);		//画白色点
	DrawPixel(x+width, y, 0x0);
	DrawPixel(x, y+12, 0x0);
	DrawPixel(x+width, y+12, 0x2);	//画灰II色
	YJHDrawLine(x+2, y+13, x+width+1,y+13,0x2);
	YJHDrawLine(x+width+1, y+2, x+width+1, y+13, 0x2);
	YJHDisplayString5_7(x+3,y+3,CharColor,0x63,pstring,lablelen);
}

void YJHSaveWindow(uchar X1,uchar Y1,uchar X2,uchar Y2,ucharx *BufferPointer)
{
#ifdef  WIN32      
	ReadWindow(X1,Y1,X2,Y2,BufferPointer);
#else
	PublicVariable1=X2;
	PublicVariable2=Y2;
	SaveWindow(X1,Y1,BufferPointer);
#endif
}

void DrawPopDownBox(uchar Index,uchar TotalNum,AccountStrx *AccountPointer,ucharx *AccountBuf)
{
	uchar TempByte1,TempByte2,TempByte3;
	
	DrawDownBox(AccountPointer->PopDownX1,AccountPointer->PopDownY1,AccountPointer->PopDownX2,AccountPointer->PopDownY2,0x42,0x03,TotalNum);
	if(TotalNum==0) return;
	TempByte3=AccountLength*2;						//账号默认显示32位
	if(AccountPointer->AccountDispMode==0x00)				//0x00 精简显示,0x01正常显示
	{
		TempByte3=(AccountPointer->AccountTab[Index].AcctDispLength);	//账号精简显示长度
	}
	TempByte2=0;								//账号开始显示位置
	TempByte1=((AccountPointer->PopDownX2-9)-(AccountPointer->PopDownX1))/6;//计算当前行可以显示的字符个数
	//if(TempByte1>AccountLength) TempByte1=AccountLength;
	if(TempByte3>TempByte1)
	{									//两行显示
		TempByte2=AccountLength*2-TempByte3;
		if(TempByte3>(TempByte1*2))
		{
			AccountBuf[TempByte1*2+TempByte2-1]='.';
			AccountBuf[TempByte1*2+TempByte2-2]='.';
			AccountBuf[TempByte1*2+TempByte2-3]='.';
			TempByte3=TempByte1;
		}
		else TempByte3-=TempByte1;
/*
		YJHDisplayString5_7(AccountPointer->PopDownX1+2,AccountPointer->PopDownY1+2,0x03,0x03,	//显示账号
			&AccountBuf[TempByte2],TempByte1);
		YJHDisplayString5_7(AccountPointer->PopDownX1+2,AccountPointer->PopDownY1+10,0x03,0x03,	//显示账号
			&AccountBuf[TempByte1+TempByte2],TempByte3);
*/
		YJHDisplayString5_7(AccountPointer->PopDownX1+2+(TempByte1-TempByte3)*6,AccountPointer->PopDownY1+2,0x03,0x03,	//显示账号
			&AccountBuf[TempByte2],TempByte3);
		YJHDisplayString5_7(AccountPointer->PopDownX1+2,AccountPointer->PopDownY1+10,0x03,0x03,	//显示账号
			&AccountBuf[TempByte3+TempByte2],TempByte1);
	}
	else									//单行显示
	{
		TempByte2=AccountLength*2-TempByte3;				//显示字符在表中位置
		TempByte1=AccountPointer->PopDownX1+(TempByte1-TempByte3)*6+3;	//X
		YJHDisplayString5_7(TempByte1,AccountPointer->PopDownY1+7,0x03,0x03,//显示账号
			&AccountBuf[TempByte2],TempByte3);
	}
}



void	DrawRollbar(uchar x1,uchar y1,uchar y2,uint firstnum,uchar dispnum,uint allnum)
{
	uint	blockhigh;		//定义滚动条中黑块的高度
	uint	TempInt;
	uchar	y;
	if (allnum > dispnum) {
		DrawTrigonUp(x1,y1,0x3);
		DrawTrigonDn(x1,y2-3,0x3);
		YJHDrawRectangle(x1+1,y1+4,x1+3,y2-5,0x51);
		blockhigh = (y2-y1-8)*dispnum;
		blockhigh = (uchar)(blockhigh/allnum);		//y2-y1-8 为滚动条的全长
		TempInt = (y2-y1-8)*(firstnum-1);
		y = y1+4+TempInt/allnum;
		if ((firstnum+dispnum) > allnum) {
			y = y2-5-blockhigh;
		}
		YJHDrawRectangle(x1+1,y,x1+3,y+blockhigh,0x73);
	}
}


void	YJHReadFlashToExterMem(uchar  Page,uint  Length,ucharx  *SourcePointer,ucharx  *DestPointer)
{
#ifdef  WIN32      
	YJSReadFlashToExterMem(Page,Length,(uint)SourcePointer,DestPointer);
#else
	if(Length!=0)
	{
		PublicVariable2=(uchar)(((uint)(DestPointer))>>8);
		PublicVariable3=(uchar)((uint)DestPointer);
		ReadFlashToExterMem(Page,Length,SourcePointer);
	}
#endif
}


void	YJHClearWindow(uchar X1,uchar Y1,uchar X2,uchar Y2,uchar Color)
{
	PublicVariable1=Y2;
	PublicVariable2=Color;
	ClearWindow(X1,Y1,X2);
}


uchar	get_charlen(ucharx *str,uchar len0)		//字符字节数(不含空格)
{  
	uchar i;
	uchar len1=0;

	for(i=0;i<len0;i++)
	{
		if(str[i]>0x20)len1++;
	}
	return(len1);
}

void	YJHDrawLine(uchar X1,uchar Y1,uchar X2,uchar Y2,uchar DispMode)
{
	PublicVariable1=Y2;
	PublicVariable2=DispMode;
	DrawLine(X1,Y1,X2);
}

//displaymode: 	bit7,6,5,4,3保留, bit2(正常=0,反白=1), bit1,0(颜色)

void	YJHDrawRectangle(uchar X1,uchar Y1,uchar X2,uchar Y2,uchar DispMode)
{
	PublicVariable1=Y2;
	PublicVariable2=DispMode;
	DrawRectangle(X1,Y1,X2);
}

//displaymode: 	bit7保留, bit6填充使能,bit5,4填充颜色,bit3保留,bit2(正常=0,反白=1), bit1,0(颜色)

void	YJHReverseRectangle(uchar  X1,uchar  Y1,uchar  X2,uchar  Y2)
{
	PublicVariable1=Y2;
	ReverseRectangle(X1,Y1,X2);
}


//yjs20031221
/*
void YJHStringDisplay(uchar X,uchar Y,uchar LibSel,uchar DispMode,ucharx *Spointer,uchar StrLen)
{
  uchar	actlen=0;
  uchar	i=0;
  uchar	j=0;
  
  ucharx	k=0;
  ucharx	m=0;
  ucharx	n=0;
		
  PublicVariable1=0;//保存是否有'_'
  
  if((StrLen&0x80)==0x80)	//如果传入的 StrLen 为字节个数
  {
    StrLen=StrLen&0x7f;
    actlen=get_textlen(Spointer,StrLen);	//扫描字符个数
    for(i=0;i<StrLen;)
    {
      if((*(Spointer+i)>=0xa0)&&(*(Spointer+i)!=0xff))
      {
        i+=2;
      }
      else
      {
        if(*(Spointer+i)=='_')
        {
          PublicVariable1=1;
          break;
        }
        
        i++;
      }
      
    }
  }
  else
  {
    actlen=StrLen;
    k=0;
    for(i=0;i<StrLen;)
    {
      if((*(Spointer+k)>=0xa0)&&(*(Spointer+k)!=0xff))
      {
        i++;
        k+=2;
      }
      else
      {
        if(*(Spointer+k)=='_')
        {
          PublicVariable1=1;
          break;
        }
        i++;
        k++;
      }
      
    }
  }
  
  
  
  if(X==0xff)
  {
    i=get_hzlen(Spointer,actlen);		//汉字字符个数4
    m=actlen-i;			//英文字符个数3
    j=DispMode>>4;
    j=j*(actlen-1);
    i=m*6+i*12;
    j=128-i-j;
    j=j/2;
  }
  else j=X;
  
  
  
  if(PublicVariable1==1)
  {
    
    i=0;
    m=0;
    k=0;
    for(i=0;i<actlen;i++)
    {
      
      PublicVariable1=1;
      PublicVariable2=DispMode;					//BIT4-BIT7:显示字符间隔,BIT3:保留,bit2(正常=0,反白=1), bit1,0(颜色)
      PublicVariable3=LibSel;						//BIT7:保留,BIT6:背景颜色使用标志,0:叠加,1:覆盖,BIT4-BIT5:显示字符背景颜色,BIT3:保留,BIT2:内外字库选择(0:CPU内字库,1:FLASH内字库),BIT0-BIT1:字库选择(00:6*12,01:12*12,10:16*16)
      
      if((*(Spointer+k)>=0xa0)&&(*(Spointer+k)!=0xff))
      {
        m=2;
        n=Y;
        
      }
      else
      {
        m=1;
        if((*(Spointer+k)=='_')&&(Y>0))
        {
          n=Y-1;
        }
        else n=Y;
        
      }
      
      
      StringDisplay(j,n,Spointer+k);
      
      j=j+6+(DispMode>>4);
      if(m==2)
      {
        j=j+6;
      }
      k=k+m;
      
    }
    
  }
  else
  {
    PublicVariable1=actlen;
    PublicVariable2=DispMode;					//BIT4-BIT7:显示字符间隔,BIT3:保留,bit2(正常=0,反白=1), bit1,0(颜色)
    PublicVariable3=LibSel;						//BIT7:保留,BIT6:背景颜色使用标志,0:叠加,1:覆盖,BIT4-BIT5:显示字符背景颜色,BIT3:保留,BIT2:内外字库选择(0:CPU内字库,1:FLASH内字库),BIT0-BIT1:字库选择(00:6*12,01:12*12,10:16*16)
    
    if(StrLen!=0)							//长度不等于零才显示
    {
      StringDisplay(j,Y,Spointer);
    }
  }
}



*/


void YJHStringDisplay(uchar X,uchar Y,uchar LibSel,uchar DispMode,ucharx *Spointer,uchar StrLen)
{
  uchar	actlen=0;
  uchar	i;
  uchar	j;
  
  if((StrLen&0x80)==0x80)	//如果传入的 StrLen 为字节个数
  {
    StrLen=StrLen&0x7f;
    actlen=get_textlen(Spointer,StrLen);	//扫描字符个数
    PublicVariable1=actlen; //7
  }
  else					//如果传入的 StrLen 为字符个数
  {
    PublicVariable1=StrLen;
  }

  PublicVariable2=DispMode;					//BIT4-BIT7:显示字符间隔,BIT3:保

⌨️ 快捷键说明

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