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

 C++ Discussion :

Ancrer les solides FillRect!


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 27
    Points : 15
    Points
    15
    Par défaut Ancrer les solides FillRect!
    Bonjour à vous

    Je cherche à afficher un solide sur une fenêtre avec la fonction FillRect, jusque là tout vas bien . Mon problème est que la fenêtre "cible" s'actualise très souvent et mon solide disparaît à chaque actualisation de la fenêtre. Je cherche à "ancrer" mon solide dans la fenêtre pour ne pas avoir à le re-dessiner 20 fois par seconde et surtout pour éviter le clignotement du solide ^^

    Auriez-vous une idée pour "ancrer" / "fixer" le solide sur la fenêtre?

    Merci d'avance

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 865
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 865
    Points : 219 076
    Points
    219 076
    Billets dans le blog
    121
    Par défaut
    Bonjour,

    Je pense que vous avez un problème de conception qui fait que le clignotement apparait. En théorie, votre boucle principale sera de la forme :
    Effacement de l'écran
    Affichage du solide
    Échange de buffer/mis à jour de l'écran (swap, flip ou autre fonction du genre).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 27
    Points : 15
    Points
    15
    Par défaut
    Bonjour LittleWhite

    Désolé de répondre si tardivement :s

    J'ai oublié de préciser que la fenêtre sur laquelle je cherche à afficher le solide n'est pas une fenêtre de mon programme, c'est une fenêtre bien distincte (démineur pour tous vous dire ). Je n'ai donc pas la "vitesse de rafraîchissement" de la fenêtre.

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 865
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 865
    Points : 219 076
    Points
    219 076
    Billets dans le blog
    121
    Par défaut
    J'ai du mal à comprendre comment elle n'est pas fenêtre de votre programme. Vous faites un bot pour le démineur ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Citation Envoyé par moi4567 Voir le message
    J'ai oublié de préciser que la fenêtre sur laquelle je cherche à afficher le solide n'est pas une fenêtre de mon programme, c'est une fenêtre bien distincte (démineur pour tous vous dire ). Je n'ai donc pas la "vitesse de rafraîchissement" de la fenêtre.
    C'est possible, mais c'est un peu de boulot :
    Avec SetWindowLong, tu peux changer la procédure de traitement des messages :
    tu peux donc redessiner ton rectangle à chaque WM_PAINT, sans oublier d'appeler la véritable fonction de traitement des messages avec CallWindowProc.

    Seul problème, pour changer la procédure de traitement des messages, il faut être dans le même processus : injection de DLL ou allocation de mémoire, copie du code, donner les droits d'exécution et créer un thread pour exécuter ça.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 27
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    J'ai du mal à comprendre comment elle n'est pas fenêtre de votre programme. Vous faites un bot pour le démineur ?
    Plus précisément je cherche à faire un genre de tuto pour apprendre à jouer au démineur. Ca doit déjà surement exister mais mon but n'est pas vraiment le programme en sois, mais plutôt d'apprendre à le faire

    Citation Envoyé par Iradrille Voir le message
    C'est possible, mais c'est un peu de boulot :
    Avec SetWindowLong, tu peux changer la procédure de traitement des messages :
    tu peux donc redessiner ton rectangle à chaque WM_PAINT, sans oublier d'appeler la véritable fonction de traitement des messages avec CallWindowProc.

    Seul problème, pour changer la procédure de traitement des messages, il faut être dans le même processus : injection de DLL ou allocation de mémoire, copie du code, donner les droits d'exécution et créer un thread pour exécuter ça.
    J'aimerais pouvoir le faire sans injection de DLL si possible, je vais donc essayer de faire ça avec l'appel d'un thread

    Sinon ne serrait-ce pas possible de créer un genre de "fenêtre over top" qui viendrait se mettre au-dessus de ma fenêtre cible? :o

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 370
    Points : 41 523
    Points
    41 523
    Par défaut
    Citation Envoyé par moi4567 Voir le message
    Sinon ne serrait-ce pas possible de créer un genre de "fenêtre over top" qui viendrait se mettre au-dessus de ma fenêtre cible? :o
    C'est possible, mais le faire avec un vrai lien de parenté entre les fenêtres unira également leurs files de messages, ce qui est déconseillé quand au moins l'une des fenêtres ne s'y attend pas.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Composant FMX : comment ancrer les objets ?
    Par Invité dans le forum Composants FMX
    Réponses: 17
    Dernier message: 10/05/2013, 20h48
  2. Ancrer les fenêtres
    Par Dev222 dans le forum Gnome
    Réponses: 2
    Dernier message: 18/11/2012, 09h56
  3. Réponses: 0
    Dernier message: 29/09/2010, 00h00
  4. Obligatoire : lisez les règles du forum : MAJ 06/08/2010
    Par Anomaly dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 0
    Dernier message: 03/07/2008, 13h46

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