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

Windows Discussion :

Gérer plusieurs fenetres avec l'API Windows


Sujet :

Windows

  1. #1
    Membre habitué Avatar de jimay
    Profil pro
    Inscrit en
    Août 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 146
    Points : 178
    Points
    178
    Par défaut Gérer plusieurs fenetres avec l'API Windows
    Bonjours à tous et à toutes

    Je "m'amuse" actuellement avec l'API windows pour créer des interfaces graphiques.
    Pour le moment je suis mon petit bonhomme de chemin et j'avance plutôt bien mais là je suis tombé sur un os.

    Je désire créer plusieurs fenêtres et bien sûr afficher des choses différentes sur les deux.

    j'ai donc deux variables HWND différentes déclarées en Global
    1ere fenêtre: à sa création je créé 3 boutons dessus
    2ieme : vide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    hwnd = CreateWindowEx (0, szClassName, "Capture", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 544, 375, HWND_DESKTOP, NULL, hThisInstance, NULL );
    prevw = CreateWindowEx (0, szClassName, Title, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, SizeX, SizeY, hwnd, NULL, NULL, NULL );
    donc lorsque je créé les fenêtres, cela appelle le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    LRESULT CALLBACK WindowProcedure (HWND t_hwnd, UINT message, WPARAM wParam, LPARAM lParam){
    switch (message)
        {  
            case WM_CREATE:
                    boutons[0] = CreateWindow("BUTTON", "Initialiser", WS_CHILD | WS_VISIBLE, 5, 5, 75, 30, t_hwnd, (HMENU)ID_B_1, instance, NULL);
                    boutons[1] = CreateWindow("BUTTON", "Capturer", WS_CHILD | WS_VISIBLE, 5, 45, 75, 30, t_hwnd, (HMENU)ID_B_2, instance, NULL);
                    boutons[2] = CreateWindow("BUTTON", "Arrêter", WS_CHILD | WS_VISIBLE, 5, 80, 75, 30, t_hwnd, (HMENU)ID_B_3, instance, NULL);
                break;
    ...

    Si je laisse ce code j'obtiens 3 boutons sur les deux fenêtres, par contre si je met hwnd au lieu de t_hwnd dans la création des boutons, ils ne devraient apparaitre que sur la fenêtre hwnd et pourtant ils n'apparaissent pas du tout

    je ne vois pas du tout d'où ça peut venir, donc si quelqu'un peut venir en aide à un débutant ^^

    merci d'avance


    PS: je programme en C++ sous DevCpp

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Il suffit de tester quelle fenêtre vient d'être créée si tu ne veux pas créer tes boutons sur les deux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (t_hwnd == hwnd)
    {
        boutons[0] = CreateWindow("BUTTON", "Initialiser", WS_CHILD | WS_VISIBLE, 5, 5, 75, 30, t_hwnd, (HMENU)ID_B_1, instance, NULL);
        boutons[1] = CreateWindow("BUTTON", "Capturer", WS_CHILD | WS_VISIBLE, 5, 45, 75, 30, t_hwnd, (HMENU)ID_B_2, instance, NULL);
        boutons[2] = CreateWindow("BUTTON", "Arrêter", WS_CHILD | WS_VISIBLE, 5, 80, 75, 30, t_hwnd, (HMENU)ID_B_3, instance, NULL);
        break;
    }

  3. #3
    Membre habitué Avatar de jimay
    Profil pro
    Inscrit en
    Août 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 146
    Points : 178
    Points
    178
    Par défaut
    Rebonjour

    j'avais oublié que j'avais déjà essayé ce test , le problème est que rien ne s'affiche non plus...

    Lors de l'appel de la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LRESULT CALLBACK WindowProcedure (HWND t_hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    c'est bien la hwnd de la fenêtre créée qui est passé en paramètre ?

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    C'est le HWND retourné par le CreateWindow() qui a créé (ou qui est en train de créer, pour des messages comme WM_CREATE) la fenêtre correspondante.
    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.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut fenêtre et bouton avec API windows avec Dev-C++
    Bonjour,

    Je débute sur la programmation avec l'API Windows. J'ai récupéré sur internet un programme qui permet de créer une fenêtre et d'y afficher des courbes.

    Je voudrais modifier ce code pour intégrer des boutons à la fenètre et ainsi pouvoir afficher les différentes courbes que je veux tracer soit en même temps soit en choisissant la courbe que je voudrais voir. Enfin ça c'est pour vous expliquer à quoi servira mon programme.

    En fait je débute totalement avec l'API WIndows et je n'arrive pas à rajouter des boutons sur la fenètre créée.
    J'ai essayé de faire comme toi un tableau de boutons et j'ai mis la création de bouton dans la fonction LCALLBACKS après case WM_CREATE mais sa ne change rien. Mes boutons ne s'affichent pas (pourtant pas d'erreur à la compilation).
    Je voudrais aussi savoir où je dois mettre code à exécuter lorsqu'un bouton est appuyé.
    Aurais-tu des idées ou pourrais tu me donner un lien vers un tuto sur les API windows? J'ai déja regardé celui-proposé par Bob mais je trouve que les boutons sont traités assez superficiellement.

    Merci beaucoup et je te souhaite bonne chance avec ton problème.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2006
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Suisse

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 519
    Points : 1 104
    Points
    1 104
    Par défaut
    Il suffit d'utiliser un callback différent pour les deux fenêtres, je me trompe ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/12/2005, 11h37
  2. Tutorial d'initiation a la programmation avec l'API Windows
    Par mcdonald dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 16/09/2005, 17h20
  3. Stocker un imprim ecran sous bmp avec l'api windows
    Par Tofalu dans le forum Windows
    Réponses: 7
    Dernier message: 04/05/2005, 11h32
  4. Réponses: 3
    Dernier message: 09/11/2004, 10h44
  5. ouvrir plusieurs fenetre avec un lien
    Par demanghonj dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 21/10/2004, 10h35

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