Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

PeekMessage() для окна в CB6

263
16 февраля 2007 года
koltaviy
816 / / 16.12.2004
Ситуация следующая - работаю сейчас с DirectX в C++Builder 6, а книга у меня про DX в С++.NET.
Все проблемные ситуации потихоньку решаются, но сейчас вообще уперся в стенку.
Цитата из книги Горнакова С. "DX 9. Уроки программирования на C++", взятая из статьи посвященной рендерингу(прорисовке) объекта:
Цитата:

 
Код:
...
while (GetMessage(&msg, NULL, 0, 0))
{
 TranslateMessage(&msg);
 DispatchMessage(&msg);
}
RenderingDirect3D();  //---koltaviy: это функция рендеринга
...

И если поступить именно так, то все, что вы увидите после успешной компиляции, - это мигнувшее на доли секунды окно. Дело в том, что сама функция GetMessage() не предназначена для работы в реальном времени, поэтому нужно заменить эту функцию на PeekMessage(), которая практически одинакова с GetMessage(). За исключением того, что PeekMessage() позволяет постоянно следить за очередью сообщений, и ее работа сводится к простым действиям: есть сообщения - обрабатываем, нет - ждем дальше.
...
Код:
...
while (msg.message != WM_QUIT)
{
 if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
 {
  TranslateMessage(&msg);
  DispatchMessage(&msg);
 }
 else
  RenderingDirect3D();
}
...


Ситуация возникла именно такая же. Но, поскольку собщения в CB6 обрабатываются по-другому, не понимаю как решить эту проблему. Нажимаешь кнопку старта, окно мелькает и выполнение программы заканчивается.
Прошу не предлагать мне перейти в другую среду разработки. Знаю, что это гемор - и сам уже натерпелся. Но CB6 - требование заказчика.

391
16 февраля 2007 года
Archie
562 / / 03.02.2005
Ну, рендерить можно в отдельном потоке, а в окно выводить по мере готовности. А если очень хочется сделать так, как в книге, то есть такое свойство у компонента, WindowProc называется. Подменяешь его просто своей функцией.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог