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

Вниз

application.ProcessMessages   Найти похожие ветки 

 
CMOS ©   (2006-05-05 22:09) [0]

Есть ли аналог процедуры DoEvent (из VB) в Delphi?

Инициализирую D3D8
Устанавливаю необходимые параметры,
В цикле
application.ProcessMessages
устанавливаю матрицу вида
Выход когда условие

Проц подлетает под стольник. Даже мышка не шевелится. Снять задачу не возможно - диспетчер не грузится. Винт молчит.
В VB в такой же проге такого не было. DoEvent дает обработать все события, затем продолжает выполнять процедуру.


 
begin...end ©   (2006-05-05 22:14) [1]

Application.ProcessMessages тоже последовательно выбирает все накопившиеся сообщения из очереди и транслирует/диспетчеризует их, после чего возвращает управление.


 
Eraser ©   (2006-05-05 22:20) [2]


> CMOS ©   (05.05.06 22:09)


> Проц подлетает под стольник. Даже мышка не шевелится.

так не должно быть какие бы вычисления не производились, при нормальном приоритете процесса и в user mode.
показывай код.


 
Anatoly Podgoretsky ©   (2006-05-05 22:41) [3]

DoEvent приходит а ProcessMessages, полный эквивалент.


 
Cash ©   (2006-05-06 07:28) [4]

Ох уж мне эти цыклы, весно с ними маются! :)))

Не в цыкле это надо делать! Если у тебя Application есть, значит есть и
OnIdle событие. В нем и надо все делать, только Done в false ставь, тогда
все будет крутиться с максимальной скоростью. ProcessMessages в OnIdle
не нужен, т. к. (вроде) OnIdle наступает после обработки очереди
сообщений.


 
evvcom ©   (2006-05-06 08:36) [5]


> OnIdle событие. В нем и надо все делать

Все - это что? Все приложение туда запихать? :)


 
Cash ©   (2006-05-06 14:37) [6]

> Все - это что? Все
Ну если охота, то я мешать не буду! :)))

А так, ну... эти... нормальные шкодеры там делают всю обработку вывода
на экран и ввода с устройств, ведь речь (вроде) идет о D3D, как я понял
чел с этим какраз и намудрил. :)))


 
evvcom ©   (2006-05-06 14:44) [7]


> нормальные шкодеры там делают всю обработку вывода
> на экран и ввода с устройств

Не знаю, чего там делают шкодеры. К таковым себя не отношу.

> ведь речь (вроде) идет о D3D

А я думаю, чего это такое "D3D8"? Тогда автору в Игры надо было стучаться...


 
Cash ©   (2006-05-06 17:39) [8]

Ну я просто не рискнул просить всевышних о переносе этой ветки в
конфу "Игры". :)))
Просто понадялся что они сами это сделают, но что то их незаметно в
последнее время. :)

Эй, CMOS, откликнись! Ты там игру чтоль изладить решил? Иль еще чего?


 
Kolan ©   (2006-05-06 20:10) [9]

нормальные шкодеры там делают всю обработку вывода

А как зовут тех, кто доп потоки использует :)


 
Anatoly Podgoretsky ©   (2006-05-06 20:16) [10]

Kolan ©   (06.05.06 20:10) [9]
Извращенцы.


 
Cash ©   (2006-05-06 21:30) [11]

Kolan ©   (06.05.06 20:10) [9]:
> А как зовут тех, кто доп потоки использует :)
[с прищепкой на носу]Типа[/] их зовут продвинутые шкодеры! :)))
Но омжно еще и как Анатолий посоветовал. :)))

ЗЫ: а всевышние видать нас покинули. :)


 
CMOS ©   (2006-05-13 15:15) [12]


> OnIdle событие

А здесь по подробнее

Все нормально, ошибка в коде была. Сам разобрался.
Мне тут посоветовали вместо цикла рисовать все на событие Paint формы. Что-то сомнительно. Должна произойти рекурсия и я просто ничего не увижу. Попробовал. Получилось!!! Даже application.ProcessMessages не нужен. Загрузка проца 3%.
Объясните мне почему. Вот код:

procedure TForm1.FormPaint(Sender: TObject);
begin
D3DXMatrixLookAtLH(MatV, vEye, vAt, vUp);
Dev.SetTransform(D3DTS_VIEW, MatV);
Dev.Clear(0, 0, D3DCLEAR_TARGET or D3DCLEAR_ZBUFFER,
 0, 1, 0);
Dev.BeginScene;
...
Dev.EndScene;
Dev.Present(0, 0, 0, 0);
end;

После ПОЛНОГО выполнения, процедура повторяется.
По уму если, то Dev.Present(0, 0, 0, 0) должно вызвать событие Paint. Получится рекурсия. Конца не будет.
Вообще, тему нужно переназвать и перенести


 
Cash ©   (2006-05-13 18:37) [13]

CMOS ©   (13.05.06 15:15) [12]:
> Вообще, тему нужно переназвать и перенести

Ты давай лучше сам регься и рули к нам! :)))
Т. е. в конференцию "Игры", там тебе все покажут и расскажут. Может даже
прожуют, и всяко такое! :)))

ЗЫ: а скакой бабушки Dev(IDirect3DDeviceX) должен у какой то там формы
Paint Вызывать??? 8)

Там дело в том, что Paint срабатывает для перерисовки формы, форму
перекрыл - перерисовалось, мышой дернул - перерисовалось, и т. д.



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

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

Наверх




Память: 0.5 MB
Время: 0.038 c
2-1149061678
Квэнди
2006-05-31 11:47
2006.06.18
Обработка правой клавиши мыши в stringgrid


2-1148988526
Steep
2006-05-30 15:28
2006.06.18
Запук с дополнительными параметрами


15-1148016248
Ega23
2006-05-19 09:24
2006.06.18
С Днём рождения! 19 мая


2-1149154940
De
2006-06-01 13:42
2006.06.18
Почему не компелиться?


2-1149134771
Atanas
2006-06-01 08:06
2006.06.18
Код выполняемый сразу после запуска