Как правильно добавить статусбар? - PullRequest
1 голос
/ 15 февраля 2010

В настоящее время он плавает поверх моего визуализированного окна, я не думаю, что это хорошо по нескольким причинам: 1) я трачу время на рендеринг вещей, которые не видны. 2) он должен отображаться каждый кадр снова, когда я не буду обновлять всю строку состояния каждый кадр в любом случае.

Итак, как я могу создать окно, где оно оставляет место для моей строки состояния, и ни один из моих материалов OpenGL не может быть отрисован в этой области?

В данный момент я просто настраиваю свои окна просмотра таким образом, чтобы создать пустое пространство для строки состояния, но это вызывает некоторые проблемы в моем текущем способе работы. мне бы пришлось сделать мой код более запутанным, чтобы он работал.

Ответы [ 2 ]

3 голосов
/ 21 июня 2010

http://www.gamedev.net/community/forums/topic.asp?topic_id=291682

Изменить: Это не простой вопрос, чтобы ответить. Если вы не знаете, что такое дочернее окно под Win32, вы можете оказаться в гораздо лучшем положении. Однако просить кого-то дать вам полное объяснение оконной оконной системы - не значит подвиг.

Вот обзор:

По сути, вам нужно создать дочернее окно, которое можно сделать с помощью CreateWindow , чтобы создать окно со стилем WS_CHILD и с его параметром hWndParent, установленным в дескриптор окна, чтобы новое окно было дочерним. из.

Когда вы создали окно, вы обязательно создадите оконную процедуру Когда вы вызываете DispatchMessage из вашей рассылки сообщений (Цикл, который выполняет Get / PeekMessage и затем отправляет сообщения - это насос сообщений). Внутри оконной процедуры вы можете затем включить тип сообщения и обработать каждое сообщение, отправленное в ваше окно.

Отсюда вы можете обрабатывать такие вещи, как установка. Ваше начальное окно будет иметь либо WM_CREATE , либо WM_INITDIALOG (в зависимости от того, какой тип окна вы создаете). Именно оттуда вам нужно создать дочерние окна (не забудьте вызвать ShowWindow , чтобы сделать их видимыми !!). С этого момента вы можете настроить устройство DirectX для подключения к дескриптору дочернего окна (HWND).

Кроме того, если вы хотите изменить размер окна, вы также должны принять во внимание сообщение WM_SIZE . Однако я настоятельно рекомендую попытаться заставить остальные работать, прежде чем даже начать разбираться с этим, поскольку это становится очень сложным, поскольку вам нужно будет уничтожить и заново создать устройство DirectX, чтобы оно имело правильный размер.

В любом случае, это просто обзор. Надеюсь, это поможет!

0 голосов
/ 21 июня 2010

Одним из способов может быть сделать так, чтобы ваши «визуализированное окно» и «строка состояния» оба потомка содержавшего окна, и добавить некоторый код для сообщения WM_SIZE для этого содержащего окна, чтобы расположить дочерние элементы, чтобы они не перекрывались. .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...