Пример #1
0
	void ResetPagePos()
	{
		int xPage = 0;
		int yPage = 0;
		int cxPage = 0;
		int cyPage = 0;

		RECT rtSView;
		XEle_GetClientRect(m_hSview,&rtSView);
		RECT rtTabBar;
		XEle_GetClientRect(m_hEle,&rtTabBar);

		switch (m_Direction)
		{
		case tabbar_direction_left:
			{
				xPage = rtSView.right;
				cxPage = rtTabBar.right - rtSView.right;
				cyPage = rtTabBar.bottom;
			}
			break;
		case tabbar_direction_top:
			{
				yPage = rtSView.bottom;
				cxPage= rtTabBar.right;
				cyPage= rtTabBar.bottom - rtSView.bottom;
			}
			break;
		case tabbar_direction_right:
			{
				cxPage = rtTabBar.right - rtSView.right;
				cyPage = rtTabBar.bottom;
			}
			break;
		case tabbar_direction_bottom:
			{
				cxPage = rtTabBar.right;
				cyPage = rtTabBar.bottom - rtSView.bottom;
			}
			break;
		}

		RECT rtPage;
		rtPage.left = xPage;
		rtPage.top = yPage;

		rtPage.right = rtPage.left+ cxPage;
		rtPage.bottom= rtPage.top + cyPage;

		for (int i = 0; i < m_LabelM.size(); i++)
		{
			XEle_SetRect(m_LabelM[i].hPage,&rtPage);
		}

	}
Пример #2
0
BOOL CALLBACK MenuBar_OnDraw(HELE hEle,HDRAW hDraw)
{
	if(MENUBAR(hEle)->bAdjust)
		MenuBar_Adjust(hEle);

	RECT rect;
	XEle_GetClientRect(hEle,&rect);

	//	if(XEle_IsBkTransparent(hEle))
	//		Ele_DrawTransparent(hEle,hdc,&rect);
	//	else
	//	{
	XDraw_FillSolidRect_(hDraw,&rect,((ele_*)hEle)->bkColor);
	if(MENUBAR(hEle)->hImage)
	{
		XDraw_HImageSuper_(hDraw,MENUBAR(hEle)->hImage,&rect);
	}else
	{
		HPEN hPen=XDraw_CreatePen_(hDraw,PS_SOLID,1,RGB(180,180,180));
		HGDIOBJ hOld=XDraw_SelectObject_(hDraw,hPen);
		XDraw_MoveToEx_(hDraw,0,rect.bottom-1,NULL);
		XDraw_LineTo_(hDraw,rect.right,rect.bottom-1);
		//	SelectObject(hdc,hOld);
		//	DeleteObject(hPen);
	}
	//	}
	return TRUE;
}
Пример #3
0
	void ResetBtnPos()
	{
		int x = 0;
		int y = 0;
		RECT rtBtn;

		int buttonWidth  = 0;
		int buttonHeight = 0;
		int nSize = 0;
// 		RECT rtClient;
// 		XEle_GetClientRect(m_hEle,&rtClient);
		for (int i = 0; i < m_LabelM.size(); i++)
		{
			XEle_GetClientRect(m_LabelM[i].hBtn,&rtBtn);
			buttonWidth = rtBtn.right;
			buttonHeight= rtBtn.bottom;
			switch (m_Direction)
			{
			case tabbar_direction_left:
				{
					rtBtn.left = 0;
					rtBtn.top += nSize;
					rtBtn.right = rtBtn.left + buttonWidth;
					rtBtn.bottom = rtBtn.top + buttonHeight;
					nSize += buttonHeight;
				}
				break;
			case tabbar_direction_top:
				{
					rtBtn.left += nSize;
					rtBtn.top  = 0;
					rtBtn.right = rtBtn.left + buttonWidth;
					rtBtn.bottom = rtBtn.top + buttonHeight;
					nSize += buttonWidth;
				}
				break;
			case  tabbar_direction_right:
				{
					rtBtn.left = 0;
					rtBtn.top += nSize;
					rtBtn.right = rtBtn.left + buttonWidth;
					rtBtn.bottom = rtBtn.top + buttonHeight;
					nSize += buttonHeight;
				}
				break;
			case tabbar_direction_bottom:
				{
					rtBtn.left += nSize;
					rtBtn.top  = 0;
					rtBtn.right = rtBtn.left + buttonWidth;
					rtBtn.bottom = rtBtn.top + buttonHeight;
					nSize += buttonWidth;
				}
				break;
			}
			XEle_SetRect(m_LabelM[i].hBtn,&rtBtn);
		}
	}
