//1 ScrollBarCtl.h
#include <vector>
// CScrollBarCtl
class CScrollBarCtl : public CWnd
{
DECLARE_DYNAMIC(CScrollBarCtl)
public:
CScrollBarCtl();
virtual ~CScrollBarCtl();
void addText(CString str);
//框架虚函数
protected:
virtual BOOL PreTranslateMessage(MSG* pMsg);
//框架消息
protected:
afx_msg void OnPaint();
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
protected:
void RectifyControl( int cx, int cy );
DECLARE_MESSAGE_MAP()
private:
INT m_nMaxPels; //滚动范围
INT m_nPagePels; //页面大小
INT m_nCurrentPos; //当前位置
INT m_nLineCount; //行数
CFont m_font;
std::vector<CString> m_logisticsList;
};
//2 ScrollBarCtl.cpp
#include "ScrollBarCtl.h"
#define LINE_PELS 12
#define WHELL_PELS 5
#define LINE_INTERVAL 30
// CScrollBarCtl
IMPLEMENT_DYNAMIC(CScrollBarCtl, CWnd)
BEGIN_MESSAGE_MAP(CScrollBarCtl, CWnd)
ON_WM_PAINT()
ON_WM_SIZE()
ON_WM_MOUSEWHEEL()
ON_WM_LBUTTONUP()
ON_WM_LBUTTONDOWN()
ON_WM_VSCROLL()
ON_WM_KEYDOWN()
END_MESSAGE_MAP()
CScrollBarCtl::CScrollBarCtl()
{
m_nMaxPels=0; //滚动范围
m_nPagePels&