前面有篇文章叫做《 VC窗口的分割(锁定分割条和定制切分条)》,对VC窗口分割做的比较全面的讲述。本文旨在记录的 是我在做分割条时的一些错误和收获。
1. 分割不同的窗格以后,一般来讲是在里面填充不同的view类视图。但是能不能在不同的窗格填相同的视图类?
答案是可以!
即 CreateView里的RUNTIME_CLASS里的视类是一样的,就可!
//m_Sp讲将窗口分为1行2列 // m_Sp.CreateView(0,0,RUNTIME_CLASS(C***View),CSize(cx/5.0,cy),pContext); m_Sp.CreateView(0,1,RUNTIME_CLASS(C***View),CSize(cx/5.0,cy),pContext);
2. 只用一个分割条变量能够讲窗口 分为一行多列(多行一列),当然是可以的。而之前总不成功,是因为
(1)m_Sp.CreateView 里的头2个参数,一定要搞对,第一个是行,第二个是列。细心点。
(2)m_Sp.CreateView里后面CSize 参数,也要对,尺寸加起来为整个屏幕窗口,不能冲突,这也要注意。
(PS:只用一个分割条变量能否实现多行多列的情况,还不是很清楚)
3. 做窗口分割,还要特别注意对应:
//获得某个窗格的指针 CWnd * pWnd = this->m_Sp1.GetPane(行,列); //获得此窗格视图的指针 this->m_pView = DYNAMIC_DOWNCAST(C3DRCSView,pWnd);
GetPane函数里的行和列,DYNAMIC_DOWNCAST里的视图类,
都要与前面创建时m_Sp.CreateView函数的里面的行列及视图类对应,否则很容易出现内存错误!