Question

Actuellement, il flotte au-dessus de ma fenêtre rendu, je ne pense que c'est bon pour quelques raisons: 1) je perds le temps de rendu pour le rendu des choses qui nest pas visible. 2) il doit être rendu chaque image à nouveau quand je ne serais pas mise à jour l'ensemble statusbar toutes les images de toute façon.

Alors, comment je pourrais créer une fenêtre où il laisse la place à ma barre d'état et aucun de mes affaires OpenGL pourrait être rendue dans ce domaine?

En ce moment, je régler juste mes fenêtres d'une manière qui crée un espace vide pour statusbar, mais il provoque des problèmes dans ma façon actuelle de faire les choses. Je dois faire mon code semble beaucoup plus messier pour le faire fonctionner.

Était-ce utile?

La solution

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

Edit: ne est pas une simple question à répondre. Si vous ne savez pas ce qu'est une fenêtre enfant est sous Win32 alors vous pouvez être en mesure de beaucoup mieux. Toutefois demander à quelqu'un de vous donner une explication complète des fenêtres système de fenêtrage est pas un mince exploit.

Voici un aperçu:

Fondamentalement, vous devez créer une fenêtre enfant qui peut être fait en utilisant CreateWindow pour créer une fenêtre avec le style WS_CHILD et son paramètre hWndParent réglé sur la poignée de fenêtre que vous voulez la nouvelle fenêtre d'être un enfant de.

Lorsque vous avez créé la fenêtre, vous aurez, nécessairement, créer un procédure fenêtre Lorsque vous appelez DispatchMessage de votre pompe de message (la boucle qui fait un Get / PeekMessage puis envoie les messages est la pompe de message). A l'intérieur de la procédure de fenêtre, vous pouvez activer le type de message et gérer chaque message envoyé à votre fenêtre.

De là, vous pouvez gérer les choses comme la configuration. Votre fenêtre initiale aura soit un WM_CREATE ou WM_INITDIALOG (en fonction de ce type de fenêtre tu crées). Il est de là que vous devez créer les fenêtres enfants (Ne pas oublier d'appeler ShowWindow pour les rendre visibles !!). A partir de ce stade, vous pouvez configurer le périphérique DirectX pour être attaché à la poignée de fenêtre enfant (HWND).

En outre, si vous voulez être en mesure de redimensionner la fenêtre, alors vous devez aussi tenir compte de la WM_SIZE mesage. Cependant, je vous recommande fortement d'essayer de faire fonctionner le reste avant même de commencer à examiner cette question car il est très compliqué que vous devrez détruire et recréer votre appareil de DirectX afin qu'il soit à la bonne taille.

En tout cas c'est juste un aperçu simple. J'espère que ça aide!

Autres conseils

Une façon peut être de faire votre « fenêtre rendu » et « statusbar » les enfants d'une fenêtre contenant, et d'ajouter un peu de code pour le message WM_SIZE pour cette fenêtre contenant pour positionner les enfants afin qu'ils ne se chevauchent pas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top