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 :

Aide pour tuto de bob sur l'API Windows.


Sujet :

Windows

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 256
    Points : 91
    Points
    91
    Par défaut Aide pour tuto de bob sur l'API Windows.
    Bonjours tout le monde,

    Je suis en train de commencer le tutoriel de bob sur l'API Windows (ici).
    J'utilise Code::Blocks comme EDI et MinGW comme compilateur.

    J'ai donc essayé de suivre le premier exemple, j'ai aucune erreur ni warning à la compilation, mais quand j'exécute l'exe, rien ne s'affiche et je suis obligé de terminer son processus avec le gestionnaire des tâches.

    Est-ce qu'il y as quelque chose que j'ai oublié ou que j'ai mal fait ?
    Voilà le code :
    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
    #include <windows.h>
    
    // définition de la procédure
    LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
    
    /*  Make the class name into a global variable  */
    char szClassName[ ] = "CodeBlocksWindowsApp";
    
    int WINAPI WinMain (HINSTANCE hThisInstance,
                         HINSTANCE hPrevInstance,
                         LPSTR lpszArgument,
                         int nCmdShow)
    {
        HWND handle;
        char lpTemplate[]="test";
        handle=CreateDialog(hThisInstance, lpTemplate, NULL, (DLGPROC)WindowProcedure);
        ShowWindow(handle, SW_SHOW);
    
        MSG message;
        while(GetMessage(&message, NULL, 0, 0)==TRUE)
        {
            TranslateMessage(&message);
            DispatchMessage(&message);
        }
        return 0;
    }
    
    // fonction appelée par DispatchMessage()
    LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        int Select;
        switch(message)
        {
        case WM_COMMAND:
            Select=LOWORD(wParam);
            switch(Select)
            {
            case IDOK:
                EndDialog(hwnd, 0);
                PostQuitMessage(0);
                return TRUE;
            case IDCANCEL:
                EndDialog(hwnd, Select);
                PostQuitMessage(0);
                return TRUE;
            }
        default:
            return FALSE;
        }
    }
    Merci.
    Pierre.

  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
    Euh... Qu'est-ce que c'est que ce mix bizarre entre une fenêtre et une boîte de
    dialogue ?
    • Pourquoi as-tu gardé le nom de classe (szClassName) si tu es en boîte de dialogue?
    • Pourquoi utilises-tu une WindowProc() castée en DLGPROC au lieu d'utiliser une vraie DialogProc() (type de retour INT_PTR) ?

    (oups: OK, j'avais mal vu, c'est le tuto qui est un peu buggé)


    Tu es sûr que tu as un DialogTemplate appelé "test" en ressources ?

    (et le nom de doit pas être lpTemplate mais lpTemplateName)
    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
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 256
    Points : 91
    Points
    91
    Par défaut
    Salut Médinoc,

    Le szClassName j'ai oublié de l'enlever, c'est ce que met Code::Blocks par défaut.

    "(oups: OK, j'avais mal vu, c'est le tuto qui est un peu buggé)"
    => tant que ça ? Si oui, connais tu un autre tuto du même genre ?

    "Tu es sûr que tu as un DialogTemplate appelé "test" en ressources ?"
    Oups, je suis sûr que non ... ça ce fait comment ?

    Merci.
    A+, Pierre.

  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
    Je ne crois pas que le tuto soit vraiment utilisable sous C::B, car il semblerait que C::B ne possède pas d'éditeur de ressources. Donc, pas d'éditeur de boîte de dialogue.
    Tu peux toujours écrire le fichier .rc ("script de ressources") toi-même, mais il faut connaitre ce langage particulier pour cela...

    Ce que je te conseille, c'est de commencer avec un tutoriel en Fenêtre (et non Boîte de Dialogue). Mais je ne sais pas trop où il y en a de bon...
    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
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 256
    Points : 91
    Points
    91
    Par défaut
    OK, merci.

    Et si on prend le problème à l'envers : connais tu un EDI qui ne soit pas une des usines à gaz Microsoft et qui ait un éditeur de recources / boites de dialogues ?

    Merci.

Discussions similaires

  1. Besoin d'aide pour bloquer un nombre sur une TextBox
    Par Torrent74 dans le forum Flash
    Réponses: 2
    Dernier message: 24/10/2007, 20h14
  2. aide pour créer une faq sur inno setup
    Par fsx999 dans le forum Langage
    Réponses: 3
    Dernier message: 12/06/2006, 20h16
  3. Réponses: 4
    Dernier message: 28/07/2005, 16h22
  4. Aide pour changer de couleur sur les primitifs GLUT
    Par romainhoarau2764 dans le forum GLUT
    Réponses: 3
    Dernier message: 19/03/2005, 13h30

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