TabCtrl на Panecontener
От: fox632 Россия  
Дата: 28.06.09 23:35
Оценка:
я только учусь так что сильно не ругайте

я создаю простое SDI приложение на клиенте создаю два сплиттера на них по пане контейнеру и в верхнем пане контейнере создаю таб контрол
проблемка заключается в том что подложка таб контрола не перерисовывается то место где закладки отрисованы и когда тасткаеш приложение из стороны в сторону или изменяеш размер остаются разводы как это побороть
//Это в OnCreate

    GetClientRect(&rcvSplit);                                        
    // создаю  вертикальный сплиттер
    m_vSplit.Create(m_hWnd,rcvSplit,NULL,WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN,NULL,ID_VSPLIT,NULL);
    // устанавливаю шрифт
    m_vSplit.SetFont((HFONT)GetStockObject(DEFAULT_GUI_FONT),true);         
    // создаю  горизонтальный сплиттер
    m_hSplit.Create(m_vSplit,rchSplit,NULL,WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN,NULL,ID_HSPLIT,NULL);
    // устанавливаю шрифт
    m_hSplit.SetFont((HFONT)GetStockObject(DEFAULT_GUI_FONT),true);
    // вставляю горизонтальный сплиттер в правую область верт. сплиттера
    m_vSplit.SetSplitterPane(1,m_hSplit);
    // создаю пане контейнер на верт. сплиттере
    mLP.Create(m_vSplit,_T("Left Pane"));
    // вставляю  в левую половину верт. сплиттера
    m_vSplit.SetSplitterPane(0,mLP.m_hWnd);
    // создаю верхний пане контейнер на горизонтальном сплиттере
    mTP.Create(m_hSplit,_T("Top Pane"));
    // вставляю  в Верхнюю половину горизонт. сплиттера
    m_hSplit.SetSplitterPane(0,mTP.m_hWnd);
    // создаю нижний пане контейнер на горизонтальном сплиттере
    mBP.Create(m_hSplit,_T("Bottom Pane"));
    // изменяю стиль планочки на вертикальный
    mBP.SetPaneContainerExtendedStyle(PANECNT_VERTICAL);
    // вставляю  в нижнюю половину горизонт. сплиттера
    m_hSplit.SetSplitterPane(1,mBP.m_hWnd);
    // создаю таб контрол  на верхнем пане контейнере 
    m_hTab.Create(mTP.m_hWnd,rcDefault,NULL,WS_CHILD | WS_VISIBLE | WS_GROUP |WS_DLGFRAME| WS_CLIPSIBLINGS | WS_CLIPCHILDREN
        /*|TCS_OWNERDRAWFIXED*/,WS_EX_STATICEDGE|WS_EX_CLIENTEDGE,ID_TAB,NULL);
    // устанавливаю шрифт таб контролу
    m_hTab.SetFont((HFONT)GetStockObject(DEFAULT_GUI_FONT),true);
    // вставляю таб контрол в верхний пане контейнер
    mTP.SetClient(m_hTab.m_hWnd);
    InsertTabItem();
    m_vSplit.m_bFullDrag = false; 
    m_hSplit.m_bFullDrag = false;

//Это в OnSize

    //устанавливаю размер вертикального сплиттера
    CRect rc(0, 0, dx, dy);
    m_vSplit.MoveWindow(&rc);
    // устанавливаю положение верт. сплиттера
    m_vSplit.SetSplitterPos(85,true);
    // устанавливаю положение горизонтальног сплиттера
    m_hSplit.SetSplitterPos(dy - 45,true);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.