Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.01;
Скачать: CL | DM;

Вниз

Где освобождать DC   Найти похожие ветки 

 
anbezr   (2003-04-18 09:03) [0]

Привет!
приложение состоит из двух потоков. мой компонент (TGraphicControl) может перерисовываться из обоих. в случае, когда метод Paint вызывается из второго потока, и при это уже выполняется в первом, возникает Canvas does nol allow drawing. поэтомы, из второго потока я посылаю WM_PAINT, когда надо перерисовать компонент. т.к. потомок TGraphicControl не имеет своей процедуры окна, сообщение приходится посылать его Parent"у но при посылке WM_PAINT в wParam нужно указывать DC, на котором отрисовывавть. DC родителя я получаю в SetParent fParentDC := GetDC(AParent.Handle) - все прекрасно работает. при закрытии, в перекрытом Destroy, я пытаюсь сделать ReleaseDC(Parent.Handle, fParentDC). возникает ошибка - Parent.Handle уже равно 0.
ReleaseDC(Parent.Handle, fParentDC);
inherited Destroy;
что я не правильно делаю?


 
MBo ©   (2003-04-18 09:06) [1]

может, достаточно будет
YourComponent.Invalidate или Refresh?


 
Skier ©   (2003-04-18 09:21) [2]

>anbezr
Попробуй (вместо того чтобы посылать сообщение WM_PAINT)
вызвать AParent.Invalidate (Invalidate сделат всё за тебе, т.е.
поставит сообщение WM_PAINT в очередь родительского окна)


 
anbezr   (2003-04-18 09:22) [3]

даже более чем. спасибо! этот сайт - великая сила :}


 
anbezr   (2003-04-18 09:30) [4]

Skier © (18.04.03 09:21)

да, Invalidate гораздо выгоднее, чем WM_PAINT.
Спасибо!

сижу и сожалею о том, что не знал о InvalidateRect ранее.



Страницы: 1 вся ветка

Текущий архив: 2003.05.01;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.011 c
3-377
xmrz
2003-04-14 18:00
2003.05.01
IB, FB или Yaffil?


3-471
N&N
2003-04-14 15:46
2003.05.01
Значащие числа в вычисляемом поле


14-769
Дмитрий К.К.
2003-04-15 06:51
2003.05.01
Именинники 15 апреля


14-789
tytus
2003-04-15 17:24
2003.05.01
Вид компонент


3-413
anton2v
2003-04-11 15:59
2003.05.01
Подключение к dBase, VFoxPro через ADO JET