Re[2]: Перерисовка окна. Сто раз читал - не могу понять!
От: Nickolaich  
Дата: 12.12.10 07:31
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Invalidate(); // то есть с TRUE — по умолчанию.


И это пробовал — он просто очищает окно, а новый график не рисует. Только после свертывания-развертывания окна)


void CПостроениеграфиковDlg::OnPaint()
{
if (IsIconic())
{.......}
else
{
CDC *pDC = GetDC();
// рисую оси координат
// и сам график
CPen PGraph;
PGraph.CreatePen(PS_SOLID, 1, col_graf);
CPen *pOldPen = pDC->SelectObject (&PGraph);

for (int i=0; i<fx.size()-1; i++)
Line(pDC,215+15*fx[i],200-15*fy[i],215+15*fx[i+1],200-15*fy[i+1]);
CDialog::OnPaint();
}
}

void CПостроениеграфиковDlg::On_From_File()
{
...............
// Это заполнение векторов координат (х,y), по которым в OnPaint() рисуются линии
for (int i=0; i<coordx.size(); i++)
{
fx.push_back(atof(coordx[i].c_str()));
fy.push_back(atof(coordy[i].c_str()));
}
// затем хочу вызвать OnPaint для отрисовки

UpdateWindow(); // тогда при нажатии на кнопку построить, он просто очищает окно и все,
// рисует график только, когда сверну и разверну окно
// Если на использовать UpdateWindow();, то делаю так
Invalidate(FALSE); // тогда он рисует нормально график. Потом я хочу нарисовать новый.
// он рисует старый и новый, а при свертывании, развертывании — убирает старый // и оставляет новый
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.