Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

CreateProcess, INFINITE и проблема с прорисовкой окон


Страницы:   1 2

Skier ©   (2004-07-23 14:55:00) 

Если делать так
http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988621841&n=15
то появляется проблема с прорисовкой окон...

Не подскажите ли как сделать всё тоже самое что и в ссылке, но
чтобы можно было вызывать Application.ProcessMassages для обработки сообщений в очереди ?
И можно ли это сделать ?


Бином Ньютоныч   (2004-07-24 16:08:00) [21]

MsgWaitForMultipleObjects(1, pi.hProcess, false, Timeout, QS_PAINT) ?


wicked   (2004-07-23 16:23:00) [22]

хотя если не связываться с потоками, то оптимальным решением было бы [1] + [6]... имхо...


Суслик   (2004-07-23 16:19:00) [23]

я бы сделал:
1) в отдельном потоке запускал бы
2) в основном эмулировал модальность (как вы это понимаете) пока не будет от потока инфы, что он дождался конца запущенного им приложения.


wicked   (2004-07-23 15:18:00) [24]

хотя не.... PeekMessage'у вместо Application.Handle надо передавать 0 для того, чтобы он все окна обрабатывал...


Sandman25   (2004-07-23 15:17:00) [25]

Self.Enabled := False?


wicked   (2004-07-23 15:17:00) [26]

тогда вместо:
> Application.ProcessMessages;
пишем
> while PeekMessage(Msg, Application.Handle, WM_PAINT, WM_PAINT, PM_REMOVE) do
>     DispatchMessage(Msg);

выбираем из очереди сообщений все WM_PAINT... имхо этого достаточно (не проверял)....


default   (2004-07-23 15:14:00) [27]

Skier ©   (23.07.04 15:09) [2]
поподробней(


default   (2004-07-23 15:11:00) [28]

wicked ©   (23.07.04 15:03) [1]
только по твоему коду
лучше в одну строку
while WaitForSingleObject(pi.hProcess, 100 ) = WAIT_TIMEOUT  do Application.ProcessMessages


Skier   (2004-07-23 15:09:00) [29]

>wicked ©   (23.07.04 15:03) [1]
Нужно чтобы процесс запускался "модально"...


wicked   (2004-07-23 15:03:00) [30]

это
> WaitForSingleObject( pi.hProcess, INFINITE );
заменить на
> wait_res := WaitForSingleObject( pi.hProcess, 100 );
> while wait_res = WAIT_TIMEOUT do begin
>     Application.ProcessMessages;
>     wait_res := WaitForSingleObject( pi.hProcess, 100 );
> end;


или я чего то недопонял?...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо