Re: CSplitterWnd questions,
vsgdp wrote:
When my program starts, only one view of the four splitter window shows. I
have to manually drag the bars to induce the other 3. My question is: how
do I readjust the size of each splitter window in code? Also, what method
do I use to get a HWND (or CWnd) to each subdivided window?
The CMainFrame parent window resizes the splitter in its WM_SIZE message
handler. I suggest you add a WM_SIZE handler and do something like this:
void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
CFrameWnd::OnSize(nType, cx, cy);
if (m_wndSplitter.GetSafeHwnd())
{ int cxCur0, cxCur1, cxMin0, cxMin1;
m_wndSplitter.GetColumnInfo(0, cxCur0, cxMin0);
m_wndSplitter.GetColumnInfo(1, cxCur1, cxMin1);
cxCur0 = ... adjust sizes as desired
cxCur1 =
m_wndSplitter.SetColumnInfo(0, cxCur0, cxMin0);
m_wndSplitter.SetColumnInfo(1, cxCur1, cxMin1);
m_wndSplitter.RecalcLayout();
}
This can not only set the sizes at startup, you can use this to maintain
the relative pane sizes as the window is resized.
You can get a CWnd* for any splitter child with m_wndSplitter.GetPane().
--
Scott McPhillips [VC++ MVP]