Re[14]: Проблемы с перерисовкой, хотя OnPaint() есть
От: Darked  
Дата: 28.04.05 10:18
Оценка:
Вообщем, заработало

bool Cw32View::createTabs(void)
{
    CString str;    

    m_TabType.Attach(GetDlgItem(IDC_TAB_TYPE));    

    TC_ITEM TabCtrlItem = {0};
    TabCtrlItem.mask = TCIF_TEXT;
    _ASSERT(str.LoadString(IDS_STRING10271)) ;
    TabCtrlItem.cchTextMax = str.GetLength();
    TabCtrlItem.pszText = (LPTSTR) (LPCTSTR) str;

    TabCtrlItem.iImage = -1;                
    m_TabType.InsertItem( 0, &TabCtrlItem );    // создаем первую вкладку для диалога CIntegral

    _ASSERT(str.LoadString(IDS_STRING10272)) ;
    TabCtrlItem.cchTextMax = str.GetLength();
    TabCtrlItem.pszText = (LPTSTR) (LPCTSTR) str;

    TabCtrlItem.iImage = -1;                
    m_TabType.InsertItem( 1, &TabCtrlItem );    // создаем вторую вкладку для диалога CMashtab

    m_TabType.SetCurSel(0);
        
    RECT rc ;
    m_TabType.GetClientRect(&rc) ; 
    m_TabType.AdjustRect(FALSE, &rc);    // выравниваем содержимое, чтобы вкладки не залезали на названия

    //создаем объект интегрального диалога
    m_Integral = new CIntegral(pParent);
    m_Integral->Create(m_TabType.m_hWnd);
    m_Integral->MoveWindow(&rc);
    m_Integral->ShowWindow(SW_SHOWNORMAL) ;

    //создаем объект диалога маски пальцев
    m_Mashtab = new CMashtab(pParent);
    m_Mashtab->Create(m_TabType.m_hWnd);
    m_Mashtab->MoveWindow(&rc);
    m_Mashtab->ShowWindow(SW_HIDE);

    //создаем объект диалога настройки цветов фильтра
    m_ColorSet = new CColourSet(pParent);
    m_ColorSet->Create(m_TabType.m_hWnd);
    m_ColorSet->MoveWindow(&rc);
    m_ColorSet->ShowWindow(SW_HIDE);

    m_TabType.ShowWindow (SW_SHOW);
    return true;
}

Сразу m_ColorSet->Create(m_TabType.m_hWnd, rc); — не получается, вкладка заезжает на название .
Перерисовка:

LRESULT CColourSet::OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
    CBrush br;
    RECT rcRect;
    PAINTSTRUCT m_ps;
    HDC m_hDC;

    m_hDC = ::BeginPaint(m_hWnd, &m_ps);
    drawColRect(m_hDC);
    ::EndPaint(m_hWnd, &m_ps);

    m_ClrLine.GetClientRect(&rcRect);
//    ClientToScreen(&rcRect);
    m_hDC = ::BeginPaint(m_ClrLine.m_hWnd, &m_ps);
    br.CreateSolidBrush(line);
    ::FillRect(m_hDC, &rcRect, br.m_hBrush);
    ::EndPaint(m_ClrLine.m_hWnd, &m_ps);

    br.DeleteObject();

m_hDC = ::BeginPaint(m_ClrPit.m_hWnd, &m_ps);
    br.CreateSolidBrush(pit);
    m_ClrPit.GetClientRect(&rcRect);
    ::FillRect(m_hDC, &rcRect, br.m_hBrush);
    ::EndPaint(m_ClrLine.m_hWnd, &m_ps);
        
    return 0;
}


Еще раз большое спасибо!
Per aspera ad astra
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.