Пример #4
0
BOOL CALLBACK Btn_OnDraw(HELE hEle,HDRAW hDraw)
{
	RECT rect;
	XEle_GetClientRect(hEle,&rect);

	button_ *pButton=BUTTON(hEle);
	if(pButton->bAnimation) //绘制动画
	{
		int index=pButton->pAnimation->index;
		if(-1==index)
			index=0;
		else if(index>=pButton->pAnimation->countFrame)
			index=pButton->pAnimation->countFrame-1;

		XTRACE("绘制动画 %d \n",index);
		button_animation_item_ *pItem=(button_animation_item_*)XArray_GetAt(pButton->pAnimation->hArrayItem,index);

		if(pItem->hImage)
			XDraw_HImageSuper_(hDraw,pItem->hImage,&rect);
	}else
	{
		if(FALSE==((ele_*)hEle)->bEnable) //禁用
		{
			Btn_DrawDisable(hEle,hDraw,rect);
		}else if(pButton->bCheck && pButton->hImage_check) //选中 有图片
		{
			Btn_DrawCheck(hEle,hDraw,rect);
		}else if(STATE_LEAVE==pButton->state)
		{
			Btn_DrawLeave(hEle,hDraw,rect);
		}else if(STATE_STAY==pButton->state)
		{
			Btn_DrawStay(hEle,hDraw,rect);
		}else if(STATE_DOWN==pButton->state || pButton->bCheck)
		{
			Btn_DrawDown(hEle,hDraw,rect);
		}
	}

	Btn_DrawIconAndText(hEle,hDraw,rect);

	if(((ele_*)hEle)->bDrawFocus &&  hEle==XWnd_GetFocusEle(XEle_GetHWindow(hEle))) //绘制焦点
	{
		RECT rcFocus={2,2,rect.right-2,rect.bottom-2};
		XDraw_FocusRect_(hDraw,&rcFocus);
	}

	return TRUE;
}
Пример #5
0
BOOL CALLBACK Gif_OnDraw(HELE hEle,HDRAW hDraw)
{
	RECT rect;
	XEle_GetClientRect(hEle,&rect);

	Gif_DrawFrameGif(hEle,hDraw);

	if(((ele_*)hEle)->bBorder)
	{
		HBRUSH hBrush=XDraw_CreateSolidBrush_(hDraw,((ele_*)hEle)->borderColor);
		XDraw_FrameRect_(hDraw,&rect,hBrush);
	//	DeleteObject(hBrush);
	}
	return TRUE;
}
Пример #6
0
BOOL CALLBACK MenuBarBtn_OnDraw(HELE hEle,HDRAW hDraw)
{
	button_ *pButton=BUTTON(hEle);
	RECT rect;
	XEle_GetClientRect(hEle,&rect);
	if(STATE_LEAVE==pButton->state)
	{
		if(BUTTON(hEle)->hImage_leave)
		{
			return FALSE;
		}//else
		//			Ele_DrawTransparent(hEle,hdc,&rect);
	}else if(STATE_STAY==pButton->state)
	{
		XDraw_GradientFill2_(hDraw,RGB(250,250,250),RGB(220,220,220),&rect,GRADIENT_FILL_RECT_V);
		if(BUTTON(hEle)->hImage_stay)
		{
			return FALSE;
		}else
		{
			HBRUSH hBrush=XDraw_CreateSolidBrush_(hDraw,RGB(130,130,130));
			XDraw_FrameRect_(hDraw,&rect,hBrush);
			//	DeleteObject(hBrush);
		}
	}else if(STATE_DOWN==pButton->state)
	{
		XDraw_GradientFill2_(hDraw,RGB(200,200,200),RGB(250,250,250),&rect,GRADIENT_FILL_RECT_V);
		if(BUTTON(hEle)->hImage_down)
		{
			return FALSE;
		}else
		{
			HBRUSH hBrush=XDraw_CreateSolidBrush_(hDraw,RGB(130,130,130));
			XDraw_FrameRect_(hDraw,&rect,hBrush);
			//DeleteObject(hBrush);
		}
	}

	if(pButton->hString)
	{
		wchar_t *pText=XStr_GetBuffer(pButton->hString);
		if(pText)
			XDraw_DrawText_(hDraw,pText,XStr_GetLength(pButton->hString),&rect,DT_VCENTER | DT_CENTER | DT_SINGLELINE);
	}

	return TRUE;
}
Пример #7
0
	int GetLableSize()
	{
		int nsize = 0;
		for (int i = 0 ;i < m_LabelM.size(); i++)
		{
			RECT rt;
			XEle_GetClientRect(m_LabelM[i].hBtn,&rt);
			if (m_bHorizon)
			{
				nsize += rt.right;
			}else
			{
				nsize += rt.bottom;
			}
		}
		return nsize;
	}
