VC++中HTControl控件类的CHTSlider控制杆控件类简介

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

/****************************************************************************
| 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控制杆类还具备灵活的界面表现、窗体任意透明度改变等,比如使用下面接口即可实现透明度的改变:

void SetTransparency(int iTransparency);

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

(0)

相关推荐

  • VC++中HTControl控制类使用之CHTDlgBase对话框基类实例

    本文所述为VC++界面编程的一个MFC例子,基于HTControl控件类的CHTDlgBase对话框基类主文件代码.该程序可完成动态创建框架窗体,窗体外观(客户区与非客户区),调整窗体大小,无效子窗口的控制等功能. 具体实现代码如下: /**************************************************************************** | Copyright (c) 2012, | ******************************

  • C++ 类访问控制的条件总结

    C++ 类访问控制的条件总结 最近在使用C++创建类的时候,忽然发现自己对于类访问控制 public,protected,private 的作用没有理解透彻,后来就查了些资料,这里以作记录. 访问控制 C++类的重要属性就是封装和继承.因此,最关键的问题就是权限 的问题,public,protected,private 控制的就是访问权限. public protected private 类成员是否可以访问 Yes Yes Yes 友元函数是否可以访问 Yes Yes Yes 子类是否可以访问

  • C++编程中私有和保护以及公有的类成员访问控制

    private 语法 private: [member-list] private base-class 备注 当位于类成员列表之前时,private 关键字指定这些成员仅可从成员函数和该类的友元中进行访问.这适用于声明到下一个访问指示符或类的末尾的所有成员. 当位于基类的名称之前时,private 关键字指定基类的公共成员和受保护成员为派生类的私有成员. 类中成员的默认访问是私有的.结构或联合中成员的默认访问是公共的. 基类的默认访问对于类是私有的,而对于结构是公共的. 联合不能具有基类. 例

  • VC++中HTControl控件类的CHTSlider控制杆控件类简介

    本文所述的是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.

  • VC++中HTControl的CHTButton按钮控件类用法实例解析

    本文以实例形式讲解了VC++中HTControl控件类的CHTButton按钮控件类用法,相信对大家更好的理解VC++有一定的帮助.具体内容如下: 一般了解VC++的朋友都知道,VC++ 按钮控件CHTButton隶属HTControl控件组,直接由WIN32 API实现,你可以在SDK,MFC,wxWidget等环境下使用它.支持生成各种类型的按钮,比如:普通按钮,PNG透明按钮,复选框按钮,单选按钮等.使用时请注意,窗体必须动态创建,代码段如下: m_HTBtnClose.Create(75

  • VC++中HTControl控件类之CHTRichEdit富文本编辑控件实例

    本文所述CHTRichEdit控件类继承自CRichEditCtrl,为了避免CRichEditCtrl的界面风格与CRichEditCtr的滚动条不相协调,因此在CHTRichEdit控件中去掉了CRichEditCtrl的默认滚动条,替换成自己绘制的滚动条,这样就不会破坏整体外观了.替换的滚动条并不需要与默认的滚动条同样的宽度,不受操作系统主题的影响,可以支持任意的宽度,而且在不需要滚动条时它会自动消失,使软件布局不会受到影响. 具体实现代码如下: #if !defined(__CHTRic

  • 实例讲解Android中的View类以及自定义View控件的方法

    View的简单理解和实例 1.View的基本概念 在Activity显示的控件 都叫做View(View类 是所有的控件类的父类  比如 文本 按钮) 2.在Activity当中获取代表View的对象 Activity读取布局文件生成相对应的 各种View对象 TextView textView=(TextView)findViewBy(R.id.textView) 3.设置view的属性 Activity_mian.xml 这样的xml布局文件中发现了,类似@+id/和@id/到底有什么区别呢

  • iOS中UIScrollerView的用法及基于AotoLayout的控件悬停

    UIScrollView为了显示多于一个屏幕的内容或者超过你能放在内存中的内容.Scroll View为你处理缩小放大手势,UIScrollView实现了这些手势,并且替你处理对于它们的探测和回应.其中需要注意的子类是UITableView以及UITextView(用来显示大量的文字).还有一个UIWebView,尽管那不是UIScrollView的直接子类,它适用UIScrollView去显示网页内容contentsize是内容的宽和高,contentsize.width是内容的宽度,cont

  • ASP.NET 中 Button、LinkButton和ImageButton 三种控件的使用详解

    ASP.NET Framework包含三个用于向服务器端提交表单的控件:Button.LinkButton和ImageButton.这三个控件拥有同样的功能,但每种控件的外观界面不同. 本文就带着大家学习如何在页面中使用这三种控件.然后,学习如何关联客户端脚本和服务器端Button控件,以及如何使用Button控件把一个表单传到不是当前页的页面.最后,学习如何处理Button控件的Command事件. 一.使用Button控件 Button控件用来向服务器端提交表单的按钮.例如,代码清单1中的页

  • 在ASP.NET 2.0中操作数据之四十九:为GridView控件添加RadioButton

    导言: GridView控件提供了大量的内置功能.它包含了一系列的域(field)来显示诸如text.images.hyperlinks和buttons.另外它支持模板(template)用于用户自定义界面.我们可以构建这样一个GridView控件,用户仅需要点击控件里的一个按钮,每一条记录行都可以选择.编辑.删除.除了控件本身内置的功能外,在某些情况下,我们添加一些额外的.控件没有内置的功能.在本章及接下来的2篇教程里我们将探讨如何优化GridView,以支持额外的功能. 本篇及接下来的教程将

  • ASP.NET中日历控件和JS版日历控件的使用方法(第5节)

    今天小编带大家以做任务的形式了解ASP.NET中日历控件的使用方法,主要任务内容: 1.添加一个日历,设置日期以蓝色的完整名称显示,周末以黄色背景红色文字显示,而当前日期使用绿色背景显示,用户可以选择一天.一周或整个月,被选的天/周/月使用灰色背景色来显示.当选中一个日期后,把时间显示在下面的一个文本框中,效果如图所示: 2.设计一个注册页面,使用js日历控件帮助用户输入出生日期.效果如图所示: 学习项目一  Calendar日历控件 1.在站点下创建一个Calendar页面,并在页面上拖放一个

  • 解析VC中创建DLL,导出全局变量,函数和类的深入分析

    一.创建DLL1.在VC中新建一个Win32空项目MathLib:2.添加预编译头文件stdafx.h,定义导入导出控制符号: 复制代码 代码如下: //stdafx.h#pragma once#define MATHLIB_EXPORT 3.添加包含要导出的全局变量,函数和类的头文件MathLib.h: 复制代码 代码如下: //MathLib.h #pragma once #ifdef MATHLIB_EXPORT #define MATHLIBAPI __declspec(dllexpor

随机推荐