关于ControlBar(DialogBar),拆分窗口及框架布局,请帮忙看一下:解决思路
关于ControlBar(DialogBar),拆分窗口及框架布局,请帮忙看一下:
我的程序界面是这个样子的:
_______________________________
| | | |
|_____________|_____________| |
| | | |
|_____________|_____________| |
|_______________________________|__|
左上是一个拆分窗口,分成四个视图(视图是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之后的的吧。
我的程序界面是这个样子的:
_______________________________
| | | |
|_____________|_____________| |
| | | |
|_____________|_____________| |
|_______________________________|__|
左上是一个拆分窗口,分成四个视图(视图是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之后的的吧。