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

📄 uislider.c

📁 嵌入工linux开发的源码
💻 C
📖 第 1 页 / 共 2 页
字号:
    }

    left = 0;
    right = ptSlider->base.right-ptSlider->base.left;
    top = 0;
    bottom = ptSlider->base.bottom-ptSlider->base.top;
    if( !( ptSlider->base.style & SLIDER_VERTICAL))
        ptSlider->current_pos = left+SLIDER_H_WIDTH/2
                                        + (right-left+1-SLIDER_H_WIDTH) 
                                        * (ptSlider->current-ptSlider->min+1)/(ptSlider->max-ptSlider->min+1);                                                               
    else
        ptSlider->current_pos = bottom-SLIDER_V_HEIGHT/2
                                        - (bottom-top+1-SLIDER_V_HEIGHT) 
                                        * (ptSlider->current-ptSlider->min+1)/(ptSlider->max-ptSlider->min+1); 
	return 1;
}

//==========================================================
static int  _guiSlider_Update2( DWORD handle)
{
	TGUISLIDER  * ptSlider;
    unsigned short left=0,right=0,top=0,bottom=0;
    
	if(handle == NULL)
	{       
    return STATUS_ERR;
    }
	 ptSlider=(TGUISLIDER *)handle;
     if(ptSlider->base.checkFlag != GUI_CONTROL_CHECK_FLAG)
    {       
       return STATUS_ERR;
    }

    left = 0;
    right = ptSlider->base.right-ptSlider->base.left;
    top = 0;
    bottom = ptSlider->base.bottom-ptSlider->base.top;
    if( !( ptSlider->base.style & SLIDER_VERTICAL))
        ptSlider->current = (ptSlider->current_pos - left -SLIDER_H_WIDTH/2)
                                        *(ptSlider->max-ptSlider->min)
                                        /(right-left-SLIDER_H_WIDTH)
                                        +ptSlider->min; 
                                                                                                   
    else
         ptSlider->current = (bottom - ptSlider->current_pos - SLIDER_V_HEIGHT/2)
                                     *(ptSlider->max-ptSlider->min)
                                     / (bottom-top-SLIDER_V_HEIGHT)
                                     +ptSlider->min;           
                                       
	return 1;
}