Пример #8
0
	void ReSizeView(int nsize)
	{
		int cx = 0;
		int cy = 0;
		RECT rtSview;
		XEle_GetClientRect(m_hSview,&rtSview);
		if (m_bHorizon)
		{
			cy = rtSview.bottom;
			cx = nsize;
		}else
		{
			cx = rtSview.right;
			cy = nsize;
		}
		XSView_SetTotalSize(m_hSview,cx,cy);
	}
Пример #9
0
BOOL CALLBACK Pic_OnDraw(HELE hEle,HDRAW hDraw)
{
    RECT rect;
    XEle_GetClientRect(hEle,&rect);

    if(PICTURE(hEle)->hImage_bk)
    {
        XDraw_HImageSuper_(hDraw,PICTURE(hEle)->hImage_bk,&rect);
    }

    if(((ele_*)hEle)->bBorder)
    {
        HBRUSH hBrush=XDraw_CreateSolidBrush_(hDraw,((ele_*)hEle)->borderColor);
        XDraw_FrameRect_(hDraw,&rect,hBrush);
        //DeleteObject(hBrush);
    }
    return TRUE;
}
Пример #10
0
/// @brief ÉèÖû¬¿éλÖÃ.
/// @param hEle   ÔªËؾä±ú
/// @param pos  »¬¿éλÖÃ.
void WINAPI XSliderBar_SetPos(HELE hEle,int pos)     //ÉèÖû¬¿éλÖÃ
{
	IsSliderDebug(hEle,__FUNCTION__);
	slider_ *pObj=SLIDER(hEle);

	RECT rect;
	XEle_GetClientRect(hEle,&rect);

	if(pObj->bHorizon)
	{
		int cx=rect.right-rect.left;
		int x=(int)(pos*pObj->minPos);
		RECT rc;
		rc.left=x;
		rc.top=0;
		rc.right=rc.left+pObj->btnWidth;
		rc.bottom=rect.bottom-rect.top;
		if(rc.right>cx)
		{
			rc.right=cx;
			rc.left=rc.right-pObj->btnWidth;
		}
		XEle_SetRect(pObj->hButton,&rc);
	}else
	{
		int cy=rect.bottom-rect.top;
		int y=(int)(pos*pObj->minPos);
		RECT rc=rect;
		rc.bottom=rect.bottom-y;
		rc.top=rc.bottom-pObj->btnWidth;
		if(rc.top<0)
		{
			rc.bottom=pObj->btnWidth;
			rc.top=0;
		}
		XEle_SetRect(pObj->hButton,&rc);
	}	
	SLIDER(hEle)->pos=pos;
	XEle_RedrawEle(hEle);
}
Пример #11
0
BOOL CALLBACK SliderBar_OnDrawButton(HELE hEle,HDRAW hDraw)
{
	RECT rect;
	XEle_GetClientRect(hEle,&rect);
	HELE hParetn=XEle_GetParentEle(hEle);

	if(BUTTON(hEle)->hImage_leave) return FALSE;
	if(BUTTON(hEle)->hImage_stay) return FALSE;
	if(BUTTON(hEle)->hImage_down) return FALSE;
	if(BUTTON(hEle)->hImage_check) return FALSE;
	if(BUTTON(hEle)->hImage_disable) return FALSE;

	if(hParetn && FALSE==((slider_*)hParetn)->bHorizon)
	{
		XDraw_GradientFill4_(hDraw,RGB(250,250,250),RGB(210,210,210),RGB(200,200,200),RGB(230,230,230),&rect,GRADIENT_FILL_RECT_H);
	}else
		XDraw_GradientFill4_(hDraw,RGB(250,250,250),RGB(210,210,210),RGB(200,200,200),RGB(230,230,230),&rect,GRADIENT_FILL_RECT_V);

	{
		//»æÖÆÍâ±ßÏß
		HBRUSH hBrush=XDraw_CreateSolidBrush_(hDraw,RGB(130,130,130));
		XDraw_FrameRect_(hDraw,&rect,hBrush);
		//DeleteObject(hBrush);
	}

	{
		RECT rc=rect;
		rc.left++;
		rc.top++;
		rc.right--;
		rc.bottom--;

		HBRUSH hBrush=XDraw_CreateSolidBrush_(hDraw,RGB(250,250,250));
		XDraw_FrameRect_(hDraw,&rc,hBrush);
		//DeleteObject(hBrush);
	}
	return TRUE;
}
Пример #12
0
	void SetLabelDirection(tabbar_direction_ nDirection)
	{
		m_Direction = nDirection;

		if (nDirection == tabbar_direction_left ||
			nDirection == tabbar_direction_right)
		{
			XSView_ShowSBarV(m_hSview,TRUE);
			XSView_ShowSBarH(m_hSview,FALSE);
			XSView_ScrollPosV(m_hSview,0);
			XSView_ScrollPosH(m_hSview,0);
			m_bHorizon = FALSE;
		}else
		{
			XSView_ShowSBarV(m_hSview,FALSE);
			XSView_ShowSBarH(m_hSview,TRUE);
			XSView_ScrollPosH(m_hSview,0);
			XSView_ScrollPosV(m_hSview,0);
			m_bHorizon = TRUE;
		}


		int labelSize = GetLableSize();
		if (m_bHorizon)
		{
			ReSizeView(labelSize);
		}else
		{
			ReSizeView(labelSize);
		}




		RECT rtView;
		RECT rtTabBar;
		XEle_GetClientRect(m_hEle,&rtTabBar);
		switch (m_Direction)
		{
		case tabbar_direction_left:
			{
				rtView.left = 0;
				rtView.top  = 0;
				rtView.right = m_ViewWidth;
				rtView.bottom = rtTabBar.bottom;
			}
			break;
		case tabbar_direction_top:
			{
				rtView.left = 0;
				rtView.top  = 0;
				rtView.right = rtTabBar.right;
				rtView.bottom = m_ViewHeight;
			}
			break;
		case tabbar_direction_right:
			{
				rtView.left = rtTabBar.right - m_ViewWidth;
				rtView.top  = 0;
				rtView.right = rtTabBar.right;
				rtView.bottom = rtTabBar.bottom;
			}
			break;
		case tabbar_direction_bottom:
			{
				rtView.top = rtTabBar.bottom - m_ViewHeight;
				rtView.left = 0;
				rtView.right = rtTabBar.right;
				rtView.bottom = rtTabBar.bottom;
			}
			break;
		}
		XEle_SetRect(m_hSview,&rtView);


		 
		ResetBtnPos();
		ResetPagePos();
		XEle_RedrawEle(m_hEle);
	}
Пример #13
0
	_tagLabel CreateNewLabel(int labelSize,const wchar_t* pLabelName)
	{
		int xBtn = 0;
		int yBtn = 0;
		int cxBtn = 100;
		int cyBtn = 20;
		if (m_bHorizon)
		{
			xBtn = labelSize;
		}else
		{
			yBtn = labelSize;
		}
		
		int xPage = 0;
		int yPage = 0;
		int cxPage = 0;
		int cyPage = 0;

		RECT rtSView;
		XEle_GetClientRect(m_hSview,&rtSView);
		RECT rtTabBar;
		XEle_GetClientRect(m_hEle,&rtTabBar);

		switch (m_Direction)
		{
		case tabbar_direction_left:
			{
				xPage = rtSView.right;
				cxPage = rtTabBar.right - rtSView.right;
				cyPage = rtTabBar.bottom;
			}
			break;
		case tabbar_direction_top:
			{
				yPage = rtSView.bottom;
				cxPage= rtTabBar.right;
				cyPage= rtTabBar.bottom - rtSView.bottom;
			}
			break;
		case tabbar_direction_right:
			{
				cxPage = rtTabBar.right - rtSView.right;
				cyPage = rtTabBar.bottom;
			}
			break;
		case tabbar_direction_bottom:
			{
				cxPage = rtTabBar.right;
				cyPage = rtTabBar.bottom - rtSView.bottom;
			}
			break;
		}

		_tagLabel labelData;
		labelData.hBtn = XBtn_Create(xBtn,yBtn,cxBtn,cyBtn,pLabelName,m_hSview);
		XBtn_SetType(labelData.hBtn,button_type_radio);
		XBtn_SetStyle(labelData.hBtn,button_style_default);
		labelData.hPage = XEle_Create(xPage,yPage,cxPage,cyPage,m_hEle);

		XEle_RegEventCPP1(labelData.hBtn,XE_BUTTON_CHECK,&CTabBar::OnLabelCheck);

		XEle_AddBkFill(labelData.hPage,rand(),255);

		return labelData;
	}
