VC++中HTControl控件类的CHTSlider控制杆控件类简介
本文所述的是HTControl控件中的一个控制杆控件类文件代码,此类是完全独立的,没有任何基类。直接由WIN32API实现。你可以在SDK,MFC,wxWidget等等方式下使用它。控制中包括一个垂直的控制杆控件,使用方式和水平的完全相同。窗体必须动态创建,具体代码段如下:
m_HTSliderR.Create(130,500,400,14,m_hWnd,iChildId++,0,9,14);
m_HTSliderR.SetBgPic(_T(".\\pic\\SliderBg.png"),NULL,5,5);
m_HTSliderR.SetThumbPic(_T(".\\pic\\SliderThumbN.png"));
m_HTSliderR.SetMouseOnThumbPic(_T(".\\pic\\SliderThumbH.png"));
使用方便简便,可认为是一个窗口就是一个C++对象,要想实现某功能直接呼叫接口即可,没有附加的代码。下面是控制杆类的主文件代码:
/****************************************************************************
|Copyright(c)2012,|
****************************************************************************/
#if!defined(__CHTSLIDER_H__)
#define__CHTSLIDER_H__
#include"CHTTip.h"
classCMySlider;
//#ifdefHTCONTROLAPI
//class__declspec(dllexport)CHTSlider
//#else
//class__declspec(dllimport)CHTSlider
//#endif
classAFX_CLASS_EXPORTCHTSlider
{
public:
CHTSlider();
~CHTSlider();
/****************************************************************************
|函数功能:创建控制杆控件|
|输入参数:|
|x:窗体位置x坐标(相对于父窗体)|
|y:窗体位置y坐标(相对于父窗体)|
|iWidth:窗体宽|
|iHeight:窗体高|
|hParent:父窗体句柄|
|iSliderId:窗体ID|
|iThumbTop:滑块顶端坐标|
|iThumbWidth:滑块宽|
|iThumbHeight:滑块高|
|pRectChannel:channel矩形(channel占据的矩形)NULL表示不绘制channel|
|输出参数:无|
|返回值:成功返回窗体句柄失败返回NULL|
|说明:|
****************************************************************************/
HWNDCreate(intx,
inty,
intiWidth,
intiHeight,
HWNDhParent,
intiSliderId,
intiThumbTop,
intiThumbWidth,
intiThumbHeight,
RECT*pRectChannel=NULL);
/****************************************************************************
|函数功能:改变窗口位置大小|
|输入参数:|
|x:窗体位置x坐标(相对于父窗体)|
|y:窗体位置y坐标(相对于父窗体)|
|iWidth:窗体宽|
|bRepaint:是否重绘窗体|
|输出参数:无|
|返回值:无|
|说明:不支持高度的变化|
****************************************************************************/
voidMoveWindow(intx,inty,intiWidth,BOOLbRepaint=TRUE);
/****************************************************************************
|函数功能:设置提示窗口类指针|
|输入参数:|
|pclTip:提示窗口类指针|
|输出参数:无|
|返回值:无|
|说明:|
****************************************************************************/
voidSetToolTip(CHTTip*pclTip);
/****************************************************************************
|函数功能:获取窗口的句柄|
|输入参数:无|
|输出参数:无|
|返回值:窗体句柄|
|说明:|
****************************************************************************/
HWNDGetHandle();
/****************************************************************************
|函数功能:获取父窗口的句柄|
|输入参数:无|
|输出参数:无|
|返回值:窗体句柄|
|说明:|
****************************************************************************/
HWNDGetParent();
/****************************************************************************
|函数功能:使窗口无效|
|输入参数:无|
|输出参数:无|
|返回值:无|
|说明:|
****************************************************************************/
voidDisable();
/****************************************************************************
|函数功能:使窗口有效|
|输入参数:无|
|输出参数:无|
|返回值:无|
|说明:|
****************************************************************************/
voidEnable();
/****************************************************************************
|函数功能:设置窗体背景位图|
|输入参数:|
|hBitmap:位图|
|iBgLeftLen:图片左侧不可拉伸部分长度|
|iBgRightLen:图片右侧不可拉伸部分长度|
|输出参数:无|
|返回值:无|
|说明:|
****************************************************************************/
voidSetBgBitmap(HBITMAPhBitmap,intiBgLeftLen=0,intiBgRightLen=0);
/****************************************************************************
|函数功能:设置Channel位图|
|输入参数:|
|hBitmap:位图|
|iChannelLeftLen:图片左侧不可拉伸部分长度|
|iChannelRightLen:图片右侧不可拉伸部分长度|
|输出参数:无|
|返回值:无|
|说明:|
****************************************************************************/
voidSetChannelBitmap(HBITMAPhBitmap,intiChannelLeftLen=0,intiChannelRightLen=0);
/****************************************************************************
|函数功能:设置滑块位图|
|输入参数:|
|hBitmap:位图|
|输出参数:无|
|返回值:无|
|说明:|
****************************************************************************/
voidSetThumbBitmap(HBITMAPhBitmap);
/****************************************************************************
|函数功能:设置鼠标在滑块上的位图|
|输入参数:|
|hBitmap:位图|
|输出参数:无|
|返回值:无|
|说明:|
****************************************************************************/
voidSetMouseOnThumbBitmap(HBITMAPhBitmap);
/****************************************************************************
|函数功能:设置逻辑范围,把逻辑值恢复到0,|
|输入参数:|
|iRange:逻辑值的最大值|
|输出参数:无|
|返回值:无|
|说明:参数如果为0,此函数无作用|
****************************************************************************/
voidSetRange(intiRange);
/****************************************************************************
|函数功能:获取逻辑范围|
|输入参数:无|
|输出参数:无|
|返回值:范围|
|说明:|
****************************************************************************/
intGetRange();
/****************************************************************************
|函数功能:设置当前逻辑值|
|输入参数:|
|iValue:要设置的逻辑值|
|输出参数:无|
|返回值:无|
|说明:|
****************************************************************************/
voidSetValue(intiValue);
/****************************************************************************
|函数功能:获取当前的逻辑值|
|输入参数:无|
|输出参数:无|
|返回值:当前逻辑值|
|说明:|
****************************************************************************/
intGetValue();
/****************************************************************************
|函数功能:获取鼠标所在位置的逻辑值|
|输入参数:无|
|输出参数:无|
|返回值:逻辑值|
|说明:|
****************************************************************************/
intGetTipValue();
/****************************************************************************
|函数功能:设置按下方向键或滑轮滚动一次时的逻辑值变化大小|
|输入参数:|
|iLineSize:逻辑值变化大小|
|输出参数:无|
|返回值:无|
|说明:|
****************************************************************************/
voidSetLineSize(intiLineSize);
/****************************************************************************
|函数功能:获取按下方向键或滑轮滚动一次时的逻辑值变化大小|
|输入参数:|
|输出参数:无|
|返回值:逻辑值变化大小|
|说明:|
****************************************************************************/
intGetLineSize();
/****************************************************************************
|函数功能:设置窗体的不透明度|
|输入参数:|
|iTransparency:不透明度的百分比|
|输出参数:无|
|返回值:无|
|说明:|
****************************************************************************/
voidSetTransparency(intiTransparency);
/****************************************************************************
|函数功能:设置父窗体背景内存画布|
|输入参数:|
|hParentBgMemDC:父窗体背景内存画布|
|输出参数:无|
|返回值:无|
|说明:当父窗体背景在变化并且此窗体本身也有透明度时(包括窗体使用的位图|
|具有透明度或者窗体没有背景位图),需要调用此接口|
****************************************************************************/
voidSetParentBgMemDC(HDChParentBgMemDC,intx=0,inty=0);
/****************************************************************************
|函数功能:设置父窗体使用的背景位图|
|输入参数:|
|hParentBgBitmap:父窗体使用的背景位图|
|x,y位图绘画起始点坐标|
|输出参数:无|
|返回值:无|
|说明:当父窗体背景使用静态位图并且此窗体本身也有透明度时(包括窗体使用|
|的位图具有透明度或者窗体没有背景位图),需要调用此接口|
****************************************************************************/
voidSetParentBgBitmap(HBITMAPhParentBgBitmap,intx=0,inty=0);
/****************************************************************************
|函数功能:设置父窗体背景颜色|
|输入参数:|
|CRParentBg:父窗体背景颜色|
|输出参数:无|
|返回值:无|
|说明:当父窗体背景使用固定颜色并且此窗体本身也有透明度时(包括窗体使用|
|的位图具有透明度或者窗体没有背景位图),需要调用此接口|
****************************************************************************/
voidSetParentBgColor(COLORREFCRParentBg=RGB(236,233,216));
private:
CMySlider*m_pclSlider;
};
#endif//!__CHTSLIDER_H__
除经之外,CHTSlider控制杆类还具备灵活的界面表现、窗体任意透明度改变等,比如使用下面接口即可实现透明度的改变:
voidSetTransparency(intiTransparency);
希望本文所述代码能对大家的VC++项目开发起到一定的帮助作用。