cs_Killan
Messages postés46Date d'inscriptionjeudi 10 janvier 2002StatutMembreDernière intervention 5 février 2010
-
31 janv. 2006 à 20:59
cs_Killan
Messages postés46Date d'inscriptionjeudi 10 janvier 2002StatutMembreDernière intervention 5 février 2010
-
1 févr. 2006 à 22:04
Bonjour,
Le but :
==================================
Je crée actuellement un application graphique (DirectX) et donc je ne peu pas utiliser les "control" des forms, j'ai donc décidé de les refaire dans l'optique graphique par moi même de A à Z.
J'ai refait les formulaires et les boutons, et maintenant j'attaque les MessageBox et j'aimerais arriver à appeller l'objet et recevoir la reponse en retour comme la MessageBox existante (schéma : rep = messagebox(texte, boutonflags);).
Le contexte :
==================================
une boucle principale qui appelle la méthode de rendu (pour simplifier), celle ci appelle ces objets contenu pour s'afficher etc.
Je capte les événements et doncsi je clic surun bouton et que je veu poser une question je veu donc appeller une MessageBox (toujours de ma conception)
Ok elle s'affiche et je peu gérer les événements relatif aux boutons de cette MessageBox ainsi que la fermer une fois un bouton cliqué.
Questions et problème :
==================================
La question que je me pose est : la boucle principale qui appelle les méthodes de rendu sera t elle bloqué si dans la fonction appellée par un événement j'y met un code bloquant (attente de la reponse de la messagebox) ?
Si le code est bloquant, ce que j'imagine vu que tous codes revient à une lecture linéaire, comment pourrais-je faire pour avoir d'un coté mon rendu en boucle et à coté un appelle bloquant pour attendre la reponse de la messagebox ? cet appel ayant été fait lors d'un événement.
Si besoin de precisions, demandez :)
Solutions qui pourrait aller mais ne correspond pas à mon but :
======================================================================
Au lieu d'attendre la reponse, je dis à la messagebox d'appeller une fonction X lorsqu'elle à le resultat (ajout d'une méthode sur la pile d'un événement)
Mais ça divise mon code en 2, une fonction qui appelle et une fonction appellée par événement qui termine l'opération :s
Si il n'y a pas moyen de faire mieu je prendrais cette unique solution là, mais elle ne me semble pas optimale.
Lutinore
Messages postés3245Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 1 févr. 2006 à 02:32
Salut,
Si tu as une fonction bloquante le mieux c'est d'utiliser un second thread.
Tu as refait les contrôles "from scratch" !? Avec DirectDraw ( obsolète ) on peut utiliser les dialogs même en mode FULLSCREEN EXCLUSIVE, en tout cas c'était comme ça avec DirectX 9.0b, dans le SDK 9.0b y'a un exemple qui s'appelle "FullScreenDialog". Je connais pas Direct3D mais il me semble que les programmeurs en C++ utilise l'API DXUT qui fournit des contrôles entièrement codés avec Direct3D, en code managé et dans DirectX 9.0c ( Décembre 2005 ) je crois que cette API est implémentée sous le nom "Sample Framework" y'a un exemple dénommé "CustomUI" et le code source du "Sample Framework" se trouve dans "Samples\Managed\Common". J'ai pas testé tout ça, donc à toi de voir..
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 1 févr. 2006 à 09:55
Je peux pas dire que j'ai testé, j'ai juste regardé vite fait. (je suis completement debutant en Dx : Creation de device, affichage de text et d'une forme simple )
Le point positif : juste un seul Assembly a utiliser.
Sinon, j'ai rencontré quelques noms de classes changées (Caps devient Capabilities, ...), ce qui force a devoir modifier du code si qqun veut migrer son appli.
Par contre, j'ai reussi a le faire tourner sous xp (sans rien faire de special). Peut-etre parce que c'etait simplement une fenetre sans rien dedans ^^.
Mx
MVP C#
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Killan
Messages postés46Date d'inscriptionjeudi 10 janvier 2002StatutMembreDernière intervention 5 février 2010 1 févr. 2006 à 21:18
Salut salut,
alors pour vous répondre, vu que je vise un aspect totalement modifiable graphiquement, je ne vais donc pas utiliser les samples UI de crosoft.
de plus le framework construit represente pour moi de grande barière, car on est confiné dans les possibilités du framework. alors j'ai repris un cran plus loin : le niveau 0 de Directx lol :)
concernant DX10, je me suis pas renseigné, j'étais meme pas au courant. Et puis bon avec la 9c c'est suffisant pour etre largement compatible un certain temps, c'est pour ça que je travail toujours avec des versions non-dernier cri.
question c'est quoi "from scratch" ? je ne connais pas le terme
concernant les solutions du problème : j'ai une possibilité en +
avec l'idée d'un thread donc, refaire une 2eme boucle graphique affichant la boite par dessus le dernier rendu en mémoire (evidemment je resume) ça permet d'avoir le meme affichage + les evenement en étant bloquant.
Je vais essayé ça et je viendrais rapporter le resultat, pour les intéressez contactez moi pour voir le projet :)