Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Win API] Erreur d'exécution

A cause d'une déclaration...

Sujet résolu
    2 janvier 2008 à 11:12:28

    Bonjour à tous, j'ai un petit souci dans un projet... J'ai créé une classe "Window" qui, dans un premier temps, se contente d'ouvrir un processus et de récupérer le handle et la position de la fenêtre sur le bureau. Voici la déclaration de ma classe :
    1. class Window
    2. {
    3. STARTUPINFO startInfo;
    4. PROCESS_INFORMATION processInfo;
    5. // Infos de démarage du processus
    6. HWND handle;
    7. // Handle de la fenêtre
    8. RECT *rect;
    9. // Coordonnées de la fenêtre sur le bureau
    10. public:
    11. bool opened;
    12. // Booléen d'ouverture du processus
    13. Window(char *processName, char *windowTitle);
    14. // Constructeur
    15. int pixelTest(int x, int y);
    16. // Renvoie la couleur du pixel demandé
    17. };

    Ca fonctionne sans problème, le processus est lancé, et j'utilise GetWindowRect(handle, position) pour récupérer les coordonnées de la fenêtre, ce qui me permet de placer la souris sur la barre de titre pour déplacer la fenêtre (avec SetCursorPos et la fonction qui simule un clic, dont j'ai oublié la nom ^^ ). Par contre, dès que je rajoute une déclaration de variable dans ma classe Window, par exemple si je déclare ma classe comme ça :
    1. class Window
    2. {
    3. // Ici, là, j'ai rajouté une déclaration :
    4. int tmp;
    5. // Variable temporaire
    6. STARTUPINFO startInfo;
    7. PROCESS_INFORMATION processInfo;
    8. // Infos de démarage du processus
    9. HWND handle;
    10. // Handle de la fenêtre
    11. RECT *rect;
    12. // Coordonnées de la fenêtre sur le bureau
    13. public:
    14. bool opened;
    15. // Booléen d'ouverture du processus
    16. Window(char *processName, char *windowTitle);
    17. // Constructeur
    18. int pixelTest(int x, int y);
    19. // Renvoie la couleur du pixel demandé
    20. };

    Le programme plante à l'exécution o_O Comment est-ce qu'une simple déclaration peut faire ça ? Il semble que ce soit la fonction GetWindowRect qui plante, mais le débugeur n'est pas très clair sur ce point :-° (j'utilise Dev-C++) Peut-être que je n'utilise pas GetWindowRect comme il faut ?
    Voilà, j'espère que j'ai été assez clair dans mon explication :) Merci d'avance et bonne journée.
    • Partager sur Facebook
    • Partager sur Twitter
      2 janvier 2008 à 14:30:07

      une variable temporaire?

      tu veux dire quois par la?
      il n'y a pas de faute dans ce code mais peut etre lors de l'utilisation de cette "variable temporaire"
      • Partager sur Facebook
      • Partager sur Twitter
        2 janvier 2008 à 22:43:55

        Non, je me suis mal exprimé ^^ Quand je dis variable temporaire, généralement ce sont les variables que je déclare pour faire des tests, mais elle ne reste pas longtemps dans le code... Ici, je ne l'utilise pas du tout, c'est bien pour ça que je ne comprends pas comment ça peut planter à l'exécution à cause d'une simple déclaration ! Merci d'avance de vos réponses ...
        • Partager sur Facebook
        • Partager sur Twitter
          3 janvier 2008 à 18:01:04

          tu ne l'utilise pas du tout :( ...
          mais il y a une erreur...

          que te donne ton compilo et a quel ligne (si ca plante :p
          )
          • Partager sur Facebook
          • Partager sur Twitter
            4 janvier 2008 à 10:43:40

            Non, le compilo ne donne aucune erreur... ça compile sans problème ! C'est une erreur d'exécution ! Sous windows, la petite fenêtre qui te propose d'envoyer le rapport d'erreur à microsoft... Autrement dit, mon programme tente d'accéder à des ressources qui ne lui appartiennent pas. Ma question est : puisque ça marche dans le premier cas, pourquoi ça ne marche plus lorsque je déclare simplement une nouvelle variable ? Merci à toi de chercher à comprenre en tout cas :)
            • Partager sur Facebook
            • Partager sur Twitter
              4 janvier 2008 à 10:47:35

              Tu peux lancer ton programme en "debug" et voir ou il plante exactement.
              Ce sera plus simple pour voir d'ou vient le pbm.

              A+
              • Partager sur Facebook
              • Partager sur Twitter
                4 janvier 2008 à 14:15:45

                Oui oui, j'ai fait ça... Mais le débugeur ne m'aide pas, pour lui ça plante dès l'appel du constructeur de ma classe... En réalité, je suis sûr que c'est le GetWindowRect qui plante, puisque quand je l'enlève ça ne plante plus...
                Personne ne sait comment une simple déclaration peut faire planter une éxecution ?? je vous remercie...
                • Partager sur Facebook
                • Partager sur Twitter
                  4 janvier 2008 à 17:24:29

                  Si tu as trouvé que c'est ton constructeur qui plante et que tu as des doutes à l'appel de GetWindowsRect.... Pourquoi je ne vois pas de code?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    4 janvier 2008 à 23:05:21

                    une erreur de segmentation non ^^

                    ca arrive lors d'erreur dans un tableau ou lorsque que tu souhaite atteindre une variable auquel tu n'a pas ""l'autorisation""... enfin ca m'ai arrivé qu'une fois :-°
                    • Partager sur Facebook
                    • Partager sur Twitter

                    [Win API] Erreur d'exécution

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown