Отрисовка контролов
От: Аноним  
Дата: 31.10.06 08:21
Оценка:
Собственно интересно как работает сабж. Наткнулся на такую вещь, если кинуть прогресс бар на форму, и в цикле замутить что типа

for(int i=0; i<1000000; i++)
ProgressBar1->Position=i;


то в процессе цикла прогресс бар перерисовывается
Ее отрисовка идет в другом потоке что ли?
Вообще такие вещи, людей , привыкших к WinAPI пугают
Re: Отрисовка контролов
От: Arioch  
Дата: 31.10.06 08:36
Оценка:
А> ProgressBar1->Position=i;

потрассируй внутрь
вполне вероятно что там внутри будет или PostMessage или ProcessMesages или еще что-нибудь вроде.
Re[2]: Отрисовка контролов
От: sleep_X  
Дата: 31.10.06 08:56
Оценка:
Здравствуйте, Arioch, Вы писали:

А>> ProgressBar1->Position=i;


A>потрассируй внутрь

A>вполне вероятно что там внутри будет или PostMessage или ProcessMesages или еще что-нибудь вроде.


Внутрь не трассируется, интовому члену класса просто присваивается значение...
Re: Отрисовка контролов
От: ak_miass Россия  
Дата: 31.10.06 08:57
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Собственно интересно как работает сабж. Наткнулся на такую вещь, если кинуть прогресс бар на форму, и в цикле замутить что типа


А>for(int i=0; i<1000000; i++)

А> ProgressBar1->Position=i;


А>то в процессе цикла прогресс бар перерисовывается

TProgressBar::Position это __property (расширение C++ от Борланд), там на самом деле внутри вызывается метод SetPosition, внутри которого и делается перерисовка.
А>Ее отрисовка идет в другом потоке что ли?
Нет.
А>Вообще такие вещи, людей , привыкших к WinAPI пугают
Обычно наоборот привыкшие к VCL от WinAPI шарахаются
Re[3]: Отрисовка контролов
От: Arioch  
Дата: 31.10.06 12:42
Оценка:
_X>Внутрь не трассируется, интовому члену класса просто присваивается значение...

В Delphi в свойствах проекта есть галочка — Use debug DCU's, после которого — трассируется.

Не знаюю точно где это в C++, но в крайнем случае сделай тот же цикл на Паскале
Re[2]: Отрисовка контролов
От: Danchik Украина  
Дата: 31.10.06 13:19
Оценка:
Здравствуйте, Arioch, Вы писали:

А>> ProgressBar1->Position=i;


A>потрассируй внутрь

A>вполне вероятно что там внутри будет или PostMessage или ProcessMesages или еще что-нибудь вроде.

Все это происходит в дебрях comctl32.dll.
Скорее всего прогресс рисуется напрямую в контекст или вызыавтся пара InvalidateWindow и UpdateWindow, что более вероятно.
Re[3]: Отрисовка контролов
От: Treefeed Украина  
Дата: 31.10.06 14:53
Оценка:
Здравствуйте, sleep_X, Вы писали:

_X>Внутрь не трассируется, интовому члену класса просто присваивается значение...


В опциях поекта на закладке Compiler в группе Debugging поставь Use Debug DCU,(это в Дельфи, в Билдере должно быть что-то похожее). Это позволит заходит внутрь
Все работает без глюков... А я?
<< RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.