Dialog上添加ScrollView
主要步骤如下:
- 继承CScrollView,生成CMyScrollView。
 - 在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);
}
使用简述如下:
- 创建成员变量
 
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) 收藏 举报
                    
                
                
            
        
浙公网安备 33010602011771号