資源簡介
MFC中的滑塊CSliderCtrl類不能準確定位到鼠標點擊的位置,將MySlider.h和MySlider.cpp包含至項目中,用類MySlider來定義滑塊變量,鼠標左鍵點擊滑塊時,滑塊(進度條)能準確定位且不發生漂移。2014-11-12上傳的存在的一個小問題是,當靠近滑塊(進度條)的右端時不能準確定位,此處修正這個問題。

代碼片段和文件信息
//?MySlider.cpp?:?implementation?file
//
#include?“stdafx.h“
#include?“MySlider.h“
#ifdef?_DEBUG
#define?new?DEBUG_NEW
#undef?THIS_FILE
static?char?THIS_FILE[]?=?__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//?CMySlider
CMySlider::CMySlider()
{
m_iLength?=?0;
m_iCurrentPos?=?0;
}
CMySlider::~CMySlider()
{
}
BEGIN_MESSAGE_MAP(CMySlider?CSliderCtrl)
//{{AFX_MSG_MAP(CMySlider)
ON_WM_LBUTTONDOWN()
ON_WM_CREATE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//?CMySlider?message?handlers
void?CMySlider::OnLButtonDown(UINT?nFlags?CPoint?point)?
{
//?TODO:?Add?your?message?handler?code?here?and/or?call?default
CSliderCtrl::OnLButtonDown(nFlags?point);??
CRect???rectClientrectChannel;???
GetClientRect(rectClient);???
GetChannelRect(rectChannel);???
int?nMax?=?0;??
int?nMin?=?0;??
GetRange(nMinnMax);?
int?AmendPos=0;
if(point.x>(rectChannel.right?-?rectChannel.left)/2)
AmendPos=1;
int?nPos?=?????
(nMax?-?nMin+AmendPos)*(point.x?-?rectClient.left?-?rectChannel.left+AmendPos)/rectChannel.Width();
SetPos(nPos);?
CSliderCtrl::OnLButtonDown(nFlags?point);
}
int?CMySlider::OnCreate(LPCREATESTRUCT?lpCreateStruct)?
{
if?(CSliderCtrl::OnCreate(lpCreateStruct)?==?-1)
return?-1;
//?TODO:?Add?your?specialized?creation?code?here
// SetRange(0?500);
return?0;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????1508??2015-05-11?17:51??MySlider.cpp
?????文件????????1247??2009-04-19?10:54??MySlider.h
?????文件????????1063??2014-11-12?17:02??OnHScroll.cpp
- 上一篇:鼠標左鍵準確定位MFC基于對話框的滑塊控件
- 下一篇:reliefF算法及其源碼
評論
共有 條評論