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

📄 uiscroll.c

📁 嵌入工linux开发的源码
💻 C
📖 第 1 页 / 共 3 页
字号:
		{
			if(!(ptScroll->base.style&SCROLL_SPIN))
				ntype = HSCROLL_MOVE;
		}
		else return -1;
	}       
    
    return ntype;
}

//=========================================================
static int _guiBar_Update(HNDL handle,WORD wFlag)
{
    PTGUISCROLL  ptScroll=0;   
    unsigned short left=0,right=0,top=0,bottom=0;
    WORD nBar_width,nScroll_Length; 
    WORD wBar_Min,wCurrent;
	
    if(handle == NULL)
    {        
		return STATUS_ERR; 
    }
    ptScroll=(PTGUISCROLL)handle;
    if(ptScroll->base.checkFlag != GUI_CONTROL_CHECK_FLAG)
		return STATUS_ERR;
    if(ptScroll->base.style&SCROLL_SPIN)
		return STATUS_ERR;
	
    left = 0;
    right = ptScroll->base.right - ptScroll->base.left;
    top = 0;
    bottom = ptScroll->base.bottom - ptScroll->base.top;    
	
    if( ptScroll->base.style & SCROLL_HORIZONTAL)
    {
        nScroll_Length = right - left + 1 - 2*_SCROLL_ICON_HEIGHT_;
        if(ptScroll->total<=ptScroll->page)
        {
			nBar_width = 0;//nScroll_Length;                
			ptScroll->Bar_Min = 0;//left + _SCROLL_ICON_HEIGHT_;
			ptScroll->current = 0;
			ptScroll->Bar_Max = 0;
			ptScroll->base.status |= CONTROL_NOT_ACTIVE;
			return 1;
        }
        else
        {
			nBar_width =(WORD) (nScroll_Length*ptScroll->page/ptScroll->total);                
			if(nBar_width<=0)
			{                                  
				ptScroll->Bar_Min =  _SCROLL_ICON_HEIGHT_;                    
				ptScroll->Bar_Max = _SCROLL_ICON_HEIGHT_;
				ptScroll->base.status &= ~CONTROL_NOT_ACTIVE;
				return 1; 
			}
			wBar_Min = left + _SCROLL_ICON_HEIGHT_
				+(WORD)((nScroll_Length - nBar_width)*(ptScroll->current)/(ptScroll->total-ptScroll->page));
			if(nBar_width<4 && nBar_width != 0) nBar_width = 4;
			if(wBar_Min>(right - _SCROLL_ICON_HEIGHT_-nBar_width+1)
				|| ptScroll->current == (ptScroll->total-ptScroll->page))
				wBar_Min = (right - _SCROLL_ICON_HEIGHT_-nBar_width+1);
			if(wBar_Min<(left + _SCROLL_ICON_HEIGHT_)
				|| ptScroll->current == 0)
				wBar_Min = left + _SCROLL_ICON_HEIGHT_;
			ptScroll->base.status &= ~CONTROL_NOT_ACTIVE;
        }
        wCurrent = ((ptScroll->total-ptScroll->page)*(ptScroll->Bar_Min- _SCROLL_ICON_HEIGHT_)
            /(right-left+1-2*_SCROLL_ICON_HEIGHT_-nBar_width));
    }
    else
    {
        nScroll_Length = bottom - top + 1 - 2*_SCROLL_ICON_HEIGHT_;
        if(ptScroll->total<=ptScroll->page)
        {
			nBar_width = 0;//nScroll_Length;                
			wBar_Min = 0;//top + _SCROLL_ICON_HEIGHT_;
			ptScroll->current = 0;
			ptScroll->Bar_Max = 0;
			ptScroll->base.status |= CONTROL_NOT_ACTIVE;
			return 1;
        }
        else
        {
			nBar_width =(WORD) (nScroll_Length*ptScroll->page/ptScroll->total);                
			if(nBar_width<=0)
			{                                   
				ptScroll->Bar_Min = top + _SCROLL_ICON_HEIGHT_;                    
				ptScroll->Bar_Max = top + _SCROLL_ICON_HEIGHT_;
				ptScroll->base.status &= ~CONTROL_NOT_ACTIVE;
				return 1; 
			}
			wBar_Min = top + _SCROLL_ICON_HEIGHT_
				+(WORD)((nScroll_Length - nBar_width)*(ptScroll->current)/(ptScroll->total-ptScroll->page));
			if(nBar_width<4 && nBar_width != 0) nBar_width = 4;
			if(wBar_Min>(bottom - _SCROLL_ICON_HEIGHT_-nBar_width +1)
				|| ptScroll->current == (ptScroll->total-ptScroll->page))
				wBar_Min = (bottom - _SCROLL_ICON_HEIGHT_-nBar_width+1);
			if(wBar_Min<(top + _SCROLL_ICON_HEIGHT_)
				|| ptScroll->current == 0)
				wBar_Min = top + _SCROLL_ICON_HEIGHT_;
			ptScroll->base.status &= ~CONTROL_NOT_ACTIVE;                
		}
		wCurrent = ((ptScroll->total-ptScroll->page)*(ptScroll->Bar_Min- _SCROLL_ICON_HEIGHT_)
			/(bottom-top+1-2*_SCROLL_ICON_HEIGHT_-nBar_width));
		
    }
    //ptScroll->nOld_Min = ptScroll->Bar_Min;
	
    if(wFlag == 0)
		ptScroll->Bar_Min = wBar_Min;
	else
		if(wCurrent!=ptScroll->current || nBar_width !=(ptScroll->Bar_Max-ptScroll->Bar_Min+1))
		{
			ptScroll->Bar_Min = wBar_Min;
		}
		/*
		if(ptScroll->current == 0)
		{
		if( ptScroll->base.style & SCROLL_HORIZONTAL)
		{
		ptScroll->Bar_Min = left + _SCROLL_ICON_HEIGHT_;
		}
		else
		{
		ptScroll->Bar_Min = top + _SCROLL_ICON_HEIGHT_;
		}
		}
		
		  if(ptScroll->current == (ptScroll->total-ptScroll->page))
		  {
		  if( ptScroll->base.style & SCROLL_HORIZONTAL)
		  {
		  ptScroll->Bar_Min = (right - _SCROLL_ICON_HEIGHT_-nBar_width+1);
		  }
		  else
		  {
		  ptScroll->Bar_Min = (bottom - _SCROLL_ICON_HEIGHT_-nBar_width+1);
		  }
	}*/
		
		//ptScroll->nOld_Min = ptScroll->Bar_Min;
		ptScroll->Bar_Max = ptScroll->Bar_Min + nBar_width-1;        
		return 1;
}

