Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.06.18;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.012 c
15-1148226217
Volf_555
2006-05-21 19:43
2006.06.18
Как установить/запустить/настроить IRC-сервер?!


2-1149045856
Рахимжан
2006-05-31 07:24
2006.06.18
Работа с двоичными файлами


15-1148225596
antonn
2006-05-21 19:33
2006.06.18
Профессии...


2-1149046199
D@Nger
2006-05-31 07:29
2006.06.18
BLOB not opened


2-1148982474
paul_k
2006-05-30 13:47
2006.06.18
Наступил на очередные грабли





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский