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 :

Premiere procedure en C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 309
    Par défaut Premiere procedure en C
    Bonjour à tous

    Je viens de creer mes premiers boutons dans ma premiere fenetre, et deja la joie m'a extorqué un petit cri de bonheur, qui s'est subreptissement echappé de ma bouche, sans crier gare

    Grace au super TUTO de MELEM, j'ai compris noir de choses

    Seulement voila...le bonheur viens de s'arretter a la premiere fonction que je voulais creer

    J'ai voulu essayer d'exporter la creation de fenetre et le BEEP dans chacun une procedure pour voir comment manupuler les procedures

    Et j'obtiens quand meme un exe, mais je n'arrive pas a me débarasser du message d'erreur avec PELLES C

    Mais le plus fou c'est que avec VC6++ j'ai pas d'erreur
    Quelqu'un sait pourquoi les deux compilateurs ne reagissent pas pareil ??

    Building D:\Reception\FenetreEtBouton\output\Fenetre.obj.
    D:\Reception\FenetreEtBouton\Fenetre.c(82): warning #2027: Missing prototype for 'Bip'.
    Building D:\Reception\FenetreEtBouton\FenetreEtBouton.exe.
    Done.
    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
    #include <windows.h>
     
    LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        static HINSTANCE hInstance;
     
        switch (message)
        {
        case WM_CREATE:
     
            hInstance = ((LPCREATESTRUCT)lParam)->hInstance;
            CreateWindow("BUTTON", "OK", WS_CHILD | WS_VISIBLE, 0, 0, 100,24, hwnd, (HMENU)1, hInstance, NULL);
     
            break;
     
        case WM_COMMAND:
            /***************************************************\
            * LOWORD(wParam) = ID du contrôle ou du menu        *
            * HIWORD(wParam) = Raison du message (notification) *
            \***************************************************/
     
            switch(LOWORD(wParam))
            {
     
            case 1:
     
                switch(HIWORD(wParam))
                {
     
                case BN_CLICKED:
                    Beep(1000, 100);
                    break;
     
                default:
                    break;
                }
     
                break;
     
            case 2:
     
                switch(HIWORD(wParam))
                {
     
                case BN_CLICKED:
     
                    Beep(100, 100);
                    break;
     
                default:
     
                    break;
     
                }
     
                break; 
     
            default:
     
                break;
     
            }
     
            break; /* case WM_COMMAND */
     
        case WM_DESTROY:
     
            PostQuitMessage(0);
            break;
     
        default:
     
            return DefWindowProc(hwnd, message, wParam, lParam);
     
        }
     
        return 0;
     
    }
     
    void Bip(/*paramètres ou non*/)
    {
     Beep(100, 100);
    }
     
    void Principal(HINSTANCE hInstance, int nCmdShow)
    {
     
        HWND hWnd;
     
        hWnd = CreateWindow("Classe 1", "Notre première fenêtre", WS_OVERLAPPEDWINDOW,100, 100, 600, 300, NULL,NULL,hInstance,NULL);
        CreateWindow("BUTTON", "OK", WS_CHILD | WS_VISIBLE, 100,100, 100,24, hWnd, (HMENU)1, hInstance, NULL);
        CreateWindow("BUTTON", "OK", WS_CHILD | WS_VISIBLE, 200,200, 100,24, hWnd, (HMENU)2, hInstance, NULL);
        ShowWindow(hWnd, nCmdShow);
        Bip();
     
    }
     
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
    {
     
        MSG msg;
     
        WNDCLASS wc;
        wc.cbClsExtra     = 0;
        wc.cbWndExtra     = 0;
        wc.hbrBackground  = (HBRUSH)(COLOR_WINDOW + 1);
        wc.hCursor        = LoadCursor(NULL, IDC_ARROW);
        wc.hIcon          = LoadIcon(NULL, IDI_APPLICATION);
        wc.hInstance      = hInstance;
        wc.lpfnWndProc    = WndProc;
        wc.lpszClassName  = "Classe 1";
        wc.lpszMenuName   = NULL;
        wc.style          = CS_HREDRAW | CS_VREDRAW;
     
        RegisterClass(&wc);
     
        Principal(hInstance, nCmdShow);
     
        while (GetMessage(&msg, NULL, 0, 0))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
     
        return (int)msg.wParam;
    }
    Merci de votre aide

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 484
    Par défaut
    Bonjour,

    Citation Envoyé par andrebernard Voir le message
    Et j'obtiens quand meme un exe, mais je n'arrive pas a me débarasser du message d'erreur avec PELLES C

    Mais le plus fou c'est que avec VC6++ j'ai pas d'erreur
    Quelqu'un sait pourquoi les deux compilateurs ne reagissent pas pareil ??
    Oui, c'est parce que l'un est configuré par défaut pour être plus strict que l'autre.

    Un prototype de fonction, c'est le nom de la fonction avec son type et ses arguments, mais sans le code qui lui est associé. Cela permet au compilateur de savoir comment les appeler même si elles ne sont pas encore disponibles. Et typiquement, ce sont ces prototypes qui, entre autres choses, vont dans les fameux fichiers « *.h ».

    En l'occurrence, tu reçois un message d'avertissement parce que tu utilises ta fonction « bip() » alors qu'elle n'est pas définie, ni déclarée. Ton compilo ne la connaît pas encore. Bon, elle n'est certes pas bien loin (quelques lignes plus bas dans le même fichier) mais si tu devais compiler ton programme en une seule passe, cela poserait problème quand même.

    Essaie de copier-coller la ligne « void Bip(/*paramètres ou non*/) » en haut de ton fichier juste après les « #include ».

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 309
    Par défaut
    Bonjour OBSIDIAN j'suis super content de te lire

    C'est un truc de "guedin", tu as raison, une fois ça marche une fois ça marche pas....
    Il doit y avoir un sens dans les "Rebuid all", "rebuild" , "Compile" etc ...

    D'accord, donc un avertissement n'est pas grave

    Bon j'ai essayé comme t'as dit, j'ai mis
    void Bip(/*paramètres ou non*/) ;
    avant le
    #include <windows.h>
    et meme apres et c'est pareil

    Alors ce qui est encore plus fou...c'est que si je fais "Rebuild" dans PELLES C, j'ai l'erreur, et si je fais un "Build" j'ai pas d'erreur
    Mais dans les deux cas j'obtiens l'EXE

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 484
    Par défaut
    Citation Envoyé par andrebernard Voir le message
    Il doit y avoir un sens dans les "Rebuid all", "rebuild" , "Compile" etc ...
    La différence entre toutes ces fonctions est que certaines ne vont compiler que ce qui est nécessaire, et d'autres vont tout effacer et reconstruire depuis le départ. Donc, si tu avais des choses déjà compilées en suspens et que les dépendances étaient mal configurées, il est possible que ton compilateur n'ait pas pris tout de suite en compte les modifs que tu as faites.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 309
    Par défaut
    D'accord, j'ai compris pour les Buid, Rebuild...merci

    Pour essayer de comprendre je suis retourné sur VC6++ et la tout est nickel

    Je suis meme arrivé a deplacer la boucle d'attente d'evenement
    Et tout ça sans erreur...mais rien a faire avec PELLES C
    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
    void Bip(/*paramètres ou non*/);
    #include <windows.h>
     
    LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        static HINSTANCE hInstance;
     
        switch (message)
        {
        case WM_CREATE:
     
            hInstance = ((LPCREATESTRUCT)lParam)->hInstance;
            CreateWindow("BUTTON", "OK", WS_CHILD | WS_VISIBLE, 0, 0, 100,24, hwnd, (HMENU)1, hInstance, NULL);
     
            break;
     
        case WM_COMMAND:
            /***************************************************\
            * LOWORD(wParam) = ID du contrôle ou du menu        *
            * HIWORD(wParam) = Raison du message (notification) *
            \***************************************************/
     
            switch(LOWORD(wParam))
            {
     
            case 1:
     
                switch(HIWORD(wParam))
                {
     
                case BN_CLICKED:
                    Beep(1000, 100);
                    break;
     
                default:
                    break;
                }
     
                break;
     
            case 2:
     
                switch(HIWORD(wParam))
                {
     
                case BN_CLICKED:
     
                    Beep(100, 100);
                    break;
     
                default:
     
                    break;
     
                }
     
                break; 
     
            default:
     
                break;
     
            }
     
            break; /* case WM_COMMAND */
     
        case WM_DESTROY:
     
            PostQuitMessage(0);
            break;
     
        default:
     
            return DefWindowProc(hwnd, message, wParam, lParam);
     
        }
     
        return 0;
     
    }
     
    void Bip(/*paramètres ou non*/)
    {
     Beep(100, 100);
    }
     
    int Principal(HINSTANCE hInstance, int nCmdShow)
    {
     
        HWND hWnd;
    	MSG msg;
     
        hWnd = CreateWindow("Classe 1", "Notre première fenêtre", WS_OVERLAPPEDWINDOW,100, 100, 600, 300, NULL,NULL,hInstance,NULL);
        CreateWindow("BUTTON", "OK", WS_CHILD | WS_VISIBLE, 100,100, 100,24, hWnd, (HMENU)1, hInstance, NULL);
        CreateWindow("BUTTON", "OK", WS_CHILD | WS_VISIBLE, 200,200, 100,24, hWnd, (HMENU)2, hInstance, NULL);
        ShowWindow(hWnd, nCmdShow);
    	Bip();
     
    	while (GetMessage(&msg, NULL, 0, 0))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
     
    	return (int)msg.wParam;
     
    }
     
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
    {
     
     
        WNDCLASS wc;
        wc.cbClsExtra     = 0;
        wc.cbWndExtra     = 0;
        wc.hbrBackground  = (HBRUSH)(COLOR_WINDOW + 1);
        wc.hCursor        = LoadCursor(NULL, IDC_ARROW);
        wc.hIcon          = LoadIcon(NULL, IDI_APPLICATION);
        wc.hInstance      = hInstance;
        wc.lpfnWndProc    = WndProc;
        wc.lpszClassName  = "Classe 1";
        wc.lpszMenuName   = NULL;
        wc.style          = CS_HREDRAW | CS_VREDRAW;
     
        RegisterClass(&wc);
     
        return Principal(hInstance, nCmdShow);    
     
    }

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 484
    Par défaut
    Citation Envoyé par andrebernard Voir le message
    Je suis meme arrivé a deplacer la boucle d'attente d'evenement. Et tout ça sans erreur...mais rien a faire avec PELLES C
    Comment ça, « rien à faire » ? Qu'est-ce que tu obtiens ?

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

Discussions similaires

  1. procedure avec seulement premiere lettre
    Par wfirefox dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 16/07/2007, 16h00
  2. Apropos des Transactions au sein d'un Stored Procedure
    Par Sarbacane dans le forum Connexion aux bases de données
    Réponses: 6
    Dernier message: 16/11/2004, 08h21
  3. Declaration Type ds une procedure
    Par Qwazerty dans le forum Langage
    Réponses: 6
    Dernier message: 28/08/2002, 09h09
  4. [TP]code asm dans une procedure
    Par M.Dlb dans le forum Turbo Pascal
    Réponses: 3
    Dernier message: 17/08/2002, 20h43
  5. Reprendre une procedure dans une autre ?
    Par Poisson Rouge dans le forum Langage
    Réponses: 3
    Dernier message: 17/07/2002, 22h51

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