Dupa ce mi se seteaza aplicatia MAXIMIZE si totul e pus la locul sau (dar controalele nu-s la dimensiunea maxima), la orice miscare de resize a splitterului continand instanta de CTabCtrl mi se mareste la dimensiunea completa din splitter cum imi doresc sa se intample initial (fireste, se reapeleaza OnSize()-ul meu).
Pe OnCreate()-ul splitterului derivat din CFormView dupa CFormView::OnCreate(lpCreateStruct) fac:
Code: Select all
CRect rc(0,0, lpCreateStruct->cx, lpCreateStruct->cy);
if (!m_wndTabs.Create(CMFCTabCtrl::STYLE_3D_ONENOTE, rc, this, 0x11)) {
return -1;
}
DWORD dwStyle = LBS_NOINTEGRALHEIGHT | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL;
if (!m_wndOutputTab1.Create(dwStyle, rc, &m_wndTabs, 0x12) ||
!m_wndOutputTab2.Create(dwStyle, rc, &m_wndTabs, 0x13) ||
!m_wndOutputTab3.Create(dwStyle, rc, &m_wndTabs, 0x14)) {
return -1;
}
m_wndTabs.AddTab(&m_wndOutputTab1, _T("tab 1"), (UINT)0x12);
m_wndTabs.AddTab(&m_wndOutputTab2, _T("tab 2"), (UINT)0x13);
m_wndTabs.AddTab(&m_wndOutputTab3, _T("tab 3"), (UINT)0x14);
//m_wndTabs.CalcWindowRect(rc, CWnd::adjustBorder); // degeaba
//m_wndTabs.SetWindowPos(NULL, rc.left, rc.top , rc.Width(),
// rc.Height(), SWP_NOACTIVATE | SWP_NOZORDER);
//m_wndTabs.RecalcLayout();
Code: Select all
void CMyFormView::OnSize(UINT nType, int cx, int cy)
{
CFormView::OnSize(nType, cx, cy);
//m_wndOutputTab1.MoveWindow(0, 0, cx, cy); // cu sau fara acelasi efect
//m_wndOutputTab2.MoveWindow(0, 0, cx, cy);
//m_wndOutputTab3.MoveWindow(0, 0, cx, cy);
m_wndTabs.MoveWindow(0, 0, cx, cy);
}
Am incercat si sa pasez width-ul si height-ul din CChildFrame pe creearea si redimensionarea splitterelor la inceput dar degeaba - acelasi comportament.