有皮肤的滑块控件CSliderCtrl->CZipSliderCtl 类

翻译来源:https://www.codeproject.com/Articles/2453/Skin-based-slider-control

作者:Ashok Jaiswal


<! - 下载链接 - >

<! - 文章图像 - >

样品图像 -  skinslider.gif

<! - 在这里添加其余的HTML - >

介绍

这是一个寻找基于皮肤的滑块控件的开发人员的解决方案。它与Nic Wilson 的文章“ 透明滑块控件”不同之处在于它允许您对滑块控件的背景和刻度进行整理,并允许您在滑块控件上设置自定义光标。
滑块控件的主要类别是CZipSliderCtl使用另一个位图类CZipBitmap来绘制控件上的正常和透明图像。这是非常容易使用和看起来不错(如果你有美丽的图像),所以去吧。按照以下说明在应用程序中使用它。

如何使用它?

它相当简单的使用CZipSliderClt该类。只需将文件ZipSliderCtl.hZipSliderCtl.cppZipBitmap.hZipBitmap.cpp添加到项目中,将滑块控件添加到对话框并更改控件的成员变量。修改以下代码

CSliderCtl	m_sliderCtl;

看起来像这样:

CZipSliderCtl	m_sliderCtl;

您将需要在应用程序的dlg头文件的顶部添加以下代码。

#include "ZipSliderCtl.h"

恭喜您已经成功创建了滑块控件的对象,现在是时候控制了。OnInitDialog函数底部添加以下代码

m_sliderCtl.SetSkin(IDB_SEEKBAR_BACK,IDB_SEEKBAR_TICK,IDC_CURSOR_SEEK);
m_sliderCtl.SetRange(0,15000);

所以你已经弄清了你的控制,它已经可以使用了。编译并运行,看看它的外观。所有最好的..享受!

幕后

CZipSliderCtl班是基于子类的相当简单的概念。我已经派生了这个类,CSliderCtl并且覆盖了以下功能

//{{AFX_MSG(CZipSliderCtl)
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnPaint();
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
//}}AFX_MSG

我已经使用该类CZipBitmap在对话框中绘制正常和透明的图像。如果使用此类绘制任何透明图像,则会使所有部分的let-top像素颜色透明。皮肤控制的魔力总是包含在OnPaint功能中。所以看下面的魔法代码行

{
	CPaintDC dc(this); // device context for painting

	int iMax,iMin,iTickWidth=10,iMarginWidth=10;
	GetRange(iMin,iMax);
	RECT rcBack,rcTick;
	GetClientRect(&rcBack);
	rcTick = rcBack;
	TRACE("%d\n",GetPos());
	rcTick.left = ((rcBack.right-iMarginWidth)*(GetPos()))/((iMax - iMin)+iMarginWidth/2);
	rcTick.right = rcTick.left + iTickWidth;

	m_bmpBack->Draw(dc,0,0);
	m_bmTrans->DrawTrans(dc,rcTick.left, -2);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值