读书人

关于ControlBar(DialogBar)拆分窗

发布时间: 2012-01-23 21:57:28 作者: rapoo

关于ControlBar—ialogBar),拆分窗口及框架布局,请帮忙看一下:
我的程序界面是这个样子的:

_______________________________
| | | |
|_____________|_____________| |
| | | |
|_____________|_____________| |
|_______________________________|__|

左上是一个拆分窗口,分成四个视图(视图是CView的派生类),右侧是一个DialogBar,下面是状态栏

我在CMainFrame的OnCreate函数里初始化生成右侧的DialogBar,在OnCreateClient函数里拆分视图,其中,拆分视图的代码是:

CRect cr;
GetClientRect( &cr );

if(!m_viewportSplitter.CreateStatic(this,2,2))
return false;

m_viewportSplitter.CreateView(0,0,RUNTIME_CLASS(CTempView),CSize(0,0),pContext);

m_viewportSplitter.CreateView(0,1,RUNTIME_CLASS(CTempView),CSize(0,cr.Height()/2),pContext);

m_viewportSplitter.CreateView(1,0,RUNTIME_CLASS(CTempView),CSize(cr.Width()/2,0),pContext);

m_viewportSplitter.CreateView(1,1,RUNTIME_CLASS(CTempView),CSize(0,0),pContext);

但是程序运行之后四个拆分出的视图并不是平分了程序框架除了ControlBar和状态栏的空间,我看了一下运行之后的客户区大小,并不是除了除了ControlBar和状态栏的空间。

请帮我看看是为什么?怎么解决?

另外再问一下,我的拆分窗口类CSplitterWnd是我的程序里的CMainFrame的一个成员类,CSplitterWnd的成员函数能调用CMainFrame里的成员函数吗?





[解决办法]
在CMainFrame::OnSize()中调整拆分框架的大小。
[解决办法]
CWnd::IsVisable()
[解决办法]
OnCreate函数里初始化生成右侧的DialogBar
把它放到OnCreateClient里面去怎么样。
原来做过一个程序,客户区应该是除了BAR之后的的吧。

读书人网 >VC/MFC

热点推荐