最好有完整的源代码!
第一次做,真的是不会,赶着要,也没时间再去翻书,跪求高手帮忙!!

解决方案 »

  1.   

    头文件 MYScrollViewView.h// MYScrollViewView.h : CMYScrollViewView 类的接口
    //
    #pragma once
    class CMYScrollViewView : public CScrollView
    {
    protected: // 仅从序列化创建
    CMYScrollViewView();
    DECLARE_DYNCREATE(CMYScrollViewView)// 属性
    public:
    CMYScrollViewDoc* GetDocument() const;// 操作
    public:// 重写
    public:
    virtual void OnDraw(CDC* pDC);  // 重写以绘制该视图
    virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
    protected:
    virtual void OnInitialUpdate(); // 构造后第一次调用
    virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
    virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
    virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);// 实现
    public:
    virtual ~CMYScrollViewView();
    #ifdef _DEBUG
    virtual void AssertValid() const;
    virtual void Dump(CDumpContext& dc) const;
    #endifprotected:// 生成的消息映射函数
    protected:
    DECLARE_MESSAGE_MAP()
    public:
    afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); CSliderCtrl m_ctrl;
    afx_msg void OnSize(UINT nType, int cx, int cy);
    };#ifndef _DEBUG  // MYScrollViewView.cpp 的调试版本
    inline CMYScrollViewDoc* CMYScrollViewView::GetDocument() const
       { return reinterpret_cast<CMYScrollViewDoc*>(m_pDocument); }
    #endif
      

  2.   

    实现文件 MYScrollViewView.cpp// MYScrollViewView.cpp : CMYScrollViewView 类的实现
    //#include "stdafx.h"
    #include "MYScrollView.h"#include "MYScrollViewDoc.h"
    #include "MYScrollViewView.h"
    #include ".\myscrollviewview.h"#ifdef _DEBUG
    #define new DEBUG_NEW
    #endif
    // CMYScrollViewViewIMPLEMENT_DYNCREATE(CMYScrollViewView, CScrollView)BEGIN_MESSAGE_MAP(CMYScrollViewView, CScrollView)
    // 标准打印命令
    ON_COMMAND(ID_FILE_PRINT, CScrollView::OnFilePrint)
    ON_COMMAND(ID_FILE_PRINT_DIRECT, CScrollView::OnFilePrint)
    ON_COMMAND(ID_FILE_PRINT_PREVIEW, CScrollView::OnFilePrintPreview)
    ON_WM_CREATE()
    ON_WM_SIZE()
    END_MESSAGE_MAP()// CMYScrollViewView 构造/析构CMYScrollViewView::CMYScrollViewView()
    {
    // TODO: 在此处添加构造代码}CMYScrollViewView::~CMYScrollViewView()
    {
    }BOOL CMYScrollViewView::PreCreateWindow(CREATESTRUCT& cs)
    {
    // TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或
    // 样式 return CScrollView::PreCreateWindow(cs);
    }// CMYScrollViewView 绘制void CMYScrollViewView::OnDraw(CDC* /*pDC*/)
    {
    CMYScrollViewDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    if (!pDoc)
    return; // TODO: 在此处为本机数据添加绘制代码
    }void CMYScrollViewView::OnInitialUpdate()
    {
    CScrollView::OnInitialUpdate();
    CSize sizeTotal;
    // TODO: 计算此视图的合计大小
    sizeTotal.cx = sizeTotal.cy = 100;
    SetScrollSizes(MM_TEXT, sizeTotal);
    }
    // CMYScrollViewView 打印BOOL CMYScrollViewView::OnPreparePrinting(CPrintInfo* pInfo)
    {
    // 默认准备
    return DoPreparePrinting(pInfo);
    }void CMYScrollViewView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
    {
    // TODO: 打印前添加额外的初始化
    }void CMYScrollViewView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
    {
    // TODO: 打印后添加清除过程
    }
    // CMYScrollViewView 诊断#ifdef _DEBUG
    void CMYScrollViewView::AssertValid() const
    {
    CScrollView::AssertValid();
    }void CMYScrollViewView::Dump(CDumpContext& dc) const
    {
    CScrollView::Dump(dc);
    }CMYScrollViewDoc* CMYScrollViewView::GetDocument() const // 非调试版本是内联的
    {
    ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMYScrollViewDoc)));
    return (CMYScrollViewDoc*)m_pDocument;
    }
    #endif //_DEBUG
    // CMYScrollViewView 消息处理程序int CMYScrollViewView::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    if (CScrollView::OnCreate(lpCreateStruct) == -1)
    return -1; // TODO:  在此添加您专用的创建代码
    m_ctrl.Create(WS_VISIBLE|WS_CHILD|TBS_HORZ, CRect(0,0,0,0), this, 123); return 0;
    }void CMYScrollViewView::OnSize(UINT nType, int cx, int cy)
    {
    CScrollView::OnSize(nType, cx, cy); // TODO: 在此处添加消息处理程序代码
    m_ctrl.MoveWindow(0,0, cx, 20);
    }
      

  3.   

    要点:
    1、响应WM_CREATE,创建 SliderCtrl
    2、响应WM_SIZE, 将该控件移到视图顶部