Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Проблема с перерисовкой


Автор: Darked 30.3.2005, 06:48
Доброе врея суток.
Столкнулся с такой вещью. Пишу на WTL. Есть контрол CTabCtrl, в нем 3 вкладки. При переключении на последнюю вкладку должен появляться диаложек. На этом диложке находятся 2 контрола: CStatiс и CButton, плюс еще я рисую градиентнозакрашенный прямоугольник функцией SetPixel. Так вот суть проблемы в том, что когда открываю вкладку все прорисовываеся, но если вкладка перекрывается каким-нибудь окном, но все перерисовывается, а нарисованный мною прямоугольник нет, т.е. часть прямоугольника закрытая окном не перерисовывается. Вот и хочетя узнать как это побароть.
Появдяющийся диалог на вкладке это класс наследуемый от CDialogImpl, у него я переопределяю обработчик onPaint(), в котором вызываю функцию рисования цветного прямоугольника drawColRect().
Код

void CClass::drawColRect()
{
  RECT rcClient;
  CDC m_CDC;
  
  GetClientRect(&rcClient);
  m_CDC.m_hDC = ::GetDC((CWindow)m_MyDialog));
  ATLASSERT(m_CDC.mhDC);
  if(m_CDC.mhDC)
     {
    .... // отрисовка прямоугольника
     {
   ReleaseDC(m_CDC.m_hDC);
}
...
LRESULT CClass::OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)   // пишу по памяти, могу и ошибаться
{
  ::DefWindowProc(m_MyDialog.m_hWnd, uMsg, wParam, lParam);
  drawColRect();
  
  return 0;
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)