//===========================================================
static int _Scroll_Update(HNDL handle)
{
    PTGUISCROLL ptScroll;        
	
    if(handle == NULL)
    {       
		return STATUS_ERR; 
    }
    ptScroll=(PTGUISCROLL)handle;
    if(ptScroll->base.checkFlag != GUI_CONTROL_CHECK_FLAG)
		return STATUS_ERR;
    return 1;
}

//===========================================================
static int _guiScroll_Paint(HNDL handle)
{
	PTGUISCROLL ptScroll;   
    int left=0,right=0,top=0,bottom=0;
	int iBarMin,iBarMax,iTemp=0;    
    
	HNDL hBoard;
	
    if(handle == NULL)
    {       
		return STATUS_ERR; 
    }
    ptScroll=(PTGUISCROLL)handle; 
    if(ptScroll->base.checkFlag != GUI_CONTROL_CHECK_FLAG)
		return STATUS_ERR;
	
    left = 0;
    right = ptScroll->base.right - ptScroll->base.left;
    top = 0;
    bottom = ptScroll->base.bottom - ptScroll->base.top;
	iBarMin = ptScroll->Bar_Min;
	iBarMax = ptScroll->Bar_Max;
	
    if(ptScroll->base.style&SCROLL_POPUP)
	{
		_guiConvertXY(handle,&left,&top);
		_guiConvertXY(handle,&right,&bottom);
		_guiConvertXY(handle,&iTemp,&iBarMin);
		_guiConvertXY(handle,&iTemp,&iBarMax);
		hBoard=0;
	}
	else
	{
		hBoard=handle;
	}    
    
	guiClearBlock(hBoard, left,top,right,bottom,GUI_WHITE,REPLACE_STYLE);
	if((ptScroll->page >= ptScroll->total) && !(ptScroll->base.style&SCROLL_SPIN))
	{                
		return 1;
	} 
	if( ptScroll->base.style & SCROLL_HORIZONTAL)
	{         
        if(!( ptScroll->base.style & SCROLL_3DMODE) )  
        {
            guiSetPattern(icon_Gui_Scr_BImg2D);
            guiPutImage(hBoard,left,top,left+_SCROLL_ICON_WIDTH_-1,top+_SCROLL_ICON_HEIGHT_,icon_Gui_Scr_Left2D);
            guiPutImage(hBoard,right-_SCROLL_ICON_WIDTH_+1,top,right,top+_SCROLL_ICON_HEIGHT_,icon_Gui_Scr_Right2D);
        }
        else 
        {     
			guiSetPattern(icon_Gui_Scr_BImg);
			guiPutImage(hBoard,left+1,top+1,left+_SCROLL_ICON_WIDTH_-2,bottom-1,icon_Gui_Scr_Left);
			guiPutImage(hBoard,right-_SCROLL_ICON_WIDTH_+2,top+1,right-1,bottom-1,icon_Gui_Scr_Right);
			
			guiDrawLine (hBoard,left, top,left+_SCROLL_ICON_WIDTH_-1, top,GUI_LIGHTGRAY, GUI_SOLID );
			guiDrawLine (hBoard,left,top,left,bottom, GUI_LIGHTGRAY,GUI_SOLID );
			guiDrawLine (hBoard,left,bottom,left+_SCROLL_ICON_WIDTH_-1,bottom,GUI_BLACK, GUI_SOLID);
			guiDrawLine (hBoard,left+_SCROLL_ICON_WIDTH_-1,top,left+_SCROLL_ICON_WIDTH_-1,bottom,GUI_BLACK, GUI_SOLID );  
			
			guiDrawLine (hBoard,right-_SCROLL_ICON_WIDTH_+1, top,right, top,GUI_LIGHTGRAY, GUI_SOLID );
			guiDrawLine (hBoard,right-_SCROLL_ICON_WIDTH_+1,top,right-_SCROLL_ICON_WIDTH_+1,bottom, GUI_LIGHTGRAY,GUI_SOLID );
			guiDrawLine (hBoard,right-_SCROLL_ICON_WIDTH_+1,bottom,right,bottom,GUI_BLACK, GUI_SOLID);
			guiDrawLine (hBoard,right,top,right,bottom,GUI_BLACK, GUI_SOLID );  
        }
		if(!(ptScroll->base.style&SCROLL_SPIN) )
		{
            if(!( ptScroll->base.style & SCROLL_3DMODE) )  
            {
                guiFillRect (hBoard, left+_SCROLL_ICON_WIDTH_,top+1,right -_SCROLL_ICON_WIDTH_,bottom-1,GUI_LIGHTGRAY,GUI_IMAGE );           
                guiClearBlock(hBoard,iBarMin,top+1,iBarMax,bottom-1,GUI_BLACK,REPLACE_STYLE);
            }
            else // SCROLL_3DMODE
            {
                guiFillRect (hBoard, left+_SCROLL_ICON_WIDTH_,top,right -_SCROLL_ICON_WIDTH_,bottom,GUI_LIGHTGRAY,GUI_IMAGE );  
                guiClearBlock(hBoard,iBarMin,top,iBarMax,bottom,GUI_DARKGRAY,REPLACE_STYLE);
                guiDrawLine (hBoard,iBarMin, top,iBarMax, top,GUI_LIGHTGRAY, GUI_SOLID );
                guiDrawLine (hBoard,iBarMin,top,iBarMin,bottom, GUI_LIGHTGRAY,GUI_SOLID );
                guiDrawLine (hBoard,iBarMin,bottom,iBarMax,bottom,GUI_BLACK, GUI_SOLID);
                guiDrawLine (hBoard,iBarMax,top,iBarMax,bottom,GUI_BLACK, GUI_SOLID );  
            }
		}
    }
    else
    {
        if(!( ptScroll->base.style&SCROLL_3DMODE) )  
        {
            guiSetPattern(icon_Gui_Scr_BImg2D);
            guiPutImage(hBoard,left,top,right,top+_SCROLL_ICON_HEIGHT_-1,icon_Gui_Scr_Up2D);
            guiPutImage(hBoard,left,bottom-_SCROLL_ICON_HEIGHT_,right,bottom,icon_Gui_Scr_Down2D);
        }
		else
		{
            guiSetPattern(icon_Gui_Scr_BImg);            
            guiPutImage(hBoard,left+1,top+1,right-1,top+_SCROLL_ICON_HEIGHT_-2,icon_Gui_Scr_Up);
            guiPutImage(hBoard,left+1,bottom-_SCROLL_ICON_HEIGHT_+2,right-1,bottom-1,icon_Gui_Scr_Down);
			
            guiDrawLine (hBoard,left, top,right, top,GUI_LIGHTGRAY, GUI_SOLID );
            guiDrawLine (hBoard,left,top,left,top+_SCROLL_ICON_HEIGHT_-1, GUI_LIGHTGRAY,GUI_SOLID );
            guiDrawLine (hBoard,left,top+_SCROLL_ICON_HEIGHT_-1,right,top+_SCROLL_ICON_HEIGHT_-1,GUI_BLACK, GUI_SOLID);
            guiDrawLine (hBoard,right,top,right,top+_SCROLL_ICON_HEIGHT_-1,GUI_BLACK, GUI_SOLID );  
			
            guiDrawLine (hBoard,left, bottom-_SCROLL_ICON_HEIGHT_+1,right, bottom-_SCROLL_ICON_HEIGHT_+1,GUI_LIGHTGRAY, GUI_SOLID );
            guiDrawLine (hBoard,left,bottom-_SCROLL_ICON_HEIGHT_+1,left,bottom, GUI_LIGHTGRAY,GUI_SOLID );
            guiDrawLine (hBoard,left,bottom,right,bottom,GUI_BLACK, GUI_SOLID);
            guiDrawLine (hBoard,right,bottom-_SCROLL_ICON_HEIGHT_+1,right,bottom,GUI_BLACK, GUI_SOLID );  
        }
		
		if(!(ptScroll->base.style&SCROLL_SPIN))
		{
			if(!( ptScroll->base.style&SCROLL_3DMODE) )  
			{
                guiFillRect (hBoard, left+1,top+_SCROLL_ICON_HEIGHT_,right-1 ,bottom-_SCROLL_ICON_HEIGHT_-1,GUI_LIGHTGRAY,GUI_IMAGE );          
                guiClearBlock(hBoard, left+1,iBarMin,right-1,iBarMax-1,GUI_BLACK,REPLACE_STYLE);
			}
            else // SCROLL_3DMODE
            {
                guiFillRect (hBoard, left,top+_SCROLL_ICON_HEIGHT_,right ,bottom-_SCROLL_ICON_HEIGHT_,GUI_LIGHTGRAY,GUI_IMAGE );  
                guiClearBlock( hBoard,left,iBarMin,right,iBarMax,GUI_DARKGRAY,REPLACE_STYLE);
                guiDrawLine ( hBoard,left, iBarMin,right, iBarMin,GUI_LIGHTGRAY, GUI_SOLID );
                guiDrawLine (hBoard,left,iBarMin,left,iBarMax, GUI_LIGHTGRAY,GUI_SOLID );
                guiDrawLine (hBoard,left,iBarMax,right,iBarMax,GUI_BLACK, GUI_SOLID);
                guiDrawLine (hBoard,right,iBarMin,right,iBarMax,GUI_BLACK, GUI_SOLID );  
            }
		}
    }	 
	
	return 1;
}

