最近失业在家,闲来无事,所以将我平时工作、学习时所积攒下来的类,做了个demo,发给大家。先给大家一个旋转按钮控件,跟CD Player一样哦~~
示例代码:http://61.133.87.165/bbs/attachment.php?s=&postid=216360
另外,我这里还有很多类,有我自己写的,翻译的等等。有需要的跟我联系 [email protected]。希望大家能一同学习、进步!
类的文档如下:(为了方便大家,可以在demo里找到这个文档)
--------------------------------------------------------------------------------------------------------
CRoundSliderCtrl
CSliderCtrl
|
----CRoundSliderCtrl
该类为CSliderCtrl的派生类。扩充实现了圆形滑块控件的功能,并可以自定义控件内的颜色、图片、设置控件内的文字等。
使用该类时的注意事项:
1、需要将MemDc.h文件加入工程中,考虑到该类的普遍性,如果原工程中已有,请不要重复包含。
2、添加鼠标指针资源 IDC_CURSOR
3、该类中用到的某些函数是从Internet上得来,版权仍归其本人所有。
4、该类在VC6下创建的,由于某些特殊性,在VC.NET下编译将出现不正常现象。
使用方法:
1、在对话框中添加滑块控件,并且改变至你想要的大小。
2、在ClassWizard中关联与控件的控件变量(比如 m_rscMySlider)
3、在OnInitDialog()中你可以根据需要来调用SetRange(), SetPos()等函数来设置初始化控件。
当滑动控件指针时,它会发送 WM_SCROLL 消息,所以,你可以在在你的对话框中得到滑块的当前位置。比如:
void CRoundSliderCtrlDemoDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
if(pScrollBar->GetDlgCtrlID() == IDC_SLIDER)
{
TRACE("WM_HSCROLL by CRoundSliderCtrl received. nPos: %ld? nSBCode: %ld\n", nPos, nSBCode);
}
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
你还可以在派生类里重载OnFormatText函数来自定义控件内显示的文字,比如:
CString CFrequenceCtrl::OnFormatText(const CString& strText)
{
CString strFormattedText;
strFormattedText.Format("%.1fMHz", 87.5+GetPos()/360.0*20.6);
return strFormattedText;
}
操作
-------------------------------------------------------------------------------------------
SetRange 设置控件的可调整范围
GetRange 得到控件的可调整范围
SetKnobRadius 设置指针的大小
GetKnobRadius 得到指针的大小
SetDragByKnobOnly 指示是否应该仅让指针根着鼠标走
GetDragByKnobOnly 确定是否应该仅让指针根着鼠标走
SetZero 指定开始时指针默认的角度
GetZero 得到开始时指针默认的角度
SetBitmap 为控件设置位图背景
SetKnobColor 设置指针在鼠标左键未按下时的颜色
SetActiveKnobColor 设置指针在鼠标左键按下激活或者拖动时的颜色
SetDialColor 设置滑块控件的背景颜色
字符的操作
----------------------------------------------------------------------------------------------------------
SetText 为圆形控件内设置字符
GetText 得到当前控件内的字符串
SetTextColor 指定显示在控件中的字符串颜色
SetFontBold 指示控件中的字体是否为黑体
SetFontUnderline 指示控件中的字体是否具有下划线
SetFontItalic 指示控件中的字体是否为斜体
SetFontSize 设置控件中字体的大小
SetFontName 设置控件中字体的名称
SetShowText 指示控件内部是否要显示文字
成员函数
------------------------------------------------------------------------------------------------------------
CRoundSliderCtrl::SetRange
void SetRange( int nMin, int nMax, BOOL bRedraw )
参 数:
nMin 滑块范围的最小值
nMax 滑块范围的最大值
bRedraw 指示是否立即重绘控件
说 明:
调用该函数设置整个控件的可调整范围,更详细的资料请参见MSDN 中关于 CSliderCtrl::SetRange 的说明
--------------------------------------------------------------------------------------------------------------
CRoundSliderCtrl::GetRange
void GetRange( int &nMin, int &nMax )
参 数:
nMin 获得的控件范围最小值
nMax 获得的控件范围最大值
说 明:
调用函数来得到当前滑块控件的可调节 最大/最小 值
---------------------------------------------------------------------------------------------------------------
CRoundSliderCtrl::SetText
void SetText(const CString& strNewText)
参 数:
strNewText CString 对象类型的字符串
说 明:
调用该函数来为圆形控件内设置字符。在允许控件显示字符时,如果不调用此函数,那么系统将默认在控件内部显示滑块当前的位置值
---------------------------------------------------------------------------------------------------------------
CRoundSliderCtrl::GetText
CString GetText() const
返回值:
返回当前控件内显示字体的内容
说 明:
调用此函数来得到当前控件内的字符串,字符是先前调用SetText设置过的,否则返回的结果无任何意义。
--------------------------------------------------------------------------------------------------------------
CRoundSliderCtrl::SetKnobRadius
void SetKnobRadius(const int nNewKnobRadius)
参 数:
nNewKnobRadius 涉及指针大小的整型变量,该值最小不能小于5
说 明:
设置指针的大小
--------------------------------------------------------------------------------------------------------------
CRoundSliderCtrl::GetKnobRadius
int GetKnobRadius() const
返回值:
返回当前的指针大小
说 明:
得到指针的大小
--------------------------------------------------------------------------------------------------------------
CRoundSliderCtrl::SetDragByKnobOnly
void SetDragByKnobOnly(const bool bDragByKnobOnly)
参 数:
bDragByKnobOnly 如果此值为真,那么只有当鼠标指针在此控件指针之上拖动时,控件指针才进行拖动
说 明:
指示是否应该仅让指针根着鼠标走
-------------------------------------------------------------------------------------------------------------
CRoundSliderCtrl::GetDragByKnobOnly
bool GetDragByKnobOnly() const
返回值:
如果为真,那么只有当鼠标指针在此控件指针之上拖动时,控件指针才进行拖动
说 明:
确定是否应该仅让指针根着鼠标走
----------------------------------------------------------------------------------------------------------------
CRoundSliderCtrl::SetZero
void SetZero(const int nZero)
参 数:
nZero 控件初始化的角度值,该值应该是不小于0和大于360
说 明:
指定开始时指针默认的角度
---------------------------------------------------------------------------------------------------------------
CRoundSliderCtrl::GetZero
int GetZero() const
返回值:
0 - 360 的控件初始角度值
说 明:
得到开始时指针默认的角度
---------------------------------------------------------------------------------------------------------------
CRoundSliderCtrl::SetDialColor
void SetDialColor(const COLORREF crBkgnd)
参 数:
crBkgnd 滑块控件背景颜色值,可以是RGB 三色中的任何一种
说 明:
调用此函数来设置滑块控件的背景颜色;注意:该函数只能在未调用 SetBitmap 时起作用。
----------------------------------------------------------------------------------------------------------------
CRoundSliderCtrl::SetKnobColor
void SetKnobColor(const COLORREF crBkgnd)
参 数:
crBkgnd 指针在鼠标左键未按下时的颜色
说 明:
调用此函数可以设置指针在鼠标左键未按下时的颜色,系统默认情况下是将指针颜色置为系统COLOR_3DFACE颜色
---------------------------------------------------------------------------------------------------------------
CRoundSliderCtrl::SetActiveKnobColor
void SetActiveKnobColor( const COLORREF crBkgnd )
参 数:
crBkgnd 指针在鼠标左键按下激活时的颜色
说 明:
调用此函数可以设置指针在鼠标左键按下激活或者拖动时的颜色,系统默认情况下是将指针颜色置为系统COLOR_3DFACE颜色
-------------------------------------------------------------------------------------------------------
CRoundSliderCtrl::SetTextColor
void SetTextColor(const COLORREF crText)
参 数:
crText RGB颜色值
说 明:
指定显示在控件中的字符串颜色
-------------------------------------------------------------------------------------------------------
CRoundSliderCtrl::SetFontBold
void SetFontBold(const bool bSet)
参 数:
bSet 布尔值,指示字体是否为黑体
说 明:
指示控件中的字体是否为黑体
--------------------------------------------------------------------------------------------------------
CRoundSliderCtrl::SetFontUnderline
void SetFontUnderline(const bool bSet)
参 数:
bSet布尔值,指示字体是否具有下划线
说 明:
指示控件中的字体是否具有下划线
--------------------------------------------------------------------------------------------------------
CRoundSliderCtrl::SetFontItalic
void SetFontItalic(const bool bSet)
参 数:
bSet布尔值,指示字体是否为斜体
说 明:
指示控件中的字体是否为斜体
---------------------------------------------------------------------------------------------------------
CRoundSliderCtrl::SetFontSize
void SetFontSize(const int nSize)
参 数:
nSize 字体的大小的整型变量
说 明:
设置控件中字体的大小
------------------------------------------------------------------------------------------------------
CRoundSliderCtrl::SetFontName
void SetFontName(const CString& strFont)
参 数:
strFont 关于字体信息的CSting类型的字符串变量
说 明:
设置控件中字体的名称
------------------------------------------------------------------------------------------------------
CRoundSliderCtrl::SetShowText
void SetShowText( const BOOL bShow /* = TRUE */)
参 数:
bShow 指示控件内部是否要显示当前滑动内容的文字
说 明:
指示控件内部是否要显示当前滑动内容的文字,默认情况下控件内部无显示内容
------------------------------------------------------------------------------------------------------------
CRoundSliderCtrl::SetBitmap
void SetBitmap( UINT uNewBitID )
参 数:
uNewBitID 位图资源ID
说 明:
调用此函数可以为控件设置位图背景,图片大小最好跟控件大小一致。
本文地址:http://com.8s8s.com/it/it2289.htm