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 :

Projet GUI avec console


Sujet :

C++

  1. #1
    Invité
    Invité(e)
    Par défaut Projet GUI avec console
    Bonjour,
    Je souhaite faire un projet gui mais le problème c'est qu'a chaque fois la console noir est derrière... je ne souhaite pas l'avoir et je ne comprend pas pourquoi je l'ai a chaque fois derrière après plusieurs et plusieurs test

    J'ai déja essayé Freeconsole mais le problème c'est que la console s'ouvre 1 seconde puis se ferme moi j'en veux vraiment pas

    voici mon code source :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    #include <iostream>
    #include <windows.h>
    #include <string>
     
    using namespace std;
     
    const char g_szClassName[] = "myWindowClass";
     
    // Step 4: the Window Procedure
    LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
    {
        switch(msg)
        {
            case WM_CLOSE:
                DestroyWindow(hwnd);
            break;
            case WM_DESTROY:
                PostQuitMessage(0);
            break;
            default:
                return DefWindowProc(hwnd, msg, wParam, lParam);
        }
        return 0;
    }
     
    int CALLBACK WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
    {
        WNDCLASSEX wc;
        HWND hwnd;
        MSG Msg;
     
        FreeConsole();
     
        //Step 1: Registering the Window Class
        wc.cbSize        = sizeof(WNDCLASSEX);
        wc.style         = 0;
        wc.lpfnWndProc   = WndProc;
        wc.cbClsExtra    = 0;
        wc.cbWndExtra    = 0;
        wc.hInstance     = hInstance;
        wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
        wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
        wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
        wc.lpszMenuName  = NULL;
        wc.lpszClassName = g_szClassName;
        wc.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);
     
        if(!RegisterClassEx(&wc))
        {
            MessageBox(NULL, "Window Registration Failed!", "Error!",
                MB_ICONEXCLAMATION | MB_OK);
            return 0;
        }
     
        // Step 2: Creating the Window
        hwnd = CreateWindowEx(
            WS_EX_CLIENTEDGE,
            g_szClassName,
            "The title of my window",
            WS_OVERLAPPEDWINDOW,
            CW_USEDEFAULT, CW_USEDEFAULT, 240, 120,
            NULL, NULL, hInstance, NULL);
     
        if(hwnd == NULL)
        {
            MessageBox(NULL, "Window Creation Failed!", "Error!",
                MB_ICONEXCLAMATION | MB_OK);
            return 0;
        }
     
        ShowWindow(hwnd, nCmdShow);
        UpdateWindow(hwnd);
     
        // Step 3: The Message Loop
        while(GetMessage(&Msg, NULL, 0, 0) > 0)
        {
            TranslateMessage(&Msg);
            DispatchMessage(&Msg);
        }
        return Msg.wParam;
     
        LPCTSTR lpFileName = "C:\\Users\\Yohann\\Desktop\\hk\\bin\\Debug\\hk.dll";
        HMODULE hModule;
        LPCSTR lpProcName = "SomeFunction";
        const LPCSTR sometext = "Text for the box";
        FARPROC SomeFunction;
        HANDLE hMutex;
     
        // Prototypes des fonctions GetProcAdress
        HANDLE (WINAPI *pSomeFunction)(const LPCSTR);
     
        hMutex = CreateMutex(NULL,FALSE,"Local\\{A1E7934A-E701-192a-8FCB-65C9268EE927}");
     
        Sleep(1);
     
        if (GetLastError() == ERROR_ALREADY_EXISTS)
        {
            ExitProcess(EXIT_FAILURE);
        }
     
        hModule = LoadLibrary(lpFileName);
     
        if (hModule != NULL)
        {
            pSomeFunction = (HANDLE(WINAPI *)(const LPCSTR))GetProcAddress(hModule,lpProcName);
     
            if(pSomeFunction != NULL)
            {
     
                if (FreeLibrary(hModule) != 0)
                {
                }
            }
        }
     
        CloseHandle(hMutex);
     
        return 1;
    }
     
     
    LRESULT CALLBACK MainWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
        switch (uMsg)
        {
            case WM_CREATE:
     
                return 0;
     
            case WM_DESTROY:
                PostQuitMessage(0);
                return 0;
     
            default:
                return DefWindowProc(hwnd, uMsg, wParam, lParam);
        }
    }


    edit : j'ai bien pris gui project par contre j'hésitais entre frame et dialog j'ai pris frame.
    Merci d'avance.
    Dernière modification par Invité ; 12/01/2014 à 01h11.

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 211
    Points
    23 211
    Par défaut
    Windows

    Ce lien de la FAQ devrait t'aider

    EDIT : j'avais pas vu ton édit.
    Normalement, freeconsole n'est pas utile.
    Juste en créant un projet win32 sans console, on devrait avoir un squelette qui n'affiche pas de console.

    Regarde dans les paramètres d'exécutions de ton IDE.

  3. #3
    Membre émérite
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Points : 2 274
    Points
    2 274
    Par défaut
    Salut,

    C'est un comportement normal après un "build" en mode "debug"... il faut qu'il bascule en mode "release"...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Merci a vous deux , il fallait bien passer en mode release
    Dernière modification par germinolegrand ; 13/01/2014 à 01h34. Motif: liens non pérennes

  5. #5
    Membre expert

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2010
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2010
    Messages : 738
    Points : 3 892
    Points
    3 892
    Par défaut
    A noter que sur Code::Blocks, il est possible de désactiver la console d'une Build Target (Debug et Release étant les deux par défaut dans un projet) en allant dans Project->Properties onglet Build targets et changer le Type de Console application à GUI application .

  6. #6
    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 518
    Points
    41 518
    Par défaut
    Citation Envoyé par minnesota Voir le message
    Salut,

    C'est un comportement normal après un "build" en mode "debug"... il faut qu'il bascule en mode "release"...
    Huh? C'est nouveau, ça non?

    ...Ou bien c'est Visual qui oublie de régler /SUBSYSTEM dans la version Debug des propriétés d'un projet? Je crois déjà avoir constaté ce problème sur certaines versions et types de projet...
    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.

  7. #7
    Membre expert

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2010
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2010
    Messages : 738
    Points : 3 892
    Points
    3 892
    Par défaut
    Il me semble au vu du chemin de son exécutable que notre ami est sous Code::Blocks

  8. #8
    Membre émérite
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Points : 2 274
    Points
    2 274
    Par défaut
    C'est bien du visual sur du windows 8 si je ne m'abuse...

    @Médinoc
    Nouveau, je saurais pas te dire depuis quand ça l'est ou ça doit l'être par défaut... En plus, je développe le corps exclusivement en mode console... donc forcément ça ne me saute pas aux yeux... et quand je passe à l'interface graphique, si je le fais, je suis pratiquement en "release"...

    j'ai dû utiliser au moins 3 ou 4 EDI différent, dont du RAD, et je sais que les "quelques peu" de fois où j'avais besoin de ma "console" de "débogage/traçage" en background de mon "gui" et que je ne l'avais pas en mode debug, il fallait que je passe par les options de projet, ou pire, que je lance une console depuis l'appli ou pire encore que j'insère un contrôle d'édition dans ma "form" (ou une deuxième), mais là je le faisais aussi et surtout pour l'affichage de chaines Unicode... Donc même si c'est pas normalisé (à voire en tout cas) j'ai l'impression que ça tend vers une certaine uniformité... mais depuis quand ? la question reste entière...

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

Discussions similaires

  1. Comment intercepter une touche clavier avec un projet GUI
    Par guitz2fr dans le forum Débuter
    Réponses: 12
    Dernier message: 24/06/2008, 21h50
  2. comment structurer une modél. UML - projet J2EE avec pattern
    Par RocketArena dans le forum Architecture
    Réponses: 18
    Dernier message: 20/07/2007, 19h20
  3. Importer un projet VC++ avec Dev c++
    Par jphi5 dans le forum MFC
    Réponses: 2
    Dernier message: 02/11/2005, 17h41
  4. [NetBeans] [4.1] GUI avec netbean
    Par e1lauren dans le forum NetBeans
    Réponses: 1
    Dernier message: 30/08/2005, 13h17
  5. projet .war avec Eclipse
    Par CapToMatteo dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 20/04/2004, 14h38

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