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 :

console + fenetre win32


Sujet :

Windows

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 29
    Points : 26
    Points
    26
    Par défaut console + fenetre win32
    bonjour a tous,
    voila je cherche a faire une application qui possède 2 fenetres : une console et une fenetre win32. Je sais pas comment faire. Je n'ai pas trouvé de lien relatif à ca sur Google, ni de post traitant de cela sur le forum, c'est pour ca que je me permet de vous poser la question.
    Faut-il un main() ou un winmain()? qu'elle fenetre ouvre l'autre?
    Merci de vos lumières sur le sujet. La question est surement bete et traduit mes faiblesses sur win32. Si certains d'entre-vous connaissent un bon livre pour apprendre win32 je suis preneur.
    D'avance merci.
    Fafacpp.

  2. #2
    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
    Si tu veux pouvoir te servir efficacement de la console, le mieux est de faire un programme console ouvrant une fenêtre.
    Le paramètre "hInstance" dont tu auras besoin peut s'obtenir ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HINSTANCE hInstExe = GetModuleHandle(NULL);
    Note: GetModuleHandle(NULL) retourne toujours un HINSTANCE/HMODULE (c'est la même chose depuis Win95) sur le .exe, même si on l'appelle depuis une DLL.

    Note2: Naturellement, il ne faut pas fermer la console pendant que le programme s'exécute.
    Fermer la console tuera instantanément le processus; il n'y a aucun moyen de l'empêcher, mais sous XP (et sans doute aussi 2000), il y a un moyen de "supporter" la fermeture de la console, en faisant le nettoyage avant de quitter.

    Note3: Si tu veux pouvoir entrer du texte sur la console, il te faudra sûrement un programme multithread : Il est difficile de supporter à la fois une fenêtre et la console dans le même thread, car les fenêtres nécessitent une boucle de messages.
    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.

  3. #3
    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
    L'autre solution, c'est de tout faire en fenêtré et se faire une "fausse console" pour l'affichage des messages.
    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.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 29
    Points : 26
    Points
    26
    Par défaut
    Merci pour ta reponse Medinoc, je vais essayer la derniere solution qui me parait plus "facile" à mettre en oeuvre. Mais dans ce cas il y a 2 winproc pour gerer les messages des deux fenetre non? Les fenetres communiquent entre elles par message, c'est ca? Je vais chercher des infos sur cette piste.
    Encore merci.

  5. #5
    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
    Deux classes de fenêtre, donc deux procédures de fenêtre.
    La communication peut se faire aussi bien par PostMessage() que SendMessage() (surtout que c'est dans le même thread), et pour ce genre de fenêtre, SendMessage() doit être le mieux.
    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.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 29
    Points : 26
    Points
    26
    Par défaut
    C'est ce que je pensais, je vais creuser dans ce sens. Pour l'instant je met résolu, je reposterai si besoin. Encore merci.

  7. #7
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut Re:
    Ben le plus simple selon moi c'est de créer une appli console (donc avec un main) puis de créer une fenêtre c'est tout. Ensuite on crée un thread qui va s'occuper de la boucle des messages pour la fenêtre. Il faut récupérer l'ID de ce thread pour pouvoir lui envoyer un message (comme pour le terminer par exemple) selon les commandes entrées via la console à l'aide de PostThreadMessage.

  8. #8
    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
    Attention, une fenêtre doit être créée dans le thread qui contient sa boucle de messages...
    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.

  9. #9
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Citation Envoyé par Médinoc
    Attention, une fenêtre doit être créée dans le thread qui contient sa boucle de messages...
    Ouais mais en fait c'est pas une règle absolue, le problème c'est que la récupération des messages d'un autre thread n'est pas si évidente. Je me suis mal expliqué dans le post en haut, fallait en effet créer un thread où l'on crée la fenêtre ainsi que sa boucle des messages. Ca devient très simple comme ca. Le principe que je voulais exposé c'est juste que rien n'empêche de créer une fenêtre dans une application console ...

  10. #10
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut
    c'est pas mal ça, jusqu'a present j'utilisais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    extern
    IMAGE_DOS_HEADER __ImageBase;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fenetre win32 qui se ferme instantanement
    Par mansgueg dans le forum C++
    Réponses: 10
    Dernier message: 04/03/2011, 12h16
  2. utilisation des panel dans une fenetre Win32
    Par ksoft dans le forum MFC
    Réponses: 1
    Dernier message: 02/05/2006, 21h45
  3. Fenetre mode console dans une win32
    Par had182 dans le forum Windows
    Réponses: 3
    Dernier message: 28/12/2005, 19h21
  4. Probleme de rafraichissement Fenetre Win32 ...
    Par miaw dans le forum OpenGL
    Réponses: 1
    Dernier message: 09/05/2005, 08h59
  5. Fenetre Win32
    Par nico-pyright(c) dans le forum MFC
    Réponses: 6
    Dernier message: 06/01/2004, 14h19

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