IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

DirectX Discussion :

réserver une zone de l'écran en mode plein écran


Sujet :

DirectX

  1. #1
    jfd
    jfd est déconnecté
    Membre à l'essai
    Inscrit en
    avril 2002
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : avril 2002
    Messages : 23
    Points : 22
    Points
    22
    Par défaut réserver une zone de l'écran en mode plein écran
    est-il possible de réserver une zone de l'écran en mode directx(pleine écran)
    du style un jeu utilise 1024x700 et la zone 1027x68 en haut affiche autre chose ...
    peut-être en modifiant les bibliothèque de directx ... ???
    ...
    merçi de vos réponses

  2. #2
    Membre régulier
    Inscrit en
    mars 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : mars 2002
    Messages : 97
    Points : 71
    Points
    71
    Par défaut
    je connais pas une fonction qui fasse directement ce que tu veux !

    Je te conseilles deux solutions :

    1°/ tu gère la séparation toi-même, c'est-à-dire que tu tronques les surfaces à afficher, comme tu le ferais pour les bordures d'écran.

    2°/tu crées deux surfaces qui vont représenter les deux zones, à la place de dessiner directement sur la surface secondaire. Comme ça tu peux choisir sur quelle surface tu affiches ton image. Et à la fin tu dessines les deux surfaces à l'écran.

    J'espère que ça va t'aider !

  3. #3
    jfd
    jfd est déconnecté
    Membre à l'essai
    Inscrit en
    avril 2002
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : avril 2002
    Messages : 23
    Points : 22
    Points
    22
    Par défaut re
    je vois ...

    mais en fait je ne controle pas le programme en directx, puisque cela peut-etre n'importe quel jeu ...

    je devrais certainement intervenir directement au niveau de la couche directx de windows ... ça va pas être simple

    l'idée c'est d'afficher des infos sur une parti de l'écran pendant l'éxécution d'un jeu !

    #### là d'un coup j'ai une autre idée : si j'envoie un affichage diretx pendant un jeu (par dessus l'écran du jeux) genre en modal comme les fenêtres windows ???
    ça peut certainement se faire ???? à moins que le mode directx plein écran soit réservé au programme en cours !!

    .......

  4. #4
    Membre régulier
    Inscrit en
    mars 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : mars 2002
    Messages : 97
    Points : 71
    Points
    71
    Par défaut
    ah ok j'avais pas compris !

    tu veux pour n'importe quel jeu fait en directx pouvoir te réserver un bout de l'écran pour afficher tes propres infos à l'aide d'un programme extérieur, c'est ça?

    la solution que t'as trouvée pourrait peut-être marcher, c'est-à-dire d'afficher une fenêtre par dessus le jeu, mais pour ce faire il faut que tu récupère le handle de la fenêtre et que tu fasses en sorte que ta fenêtre soit toujours visible !

    je te souhaite bon courage

  5. #5
    jfd
    jfd est déconnecté
    Membre à l'essai
    Inscrit en
    avril 2002
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : avril 2002
    Messages : 23
    Points : 22
    Points
    22
    Par défaut
    salut
    en fait, je récupère le handle de la fenêtre active (donc le jeux) et je dessine sur le canvas. Ca marche !! mais sur les zones "actives", je doit rafraichir souvent
    en fait c'est la guerre entre mon appli et le jeux

    mais sur les zones passives c'est bien

    je continu ...

  6. #6
    jfd
    jfd est déconnecté
    Membre à l'essai
    Inscrit en
    avril 2002
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : avril 2002
    Messages : 23
    Points : 22
    Points
    22
    Par défaut showmodal
    existe-il un genre de "showmodal" sous directx ?
    ou ne peut-il y avoir qu'un seul écran actif ?

    question pour les pros bien sur

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    avril 2002
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : avril 2002
    Messages : 7
    Points : 8
    Points
    8
    Par défaut gdi + fort que dx :p
    Salut,

    normal que ca fasse ca.
    l'ideal aurait ete de pouvoir appeller la fonction FlipToGDISurface, mais là je doute que ca marche bien.

    Sinon tu peux essayer d'ouvrir une interface vers la surface primaire, de recuperer un hdc sur ta fenetre à afficher et de blitter le tout sur la surface primaire.
    m'enfin à mon avis il faudra batailler avec des WaitForSync pour pas que ca clignote.

    mais bon j'ai pas testé, alors je sais pas si c'est une bonne technique.
    (pour plus de details : doc directx6.1 'Displaying a Window in Full-Screen Mode')

    je devrais certainement intervenir directement au niveau de la couche directx de windows ... ça va pas être simple
    ouai c clair.. ou en tout cas si tu y arrives ca m'interesse

  8. #8
    mat.M
    Invité(e)
    Par défaut
    est-il possible de réserver une zone de l'écran en mode directx(pleine écran)
    du style un jeu utilise 1024x700 et la zone 1027x68 en haut affiche autre chose ...
    peut-être en modifiant les bibliothèque de directx ... ???
    Il faudrait regarder la programmation des Overlays ce qui expliqué dans le livre de MS Press sur Direct X . Mais avec Direct X 8 comme il n'y a plus de surfaces Direct Draw

  9. #9
    jfd
    jfd est déconnecté
    Membre à l'essai
    Inscrit en
    avril 2002
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : avril 2002
    Messages : 23
    Points : 22
    Points
    22
    Par défaut
    On m'a soufflé de capturer "WM_PAINT" je fais des essais ... si vous avez des liens ou bout de code en rapport avec mon problème, je suis preneur ...

  10. #10
    mat.M
    Invité(e)
    Par défaut A NE PAS FAIRE
    On m'a soufflé de capturer "WM_PAINT" je fais des essais ... si vous avez des liens ou bout de code en rapport avec mon problème, je suis preneur ...
    SURTOUT PAS !!!! ( à moins d'être en mode fenêtré ce qui n'est pas le cas )

    WM_PAINT est un message émis à une fenêtre classique avec barre de tâche lorsqu'elle est repainte , c.a.d. au démarrage et lorsque la fenêtre reçoit le focus c.a.d. lorsqu'elle est cachée par une autre fenêtre et repainte.
    En principe lors d'un message WM_PAINT , on utilise une structure de dessin ou PAINTSTRUCT :
    PAINTSTRUCT ps;
    case WM_PAINT:
    hdc = BeginPaint (hwnd, &ps) ;
    [use GDI functions]
    EndPaint (hwnd, &ps) ;
    break;
    Ceci est valable pour une appli utilisant le GDI , fenêtrée classique.

    Hors une appli utilisant Direct Draw c'est RADICALEMENT différent :
    on utilise en général des surfaces basculantes avec la méthode Flip() et la mise à jour de l'écran est effectuée dans le WinMain...

  11. #11
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    en mode directX plein ecran (ddraw ou dgraphics)
    tu n'as pas acces a la couche GDI de windows
    (sauf sous DirectX9.0 qui n'est pas encore sorti).

    Le probleme c'est que tu n'as aucune idee si le backbuffer
    cree est compatible avec GDI (verrouillable, backbuffer detruit apres chaque swap, pas d'antialiasing).

    Tu peux essayer de modifier les lib DirectX mais je suppose que tu sais ce que tu fais (perso je saurais pas faire ).

    Sous les jeux en plein ecran, en general le message WM_PAINT n'est pas
    interprete (je parle d'un cas typique de jeu 3D ou l'ecran est rafraichi en permanence).

    LeGreg

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

  12. #12
    JEG
    JEG est déconnecté
    Membre éclairé
    Avatar de JEG
    Profil pro
    Inscrit en
    mars 2002
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2002
    Messages : 211
    Points : 715
    Points
    715
    Par défaut
    Citation Envoyé par LeGreg
    Sous les jeux en plein ecran, en general le message WM_PAINT n'est pas interprete (je parle d'un cas typique de jeu 3D ou l'ecran est rafraichi en permanence).
    Je ne sais pas quelle technologie graphique utilise MSN messegner, mais à chaque fois qu'un guguss se connecte la carré bleu qui me le dit s'affiche lorsque je suis sur n'importe quel jeu (quasiment ) et ce en mode FULLSCREEN. Donc je pensais que WM_PAINT était quand meme interprêté

  13. #13
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    oui pour messenger c'est magique
    je n'en sais pas beaucoup plus.

    note que messenger = microsoft

    LeGreg

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

  14. #14
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    faudrait faire des tests pour voir si ca marche sous tous les jeux
    avec toutes les configs (antialias, flip, copy, mode ecran 10bits par canal, etc..)

    malheureusement je n'ai pas messenger chez moi.

    A+
    LeGreg

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

  15. #15
    jfd
    jfd est déconnecté
    Membre à l'essai
    Inscrit en
    avril 2002
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : avril 2002
    Messages : 23
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par JEG
    Je ne sais pas quelle technologie graphique utilise MSN messegner, mais à chaque fois qu'un guguss se connecte la carré bleu qui me le dit s'affiche lorsque je suis sur n'importe quel jeu (quasiment ) et ce en mode FULLSCREEN.
    En effet ! une piste à suivre ...

  16. #16
    JEG
    JEG est déconnecté
    Membre éclairé
    Avatar de JEG
    Profil pro
    Inscrit en
    mars 2002
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2002
    Messages : 211
    Points : 715
    Points
    715
    Par défaut
    Y'a aussi Virtual Girl qui fait ca.... hum

  17. #17
    mat.M
    Invité(e)
    Par défaut
    Monsieur le Greg ,

    en mode directX plein ecran (ddraw ou dgraphics)
    tu n'as pas acces a la couche GDI de windows
    Essayez ceci en mode plein écran:

    LPDIRECTDRAWSURFACE7 lpDDSOFF;


    void AfficheRectangle(int x1,int y1,int x2,int y2)
    {
    HDC hdc;
    lpDDSOFF->GetDC( &hdc );
    Rectangle(hdc,x1,y1,x2,y2);
    lpDDSOFF->ReleaseDC(hdc);

    }

    Et vous verrez que toutes les fonctions GDI ( TextOut , MoveTo , LineTo....) sont disponibles avec les surfaces DirectDraw.

    Dans le livre de Microsoft Press "Atelier Direct X " le sujet est abordé.

  18. #18
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    oui mais getDC n'existe plus dans DirectGraphics..

    Il fera son grand retour dans DirectX9
    mais seulement sur les surfaces compatibles..

    As-tu essaye de tracer des fenetres style popup dans DirectGraphics?
    suivant la carte (ici j'ai une Geforce2), les dialogues sont affichees dans le mauvais buffer, celui qui n'est pas a l'ecran une frame sur deux..

    Mon avis c'est que le driver en fera qu'a sa tete jusqu'a ce qu'on
    ait le vrai support GDI (et les dev caps associes suivant la carte graphique et le driver) dans DirectGraphics 9.0

    A+
    LeGreg

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

Discussions similaires

  1. Mode plein écran pour une application
    Par raggnic dans le forum Développement Windows
    Réponses: 1
    Dernier message: 05/11/2012, 11h35
  2. [PPT-2007] comment affecter une macro "ouvrir en mode plein écran" à un diaporama PPSX?
    Par jerky1 dans le forum VBA PowerPoint
    Réponses: 3
    Dernier message: 12/04/2011, 13h06
  3. Passé du mode plein écran au mode fenetré
    Par kitue dans le forum SWT/JFace
    Réponses: 4
    Dernier message: 25/04/2008, 18h29
  4. Presentation d'un formulaire en mode plein écran
    Par PAUL87 dans le forum Access
    Réponses: 4
    Dernier message: 13/11/2005, 21h04
  5. mode plein écran
    Par Rinoud dans le forum Agents de placement/Fenêtres
    Réponses: 8
    Dernier message: 30/09/2004, 02h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo