Вывод графики в отдельном потоке
От: Vovan_2 Россия  
Дата: 14.04.05 20:52
Оценка:
Здравствуйте.

Программа на MFC (VS .NET) занимается рисованием на экране картинок -- по сути дела графиков специального вида некоторых функций. Вывод осуществляется с помощью метода CDC::SetPixelV(). Рисование может занимать продолжительное время (скажем, секнд 10) и хочется, чтобы остальной интерфейс при этом не тормозил. Кроме того, очень желательно иметь возможность прервать построение по нажатию кнопки или клавиши. Я запускаю цикл, выполняющий построение в отдельном потоке при помощи AfxBeginThread(), однако, при выполнении ничего не происходит и не рисуется. Если просто вызываю функцию потока, то все нормально.

В чем здесь может быть ошибка? Допускаю, что объект типа CDC создается только на время работы OnDraw() и к моменту запуска потока указатель на него, который я передаю функции потока указывает непонятно куда. Я бы так и думал, если бы не один интересный факт. Если перед окном программы поместить другое окошко (например калькулятор) и подвигать, то там, на том месте, где было окно появляется изображение! В чем же тут дело?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.