//===========================================================
static int _guiScroll_Action(HNDL handle , WORD Pen_Type, WORD x , WORD y)
{
    
    PTGUISCROLL ptScroll;	
	TGuiMessage tMessage;
	int iBarMin,iBarMax,iTemp=0;
	HNDL hBoard;
    WORD nType,wOldPos,tem_y=y,tem_x=x;
    int nCurrent=0,nMin=0,nMax=0;
    WORD nTemp=0;    
    int left,right,top,bottom;
	short nPos=0;
	
	if(handle == NULL) 
		return STATUS_ERR;
	ptScroll=(PTGUISCROLL)handle;   
	if(ptScroll->base.checkFlag != GUI_CONTROL_CHECK_FLAG)
		return STATUS_ERR;
    if(ptScroll->base.status & CONTROL_NOT_ACTIVE)
    {          
		return STATUS_ERR;
    }
	
    guiEnterWCS();
	tMessage.handle = handle;
	tMessage.messageType=Pen_Type;
    tMessage.x = 0;
    tMessage.y = 0;	
	
    nTemp = ptScroll->Bar_Max -  ptScroll->Bar_Min+1;    
    nType = _guiScroll_GetRegion_type( handle ,  x ,  y);
    /*tong
    if(nType == -1)
    {
	guiExitWCS() ;                                  
	return STATUS_ERR; 
    } 
	*/
    left = 0;
    right = ptScroll->base.right - ptScroll->base.left;
    top = 0;
    bottom = ptScroll->base.bottom - ptScroll->base.top;
    iBarMin = ptScroll->Bar_Min;
	iBarMax = ptScroll->Bar_Max;
	
    if(ptScroll->base.style&SCROLL_POPUP)
	{
		_guiConvertXY(handle,&left,&top);
		_guiConvertXY(handle,&right,&bottom);
		_guiConvertXY(handle,&iTemp,&iBarMin);
		_guiConvertXY(handle,&iTemp,&iBarMax);
		hBoard=0;
	}
	else
	{
		hBoard=handle;
	}
	
    switch(Pen_Type)
    {       
	case PENDOWN:				
		ptScroll->nOld_y = tem_y-ptScroll->base.top;                
		ptScroll->nOld_x = tem_x-ptScroll->base.left;
		ptScroll->nOld_Min = ptScroll->Bar_Min;
		
		switch(nType)

⌨️ 快捷键说明

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