本文所述的是HTControl控件中的一个控制杆控件类文件代码,此类是完全独立的,没有任何基类。直接由WIN32 API实现。你可以在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++对象,要想实现某功能直接呼叫接口即可,没有附加的代码。下面是控制杆类的主文件代码:
#if !defined(__CHTSLIDER_H__)
#define __CHTSLIDER_H__
#include "CHTTip.h"
class CMySlider;
//#ifdef HTConTROLAPI
//class __declspec(dllexport) CHTSlider
//#else
//class __declspec(dllimport) CHTSlider
//#endif
class AFX_CLASS_EXPORT CHTSlider
{
public:
CHTSlider();
~CHTSlider();
HWND Create(int x,
int y,
int iWidth,
int iHeight,
HWND hParent,
int iSliderId,
int iThumbTop,
int iThumbWidth,
int iThumbHeight,
RECT* pRectChannel = NULL);
void MoveWindow(int x, int y, int iWidth, BOOL bRepaint = TRUE);
void SetToolTip(CHTTip* pclTip);
HWND GetHandle();
HWND GetParent();
void Disable();
void Enable();
void SetBgBitmap(HBITMAP hBitmap, int iBgLeftLen = 0, int iBgRightLen = 0);
void SetChannelBitmap(HBITMAP hBitmap, int iChannelLeftLen = 0, int iChannelRightLen = 0);
void SetThumbBitmap(HBITMAP hBitmap);
void SetMouseonThumbBitmap(HBITMAP hBitmap);
void SetRange(int iRange);
int GetRange();
void SetValue(int iValue);
int GetValue();
int GetTipValue();
void SetLineSize(int iLineSize);
int GetLineSize();
void SetTransparency(int iTransparency);
void SetParentBgMemDC(HDC hParentBgMemDC, int x = 0, int y = 0);
void SetParentBgBitmap(HBITMAP hParentBgBitmap, int x = 0, int y = 0);
void SetParentBgColor(COLORREF CRParentBg = RGB(236, 233, 216));
private:
CMySlider* m_pclSlider;
};
#endif //!__CHTSLIDER_H__
除经之外,CHTSlider控制杆类还具备灵活的界面表现、窗体任意透明度改变等,比如使用下面接口即可实现透明度的改变:
void SetTransparency(int iTransparency);
希望本文所述代码能对大家的VC++项目开发起到一定的帮助作用。