Пример #14
0
BOOL CALLBACK SliderBar_OnDraw(HELE hEle,HDRAW hDraw)
{
	RECT rect;
	XEle_GetClientRect(hEle,&rect);

	slider_ *pObject=SLIDER(hEle);

	if(pObject->hImage_bk)
	{
		XDraw_HImageSuper_(hDraw,pObject->hImage_bk,&rect);
	}else
	{
		if(pObject->bHorizon) //ˮƽ
		{
			int middle=(rect.bottom-rect.top)/2+1;

			HRGN hRgn=XDraw_CreateRoundRectRgn_(hDraw,0,middle-4,rect.right+1,middle+4,3,3);
			XDraw_SelectClipRgn_(hDraw,hRgn);

			//»æÖÆÍâ±ßÏß
			HBRUSH hBrush=XDraw_CreateSolidBrush_(hDraw,RGB(130,130,130));
			XDraw_FrameRgn_(hDraw,hRgn,hBrush,1,1);
			//DeleteObject(hBrush);

			/////////
			HPEN hPen1=XDraw_CreatePen_(hDraw,PS_SOLID,1,RGB(80,80,80));
			HGDIOBJ hOld1=XDraw_SelectObject_(hDraw,hPen1);

			XDraw_MoveToEx_(hDraw,3,         middle-4,NULL);
			XDraw_LineTo_(hDraw,rect.right-2,middle-4);

			//XDraw_SelectObject_(hDraw,hOld1);
			//DeleteObject(hPen1);
			///////////////
			HPEN hPen=XDraw_CreatePen_(hDraw,PS_SOLID,1,RGB(200,200,200));
			HGDIOBJ hOld=XDraw_SelectObject_(hDraw,hPen);

			XDraw_MoveToEx_(hDraw,2,         middle-3,NULL);
			XDraw_LineTo_(hDraw,rect.right-2,middle-3);

		//	SelectObject(hdc,hOld);
		//	DeleteObject(hPen);

			XDraw_SelectClipRgn_(hDraw,NULL);
		//	DeleteObject(hRgn);
		}else //´¹Ö±
		{
			int middle=(rect.right-rect.left)/2+1;

			HRGN hRgn=XDraw_CreateRoundRectRgn_(hDraw,middle-4,0,middle+4,rect.bottom,3,3);
			XDraw_SelectClipRgn_(hDraw,hRgn);
			//»æÖÆÍâ±ßÏß
			HBRUSH hBrush=XDraw_CreateSolidBrush_(hDraw,RGB(130,130,130));
			XDraw_FrameRgn_(hDraw,hRgn,hBrush,1,1);
			//DeleteObject(hBrush);

			/////////
			HPEN hPen1=XDraw_CreatePen_(hDraw,PS_SOLID,1,RGB(80,80,80));
			HGDIOBJ hOld1=XDraw_SelectObject_(hDraw,hPen1);

			XDraw_MoveToEx_(hDraw, middle-4,3,NULL);
			XDraw_LineTo_(hDraw,middle-4,rect.bottom-2);

	//		SelectObject(hdc,hOld1);
	//		DeleteObject(hPen1);
			///////////////
			HPEN hPen=XDraw_CreatePen_(hDraw,PS_SOLID,1,RGB(200,200,200));
			HGDIOBJ hOld=XDraw_SelectObject_(hDraw,hPen);

			XDraw_MoveToEx_(hDraw, middle-3,2,NULL);
			XDraw_LineTo_(hDraw,middle-3,rect.bottom-2);

			//SelectObject(hdc,hOld);
			//DeleteObject(hPen);

			XDraw_SelectClipRgn_(hDraw,NULL);
			//DeleteObject(hRgn);
		}
	}

	HDC hdc=XDraw_GetHDC_(hDraw);
	//½ø¶ÈÌùͼ
	if(pObject->bHorizon) //ˮƽ
	{
		if(pObject->hImage)
		{
			int cx=0;
			if(0!=pObject->range)
			{
				double  pos=(double)pObject->pos/pObject->range;
				int width=rect.right-rect.left;
				cx=(int)(pos*width);
			}

			RECT rc=rect;
			rc.right=cx;

			switch(XImage_GetDrawType(pObject->hImage))
			{
			case XC_IMAGE_DEFAULT: //ÆÕͨ:
			case XC_IMAGE_ADAPTIVE:	
				XDraw_HImage2_(hDraw,pObject->hImage,rc.left,rc.top,rc.right-rc.left,rc.bottom-rc.top);
				break;
			case XC_IMAGE_STRETCH: //À­Éì
				XDraw_HImageStretch_(hDraw,pObject->hImage,rc.left,rc.top,rc.right-rc.left,rc.bottom-rc.top);
				break;
			case XC_IMAGE_TILE://ƽÆÌ
				XDraw_HImageExTile_(hDraw,pObject->hImage,&rc,0);
				break;
			}
		}
	}else //´¹Ö±
	{
		if(pObject->hImage)
		{
			int height=0;
			if(0!=pObject->range)
			{
				double  pos=(double)pObject->pos/pObject->range;
				height=(int)(pos*(rect.bottom-rect.top));
			}

			RECT rc=rect;
			rc.top=rc.bottom-height;

			switch(XImage_GetDrawType(pObject->hImage))
			{
			case XC_IMAGE_DEFAULT: //ÆÕͨ:
			case XC_IMAGE_ADAPTIVE:
				{	
					RECT rc2=rc;
					rc2.bottom=XImage_GetHeight(pObject->hImage);
					rc2.top=rc2.bottom-height;
					XDraw_HImageSuper2_(hDraw,pObject->hImage,&rc,&rc2);
				}
				break;
			case XC_IMAGE_STRETCH: //À­Éì
				XDraw_HImageStretch_(hDraw,pObject->hImage,rc.left,rc.top,rc.right-rc.left,height);
				break;
			case XC_IMAGE_TILE://ƽÆÌ
				XDraw_HImageExTile_(hDraw,pObject->hImage,&rc,1);
				break;
			}
		}
	}

	return TRUE;
}
Пример #15
0
BOOL CALLBACK SliderBar_OnLButtonDown(HELE hEle,UINT flags,POINT *pPt)
{
	slider_ *pObj=SLIDER(hEle);
	if(!pObj->bDown)
	{
		pObj->bDown=TRUE;
		RECT rect;
		XEle_GetClientRect(hEle,&rect);
		int cx=rect.right-rect.left;
		int cy=rect.bottom-rect.top;
		int btnWidth= ((ele_*)(pObj->hButton))->rect.right-((ele_*)(pObj->hButton))->rect.left;
		int btnHeight= ((ele_*)(pObj->hButton))->rect.bottom-((ele_*)(pObj->hButton))->rect.top;
		if(pObj->bHorizon)
		{
			int x=pPt->x-(btnWidth/2);

			if(x<0)
				x=0;
			else if(x>(cx-btnWidth)) 
				x=cx-btnWidth;

			int pos=(int)( x/pObj->minPos);
			if(pos != pObj->pos)
			{
				pObj->pos=pos;
				RECT rc;
				rc.left=(long)(pos*pObj->minPos);
				rc.top=cy/2-btnHeight/2;
				rc.right=rc.left+btnWidth;
				rc.bottom=rc.top+btnHeight;
				XEle_SetRect(pObj->hButton,&rc);
				XEle_SetCapture(hEle);   //ÉèÖÃÔªËØÊó±ê²¶»ñ

				BUTTON(pObj->hButton)->state=STATE_DOWN;
				Ele_SendEvent(hEle,XE_SLIDER_CHANGE,(WPARAM)pObj->pos,0);
				XEle_RedrawEle(hEle);
			}
		}else
		{
			int height=rect.bottom-pPt->y;
			height=height-(btnHeight/2);

			if(height<0)
				height=0;
			else if(height>(cy-btnHeight)) 
				height=cy-btnHeight;

			int pos=(int)( height/pObj->minPos);
			if(pos != pObj->pos)
			{
				pObj->pos=pos;
				RECT rc=rect;
				rc.left=cx/2-btnWidth/2;
				rc.right=rc.left+btnWidth;
				rc.bottom=rc.bottom-height;
				rc.top=rc.bottom-pObj->btnWidth;
				XEle_SetRect(pObj->hButton,&rc);
				XEle_SetCapture(hEle);   //ÉèÖÃÔªËØÊó±ê²¶»ñ
				Ele_SendEvent(hEle,XE_SLIDER_CHANGE,(WPARAM)pObj->pos,0);
				XEle_RedrawEle(hEle);
			}
		}
	}
	return FALSE;
}