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++项目开发起到一定的帮助作用。