Dialog上添加ScrollView

 

主要步骤如下:

  1. 继承CScrollView,生成CMyScrollView
  2. 在CMyScrollView中添加一个变量和一个函数:

    声明如下:

    public:

         void SetTotalSizes(int nWidth, int nHeight);

    private:

         CSize m_nScrollSize;

    实现如下:当然要注意变量的初始化

void CMyScrollView::SetTotalSizes(int nWidth, int nHeight)

{

            m_nScrollSize.cx = nWidth;

            m_nScrollSize.cy = nHeight;

}

    3.修改函数virtual void OnInitialUpdate()为"Public",以便类对象可以主动调用该函数,同时修改实现:

void CPaperScrollView::OnInitialUpdate()

{

        CScrollView::OnInitialUpdate();

 

        //CSize sizeTotal;

        // TODO: calculate the total size of this view

        //sizeTotal.cx = sizeTotal.cy = 100; // default

        SetScrollSizes(MM_TEXT, m_nScrollSize);

}

 

  

使用简述如下:

  1. 创建成员变量

CmyScrollView * m_pScrollView;

   2.  在OnInitDialog()中创建对象和窗体

m_pScrollView = new CMyScrollView();

        if (m_pScrollView)

        {

            m_pScrollView ->SetTotalSizes(m_nPaperWidth, m_nPaperHeight);

            m_pScrollView ->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, CRect(0,0,m_nDlgWidth,m_nDlgHeight), this, SCROLL_VIEW_ID);

            m_pScrollView ->OnInitialUpdate();

        }

   3.在OnDestroy函数中,销毁窗体

if (m_pScrollView)

     {

              m_pScrollView ->DestroyWindow();

             //delete m_pScrollPaper; // 不能添加delete,会报错! 有高手路过请赐教!

             m_pScrollView = NULL;

     }

   4.在程序中修改滚动范围

if (m_pScrollView)

     {

           m_pScrollView ->SetTotalSizes(m_nPaperWidth, m_nPaperHeight);

           m_pScrollView ->OnInitialUpdate();

     }

 

另有一疑惑未解开,若在使用CMyScrollView时创建"变量"而非指针,程序关闭时也会报错,请路过的高手赐教!

 

网上文章,在Dialog上创建View文集:

http://www.360doc.com/content/09/1130/20/59141_10091690.shtm

 

posted on 2013-06-07 23:40  Waaaaaall-E  阅读(846)  评论(0)    收藏  举报

导航