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 :

Code:Blocks et GDI


Sujet :

C

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Code:Blocks et GDI
    Bonjour à tous,
    J'essaye d'utiliser la GDI de Windows afin de réaliser des dessins simples (lignes, flèches, ellipses...) avec Code:Blocks en C mais je rencontre quelques difficultés...
    Vous trouverez une copie d'écran de la console obtenue ainsi qu'un exemple de base du code C utilisé.
    http://img72.imageshack.us/img72/9793/snapconsole.jpg


    1. je souhaiterais avoir un fond blanc pour la console. Je n'ai pas trouvé de variable gérant cette couleur.
    2. y-a-t'il un moyen de supprimer le message "Process returned 0 (0x0) execution time: ... Press any key to continue" obtenu à la fin de l'exécution ?
    3. si la fenêtre contenant la console avec le tracé des segments est minimisée ou bien si une autre fenêtre du système est cliquée, les segments verts disparaissent de la console initiale, seuls les printf et le "Process returned..." sont visibles. A quoi est-ce du ?
    Peut-on avoir un tracé persistant ?

    Merci d'avance !



    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
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <windows.h>
     
    void draw(HDC hdc);
    void InitWindow(void);
     
     
    COLORREF vert;
    HWND hwnd;
    HDC hdc;
     
     
    double x[4] = {-0.034878,-0.001286,1.196524,2.421176};
    double z[4] = {-0.001899,1.418979,2.097135,1.384075};
     
     
     
    int main(void)
    {
     
    printf("TTTTTT\n");
     
    // Creation fenetre graphique
    InitWindow();
     
     
    // Trace
    draw(hdc);
     
    printf("Done\n");
     
    }
     
     
    // Fenetre graphique
    void InitWindow(void)
    {
    vert=RGB(0,255,0);
     
     
    printf("\n");
    hwnd=GetForegroundWindow();
    hdc= GetDC(hwnd);
    }
     
     
    void draw(HDC hdc)
    {
    HPEN ligne;
     
    int i;
     
     
    // Couleur pour ligne
    ligne=CreatePen(PS_SOLID,5,vert);
    SelectObject(hdc,ligne);
     
    for(i=0;i<3;i++) {
    MoveToEx(hdc,50*x[i]+150,50*z[i]+150,NULL);
    LineTo(hdc,50*x[i+1]+150,50*z[i+1]+150);
    }
    }

  2. #2
    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
    Tout d'abord, j'aimerais attirer ton attention sur le fait que pour travailler avec des graphiques, il vaut mieux créer sa propre fenêtre plutôt que d'utiliser la console. Maintenant pour te répondre :

    1. Tu peux facilement y arriver avec la commande color. Fais donc un system("color f0"); par exemple. Tape color /? dans l'invite des commandes pour afficher l'aide. D'autres solutions plus compliquées sont possiles en utilisant directement les APIs.

    2. Ce message provient du lanceur d'applications de Code::Blocks. Si tu lançais ton application directement depuis l'explorateur ou l'invite des commandes(ou n'iporte quel autre shel) par exemple, tu n'auras pas ce message.

    3. La plupart du temps (je passerai les détails), quand un dessin s'efface, il ne se redessine pas automatiquement. L'application doit le redessiner. Là, tu n'as d'autre choix que de passer en mode fenêtrée (et non plus en console) si tu veux t'en sortir simplement et noblement.

  3. #3
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Salut il est impossible de faire du tracer graphique sans obtenir un HDC sur une fenêtre.
    Il faut donc effectivement créer une fenêtre avec CreateWindow()

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    ok, merci pour vos réponses.

    Le system("color f0") me convient parfaitement.

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

Discussions similaires

  1. [Débutant] Compiler glu.h sous Code::Blocks
    Par allanp8 dans le forum OpenGL
    Réponses: 10
    Dernier message: 18/11/2007, 00h56
  2. Code blocks ajouter un .lib
    Par gl0be dans le forum Code::Blocks
    Réponses: 7
    Dernier message: 09/09/2006, 15h04
  3. [Code::Block] Traduction francaise?
    Par Zenol dans le forum Code::Blocks
    Réponses: 3
    Dernier message: 20/02/2006, 16h06
  4. [code::blocks] Completion de code
    Par anykeyh dans le forum Code::Blocks
    Réponses: 1
    Dernier message: 20/12/2005, 16h53

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