//====================================================================
static int  _guiSlider_Paint( DWORD handle)
{
	TGUISLIDER  * ptSlider;
    unsigned short left=0,right=0,top=0,bottom=0; 
    
	if(handle == NULL)
	{       
    return STATUS_ERR;
    }
	 ptSlider=(TGUISLIDER *)handle;
     if(ptSlider->base.checkFlag != GUI_CONTROL_CHECK_FLAG)
    {       
       return STATUS_ERR;
    }

    left = 0;
    right = ptSlider->base.right-ptSlider->base.left;
    top = 0;
    bottom = ptSlider->base.bottom-ptSlider->base.top;

     guiSetPattern(icon_Gui_Slider_Grid);
     guiClearBlock(handle, left,top,right,bottom,GUI_WHITE,REPLACE_STYLE);
     if( !( ptSlider->base.style & SLIDER_VERTICAL))
     {
             if(SLIDER_3DMODE & ptSlider->base.style)
             {
                     
                     guiClearBlock(handle,left+SLIDER_H_WIDTH/2,(bottom+top-SLIDER_RECTWIDTH)/2,
                                       right -SLIDER_H_WIDTH/2,(bottom+top-SLIDER_RECTWIDTH)/2+SLIDER_RECTWIDTH,
                                       GUI_DARKGRAY,REPLACE_STYLE);                       
                      guiDrawLine ( handle,right -SLIDER_H_WIDTH/2,(bottom+top-SLIDER_RECTWIDTH)/2,right -SLIDER_H_WIDTH/2, (bottom+top-SLIDER_RECTWIDTH)/2+SLIDER_RECTWIDTH,GUI_LIGHTGRAY, GUI_SOLID );
                      guiDrawLine ( handle,left+SLIDER_H_WIDTH/2, (bottom+top-SLIDER_RECTWIDTH)/2+SLIDER_RECTWIDTH, right -SLIDER_H_WIDTH/2, (bottom+top-SLIDER_RECTWIDTH)/2+SLIDER_RECTWIDTH,GUI_LIGHTGRAY, GUI_SOLID );
                      guiDrawLine ( handle,left+SLIDER_H_WIDTH/2, (bottom+top-SLIDER_RECTWIDTH)/2, right -SLIDER_H_WIDTH/2, (bottom+top-SLIDER_RECTWIDTH)/2,GUI_BLACK, GUI_SOLID );
                      guiDrawLine ( handle,left+SLIDER_H_WIDTH/2, (bottom+top-SLIDER_RECTWIDTH)/2, left+SLIDER_H_WIDTH/2, (bottom+top-SLIDER_RECTWIDTH)/2+SLIDER_RECTWIDTH,GUI_BLACK, GUI_SOLID );
                      //guiDrawLine ( handle,wGap, top+2, wGap, bottom-1,GUI_BLACK, GUI_SOLID );
                     
                      guiClearBlock(handle,ptSlider->current_pos-SLIDER_H_WIDTH/2 ,top,ptSlider->current_pos+SLIDER_H_WIDTH/2,
                                    bottom-1,GUI_DARKGRAY,REPLACE_STYLE);  
                      guiDrawLine ( handle,ptSlider->current_pos-SLIDER_H_WIDTH/2, top, ptSlider->current_pos+SLIDER_H_WIDTH/2, top,GUI_LIGHTGRAY, GUI_SOLID );
                      guiDrawLine ( handle,ptSlider->current_pos-SLIDER_H_WIDTH/2, top, ptSlider->current_pos-SLIDER_H_WIDTH/2, bottom,GUI_LIGHTGRAY, GUI_SOLID );
                      guiDrawLine ( handle,ptSlider->current_pos+SLIDER_H_WIDTH/2, top, ptSlider->current_pos+SLIDER_H_WIDTH/2, bottom,GUI_BLACK, GUI_SOLID );
                      guiDrawLine ( handle,ptSlider->current_pos-SLIDER_H_WIDTH/2, bottom, ptSlider->current_pos+SLIDER_H_WIDTH/2, bottom,GUI_BLACK, GUI_SOLID );
                      
             }
             else
             {
                      guiFillRect (handle,left+SLIDER_H_WIDTH/2,top+(bottom-top-SLIDER_RECTWIDTH)/2,
                                       right +1-SLIDER_H_WIDTH/2,top+(bottom-top-SLIDER_RECTWIDTH)/2+SLIDER_RECTWIDTH,GUI_BLACK,GUI_IMAGE );           
                      guiDrawRect ( handle,left+SLIDER_H_WIDTH/2,top+(bottom-top-SLIDER_RECTWIDTH)/2,
                                       right +1-SLIDER_H_WIDTH/2,top+(bottom-top-SLIDER_RECTWIDTH)/2+SLIDER_RECTWIDTH,GUI_DARKGRAY,GUI_SOLID);
                      guiClearBlock(handle,ptSlider->current_pos-SLIDER_H_WIDTH/2 ,top,ptSlider->current_pos+SLIDER_H_WIDTH/2,bottom-1,GUI_BLACK,REPLACE_STYLE);  
              }
     }
     else
     {
        if(SLIDER_3DMODE & ptSlider->base.style)
        {
              guiClearBlock(handle,(right+left-SLIDER_RECTWIDTH)/2,top+SLIDER_V_HEIGHT/2,
                               (right+left-SLIDER_RECTWIDTH)/2+SLIDER_RECTWIDTH,bottom +1-SLIDER_V_HEIGHT/2,
                               GUI_DARKGRAY,REPLACE_STYLE);              
              guiDrawLine ( handle,(right+left-SLIDER_RECTWIDTH)/2+SLIDER_RECTWIDTH, top+SLIDER_V_HEIGHT/2, (right+left-SLIDER_RECTWIDTH)/2+SLIDER_RECTWIDTH, bottom +1-SLIDER_V_HEIGHT/2,GUI_LIGHTGRAY, GUI_SOLID );
              guiDrawLine ( handle,(right+left-SLIDER_RECTWIDTH)/2, bottom +1-SLIDER_V_HEIGHT/2, (right+left-SLIDER_RECTWIDTH)/2+SLIDER_RECTWIDTH, bottom +1-SLIDER_V_HEIGHT/2,GUI_LIGHTGRAY, GUI_SOLID );
              guiDrawLine ( handle,(right+left-SLIDER_RECTWIDTH)/2, top+SLIDER_V_HEIGHT/2, (right+left-SLIDER_RECTWIDTH)/2+SLIDER_RECTWIDTH, top+SLIDER_V_HEIGHT/2,GUI_BLACK, GUI_SOLID );
              guiDrawLine ( handle,(right+left-SLIDER_RECTWIDTH)/2, top+SLIDER_V_HEIGHT/2, (right+left-SLIDER_RECTWIDTH)/2, bottom +1-SLIDER_V_HEIGHT/2,GUI_BLACK, GUI_SOLID );

              guiClearBlock(handle,left,ptSlider->current_pos-SLIDER_V_HEIGHT/2+1 ,
                               right-1,ptSlider->current_pos+SLIDER_V_HEIGHT/2,
                               GUI_DARKGRAY,REPLACE_STYLE);  
              guiDrawLine ( handle,left, ptSlider->current_pos-SLIDER_V_HEIGHT/2+1 , right-1, ptSlider->current_pos-SLIDER_V_HEIGHT/2+1 ,GUI_LIGHTGRAY, GUI_SOLID );
              guiDrawLine ( handle,left, ptSlider->current_pos-SLIDER_V_HEIGHT/2+1 , left, ptSlider->current_pos+SLIDER_V_HEIGHT/2,GUI_LIGHTGRAY, GUI_SOLID );
              guiDrawLine ( handle,right-1, ptSlider->current_pos-SLIDER_V_HEIGHT/2+1 , right-1, ptSlider->current_pos+SLIDER_V_HEIGHT/2,GUI_BLACK, GUI_SOLID );
              guiDrawLine ( handle,left, ptSlider->current_pos+SLIDER_V_HEIGHT/2, right-1, ptSlider->current_pos+SLIDER_V_HEIGHT/2,GUI_BLACK, GUI_SOLID );
        }
        else
        {
             guiFillRect (handle,(right+left-SLIDER_RECTWIDTH)/2,top+SLIDER_V_HEIGHT/2,
                               (right+left-SLIDER_RECTWIDTH)/2+SLIDER_RECTWIDTH,bottom +1-SLIDER_V_HEIGHT/2,GUI_BLACK,GUI_IMAGE );           
             guiDrawRect ( handle,(right+left-SLIDER_RECTWIDTH)/2,top+SLIDER_V_HEIGHT/2,
                               (right+left-SLIDER_RECTWIDTH)/2+SLIDER_RECTWIDTH,bottom +1-SLIDER_V_HEIGHT/2,GUI_DARKGRAY,GUI_SOLID);
             guiClearBlock(handle,left,ptSlider->current_pos-SLIDER_V_HEIGHT/2+1 ,right-1,ptSlider->current_pos+SLIDER_V_HEIGHT/2,GUI_BLACK,REPLACE_STYLE);  
        }
     }
    
	return 1;
}

