当前位置:首页 > 通信资讯 > 正文

本文所述的是HTControl控件中的一个控制杆控件类文件代码,此类是完全独立的,没有任何基类。直接由WIN32 API实现。你可以在SDK,MFC,wxWidget等等方式下使用它。控制中包括一个垂直的控制杆控件,使用方式和水平的完全相同。窗体必须动态创建,具体代码段如下:

?
1 2 3 4 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++对象,要想实现某功能直接呼叫接口即可,没有附加的代码。下面是控制杆类的主文件代码:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 /**************************************************************************** | Copyright (c) 2012, | ****************************************************************************/ #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(); /**************************************************************************** | 函数功能:创建控制杆控件 | | 输入参数: | | x: 窗体位置x坐标(相对于父窗体) | | y: 窗体位置y坐标(相对于父窗体) | | iWidth: 窗体宽 | | iHeight: 窗体高 | | hParent: 父窗体句柄 | | iSliderId: 窗体ID | | iThumbTop: 滑块顶端坐标 | | iThumbWidth:滑块宽 | | iThumbHeight: 滑块高 | | pRectChannel: channel矩形(channel占据的矩形) NULL表示不绘制channel | | 输出参数:无 | | 返回值: 成功返回窗体句柄 失败返回NULL | | 说 明: | ****************************************************************************/ HWND Create(int x, int y, int iWidth, int iHeight, HWND hParent, int iSliderId, int iThumbTop, int iThumbWidth, int iThumbHeight, RECT* pRectChannel = NULL); /**************************************************************************** | 函数功能:改变窗口位置大小 | | 输入参数: | | x: 窗体位置x坐标(相对于父窗体) | | y: 窗体位置y坐标(相对于父窗体) | | iWidth: 窗体宽 | | bRepaint:是否重绘窗体 | | 输出参数:无 | | 返回值: 无 | | 说 明:不支持高度的变化 | ****************************************************************************/ void MoveWindow(int x, int y, int iWidth, BOOL bRepaint = TRUE); /**************************************************************************** | 函数功能:设置提示窗口类指针 | | 输入参数: | | pclTip: 提示窗口类指针 | | 输出参数:无 | | 返回值: 无 | | 说 明: | ****************************************************************************/ void SetToolTip(CHTTip* pclTip); /**************************************************************************** | 函数功能:获取窗口的句柄 | | 输入参数:无 | | 输出参数:无 | | 返回值: 窗体句柄 | | 说 明: | ****************************************************************************/ HWND GetHandle(); /**************************************************************************** | 函数功能:获取父窗口的句柄 | | 输入参数:无 | | 输出参数:无 | | 返回值: 窗体句柄 | | 说 明: | ****************************************************************************/ HWND GetParent(); /**************************************************************************** | 函数功能:使窗口无效 | | 输入参数:无 | | 输出参数:无 | | 返回值: 无 | | 说 明: | ****************************************************************************/ void Disable(); /**************************************************************************** | 函数功能:使窗口有效 | | 输入参数:无 | | 输出参数:无 | | 返回值: 无 | | 说 明: | ****************************************************************************/ void Enable(); /**************************************************************************** | 函数功能:设置窗体背景位图 | | 输入参数: | | hBitmap:位图 | | iBgLeftLen: 图片左侧不可拉伸部分长度 | | iBgRightLen: 图片右侧不可拉伸部分长度 | | 输出参数:无 | | 返回值: 无 | | 说 明: | ****************************************************************************/ void SetBgBitmap(HBITMAP hBitmap, int iBgLeftLen = 0, int iBgRightLen = 0); /**************************************************************************** | 函数功能:设置Channel位图 | | 输入参数: | | hBitmap:位图 | | iChannelLeftLen: 图片左侧不可拉伸部分长度 | | iChannelRightLen: 图片右侧不可拉伸部分长度 | | 输出参数:无 | | 返回值: 无 | | 说 明: | ****************************************************************************/ void SetChannelBitmap(HBITMAP hBitmap, int iChannelLeftLen = 0, int iChannelRightLen = 0); /**************************************************************************** | 函数功能:设置滑块位图 | | 输入参数: | | hBitmap:位图 | | 输出参数:无 | | 返回值: 无 | | 说 明: | ****************************************************************************/ void SetThumbBitmap(HBITMAP hBitmap); /**************************************************************************** | 函数功能:设置鼠标在滑块上的位图 | | 输入参数: | | hBitmap:位图 | | 输出参数:无 | | 返回值: 无 | | 说 明: | ****************************************************************************/ void SetMouseOnThumbBitmap(HBITMAP hBitmap); /**************************************************************************** | 函数功能:设置逻辑范围,把逻辑值恢复到0, | | 输入参数: | | iRange :逻辑值的最大值 | | 输出参数:无 | | 返回值: 无 | | 说 明:参数如果为0,此函数无作用 | ****************************************************************************/ void SetRange(int iRange); /**************************************************************************** | 函数功能:获取逻辑范围 | | 输入参数:无 | | 输出参数:无 | | 返回值: 范围 | | 说 明: | ****************************************************************************/ int GetRange(); /**************************************************************************** | 函数功能:设置当前逻辑值 | | 输入参数: | | iValue:要设置的逻辑值 | | 输出参数:无 | | 返回值: 无 | | 说 明: | ****************************************************************************/ void SetValue(int iValue); /**************************************************************************** | 函数功能:获取当前的逻辑值 | | 输入参数:无 | | 输出参数:无 | | 返回值: 当前逻辑值 | | 说 明: | ****************************************************************************/ int GetValue(); /**************************************************************************** | 函数功能:获取鼠标所在位置的逻辑值 | | 输入参数:无 | | 输出参数:无 | | 返回值: 逻辑值 | | 说 明: | ****************************************************************************/ int GetTipValue(); /**************************************************************************** | 函数功能:设置按下方向键或滑轮滚动一次时的逻辑值变化大小 | | 输入参数: | | iLineSize:逻辑值变化大小 | | 输出参数:无 | | 返回值: 无 | | 说 明: | ****************************************************************************/ void SetLineSize(int iLineSize); /**************************************************************************** | 函数功能:获取按下方向键或滑轮滚动一次时的逻辑值变化大小 | | 输入参数: | | 输出参数:无 | | 返回值: 逻辑值变化大小 | | 说 明: | ****************************************************************************/ int GetLineSize(); /**************************************************************************** | 函数功能:设置窗体的不透明度 | | 输入参数: | | iTransparency: 不透明度的百分比 | | 输出参数:无 | | 返回值: 无 | | 说 明: | ****************************************************************************/ void SetTransparency(int iTransparency); /**************************************************************************** | 函数功能:设置父窗体背景内存画布 | | 输入参数: | | hParentBgMemDC: 父窗体背景内存画布 | | 输出参数:无 | | 返回值: 无 | | 说 明:当父窗体背景在变化并且此窗体本身也有透明度时(包括窗体使用的位图 | | 具有透明度或者窗体没有背景位图),需要调用此接口 | ****************************************************************************/ void SetParentBgMemDC(HDC hParentBgMemDC, int x = 0, int y = 0); /**************************************************************************** | 函数功能:设置父窗体使用的背景位图 | | 输入参数: | | hParentBgBitmap: 父窗体使用的背景位图 | | x, y 位图绘画起始点坐标 | | 输出参数:无 | | 返回值: 无 | | 说 明:当父窗体背景使用静态位图并且此窗体本身也有透明度时(包括窗体使用 | | 的位图具有透明度或者窗体没有背景位图),需要调用此接口 | ****************************************************************************/ void SetParentBgBitmap(HBITMAP hParentBgBitmap, int x = 0, int y = 0); /**************************************************************************** | 函数功能:设置父窗体背景颜色 | | 输入参数: | | CRParentBg: 父窗体背景颜色 | | 输出参数:无 | | 返回值: 无 | | 说 明:当父窗体背景使用固定颜色并且此窗体本身也有透明度时(包括窗体使用 | | 的位图具有透明度或者窗体没有背景位图),需要调用此接口 | ****************************************************************************/ void SetParentBgColor(COLORREF CRParentBg = RGB(236, 233, 216)); private: CMySlider* m_pclSlider; }; #endif //!__CHTSLIDER_H__

除经之外,CHTSlider控制杆类还具备灵活的界面表现、窗体任意透明度改变等,比如使用下面接口即可实现透明度的改变:

?
1 void SetTransparency(int iTransparency);

希望本文所述代码能对大家的VC++项目开发起到一定的帮助作用。

如果您对该产品感兴趣,请填写办理(客服微信:xiaoxiongyidong)

为您推荐:

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。