📄 uiscroll.c
字号:
{
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 + -