//==============================================================================
static int _guiSlider_Action(HNDL handle , WORD Pen_Type, WORD x , WORD y)
{    
    TGUISLIDER *ptSlider;	
	TGuiMessage        tMessage;
    unsigned short left=0,right=0,top=0,bottom=0;    
    int  nCurrent_Old;

	if(handle == NULL) 
	return STATUS_ERR;
	ptSlider=(TGUISLIDER *)handle;   
	if(	ptSlider->base.status & CONTROL_NOT_ACTIVE)
          return STATUS_ERR;
	tMessage.handle = handle;
	tMessage.messageType=SLIDER_MOVE;
	tMessage.x=0;
	tMessage.y=0;

    // processCoordinateStart(handle);
    left = 0;
    right = ptSlider->base.right-ptSlider->base.left;
    top = 0;
    bottom = ptSlider->base.bottom-ptSlider->base.top;
   /// processCoordinateEnd(handle) ;     
   
    switch(Pen_Type)
    {
        case CTRL_SET_STYLE:
                _guiSlider_Show( handle);
                tMessage.elseInfo=CTRL_SET_STYLE; 
               break;
        case CTRL_GET_FOCUS:               
                tMessage.elseInfo=CTRL_GET_FOCUS; 
               break;

         case CTRL_DISABLE:                
                tMessage.elseInfo=CTRL_DISABLE; 
               break;
        case PENDOWN:                 
                tMessage.elseInfo=WIN_PEN_DOWN;                 
            break;

        case PENUP:               
                tMessage.elseInfo=WIN_PEN_UP;                                         
            break;

        case PENMOVE:
            nCurrent_Old = ptSlider->current;                
            if( !( ptSlider->base.style & SLIDER_VERTICAL))
            {
                 if(x<=(ptSlider->base.left+SLIDER_H_WIDTH/2))
                        ptSlider->current_pos = (left+SLIDER_H_WIDTH/2);
                 else if(x>=(ptSlider->base.right-SLIDER_H_WIDTH/2))
                        ptSlider->current_pos = (right-SLIDER_H_WIDTH/2);
                 else ptSlider->current_pos = x-ptSlider->base.left;                             
               
                _guiSlider_Update2(  handle);
                tMessage.x =  ptSlider->current;
                     
            }
            else
            {
                 if(y<=(ptSlider->base.top+SLIDER_V_HEIGHT/2))
                    ptSlider->current_pos = (top+SLIDER_V_HEIGHT/2);
                 else if(y>=(ptSlider->base.bottom-SLIDER_V_HEIGHT/2))
                        ptSlider->current_pos = (bottom-SLIDER_V_HEIGHT/2);
                 else ptSlider->current_pos = y-ptSlider->base.top;                             
           
                 _guiSlider_Update2(  handle);
                 tMessage.y =  ptSlider->current;
            }

            if(!_guiSlider_Paint(  handle) ) break;                    
             
            if(nCurrent_Old == ptSlider->current)
                break;             
            tMessage.elseInfo=WIN_PEN_MOVE; 
            guiEmptyQueue(gpTopWindow->messageQueue);
            guiEnqueue(gpTopWindow->messageQueue,&tMessage);                                     
        break;

        default :            
                break;
    }   
	return 1;
}

//**************************************************************************

⌨️ 快捷键说明

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