资源简介

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

评论

共有 条评论