CMyView改成CMyScrollView的方法

王朝other·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

很多情况下,我们在作Document/view编程的时候,容易忘记把CMyView的父类改为CSrollView,后来想加上对滚动条的支持又十分麻烦。直接把CMyView : public CView改成CMyView : public CView肯定是不行的了,那么到底还要有那些改动呢?

1。view是用来显示Document的,要让view滚动,必须通过计算Document的尺寸来决定显示,所以必须先设定Document的大小(size),也就是必须给CMyDoc类增加一个成员变量来表示:

//******************************************************************//

CMyDoc : public CDocument

{

...

protected:

CSize m_sizeDoc; //定义Document的尺寸

public:

CSize GetDocSize() { return m_sizeDoc; } //取得Document的尺寸

...

//******************************************************************//

//还要初始化m_sizeDoc的值,可以在CMyDoc的构造函数中初始化

CMyDoc::CMyDoc()

{

m_sizeDoc = CSize(800, 900); //设定Document的尺寸为800*900像素

...

}

2。改变CMyView的父类为CScrollView,包括其cpp文件中的

IMPLEMENT_DYNCREATE(CMyView, CScrollView)

BEGIN_MESSAGE_MAP(CMCMyView, CScrollView)

现在我们就可以来设置滚动条了:

由于对滚动条的一些操作是在CSrollView::OnInitialUpdate()中完成的,所以我们在CMyView中重载该函数:

void CMyView::OnInitialUpdate()

{

SetScrollSizes(MM_TEXT, //屏幕映射模式

GetDocument()->m_sizeDoc) //Document的尺寸(现在知道尺寸的作用了吧)

}

3。如果你在view中有一些对坐标的操作,就应该进行相应的设备坐标和逻辑坐标之间的变换,如果仅仅是显示某些固定内容,这样就可以了!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航