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 :

équivalent d'un TEdit (Delphi) en C ?


Sujet :

C

  1. #1
    Invité
    Invité(e)
    Par défaut équivalent d'un TEdit (Delphi) en C ?
    bonjour,

    j'aimerais savoir quel est l'équivalent d'un TEdit (Delphi) en C ? Soit une courte zone de texte en blanc : du genre zone d'intitulé de topic sur les forums (avant de poster)

    une courte zone de texte ?

    comment faire en sorte que ce qu'on tape soit stocké dynamiquement dans une variable ?

    c à d : au fur et à mesure qu'on tape au clavier : ça change sans avoir à presser ENTREE ?

  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 518
    Points
    41 518
    Par défaut
    Le C standard ne connais pas le concept d'interface graphique, il ne connait que le texte brut.

    Tu dois préciser sur quelle plate-forme tu travailles (linux, Windows, gcc, Visual Studio, Borland), et on pourra te dire quelles sont les bibliothèques graphiques compatibles (sachant que certaines plate-formes, comme Windows, ont une bibliothèque graphique intégrée).
    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
    Invité
    Invité(e)
    Par défaut
    c'est sur windows xp

    et je compile avec Visual-MinGW / MinGW

  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 518
    Points
    41 518
    Par défaut
    Eh bien dans ce cas, tu peux utiliser directement en C l'api Windows.

    Dans une fenêtre, tu crées une fenêtre fille de classe "EDIT"...
    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
    Invité
    Invité(e)
    Par défaut
    ok c'est compris merci

    et comment faire en sorte que ce qu'on tape soit stocké dynamiquement dans une variable ?

    je m'explique avec un exemple tout bête : dans l'édition il est affiché par défaut le nombre 0

    le résultat affiché ailleurs est la somme du chiffre rentré et de 5

    donc je récapitule : par défaut la somme est '5', si je tape '25' dans la zone de saisie il affiche 30 direct sans que j'aie à taper entrée

    ça n'est pas trop compliqué à réaliser ?
    Dernière modification par Invité ; 21/08/2009 à 15h33.

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    Par défaut
    donc je récapitule : par défaut la somme est '5', si je tape '25' dans la zone de saisie il affiche 30 direct sans que j'aie à taper entrée
    Pour taper 25 je vais d'abord taper 2 ce qui va m'afficher 7 puis apres je vais tapper 5 ce qui va m'afficher 12.
    A moins que tu ne saisisses toujours deux chiffres ton systeme ne peut fonctionner.


    Pour ton contrôle EDIT tu peux le sous classer et traiter ses messages WM_CHAR par exemple.

  7. #7
    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
    Lucien63 semble ne pas avoir compris que le "5" vient d'ailleurs et que l'affichage est réalisé encore ailleurs.

    Tu peux tout-à-fait traiter les changements de l'EditBox à la volée: L'EditBox t'envoie un message WM_COMMAND avec son ID dans LOWORD(wParam), et la constante EN_CHANGE dans HIWORD(wParam).
    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.

  8. #8
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    Par défaut
    Lucien63 semble ne pas avoir compris que le "5" vient d'ailleurs et que l'affichage est réalisé encore ailleurs.
    Effectivement, j'ai du lire un peu vite !

  9. #9
    Invité
    Invité(e)
    Par défaut
    Afin de ne pas créer de quiproquos voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    HWND hEdit;
             hEdit=CreateWindow(
                            "EDIT",
                            "0",
                             WS_VISIBLE|WS_CHILD|WS_BORDER,
                             10,150,55,20,fenetrePrincipale,NULL,instance,NULL);
     
        return hEdit;
    Par défaut il met '0' : on peut rentrer n'importe quel chiffre

    Je veux en fait qu'il attrape le 0 qui est un int

    et qu'il le stocke dans une variable.

    c'est comme vous m'avez dit ?

  10. #10
    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
    Gérer le message WM_COMMAND(idEdit, EN_CHANGE) permet de détecter que l'editbox est modifiée, mais pour obtenir la valeur, le mieux est d'utiliser la fonction GetDlgItemInt().

    PS: Tu dois donner un ID à ton EditBox. Généralement, on commence les IDs vers 1000. L'id est passé à CreateWindow, casté en (HMENU).
    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.

  11. #11
    Invité
    Invité(e)
    Par défaut
    pouvez-vous me donner la syntaxe précise de cette fonction s'il vous plaît ?

  12. #12
    Invité
    Invité(e)
    Par défaut
    Je n'ai peut-être pas posé la bonne question : en fait je voulais savoir si cette fonction avait des paramètres ?

    En vous souhaitant un bon week-end et de bonnes vacances pour ceux qui y sont encore

  13. #13
    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
    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.

  14. #14
    Invité
    Invité(e)
    Par défaut
    bonjour,

    j'ai finalement décidé de compiler en C++ : cela change-t-il quelque chose au niveaux des fonctions ?

    C'est la même chose ?

  15. #15
    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
    Il n'y a rien à changer, à part que tu peux en plus utiliser des fonctionnalités spécifiques C++.

  16. #16
    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
    Et tu ne peux pas faire certains trucs spécifiques au C.

    Ce code par exemple, ne compile pas en C++.
    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.

  17. #17
    Invité
    Invité(e)
    Par défaut
    bonjour

    j'ai commencé à regarger la fonction GetDlgItemInt()

    en faisant #define et dans les variables globales, je déclare :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #define ID_EDITBOX_1        1200
    (...) 
    UINT getb;
    puis je l'introduit au sein d'une fonction qui contient un switch :
    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
     
    VOID NotificationControle(HWND fenetrePrincipale,UINT message, WPARAM wParam, LPARAM lParam)
    {
        UINT iId=LOWORD(wParam);
        HWND hCtl=(HWND)lParam;	
    switch(iId)
        {
            case ID_PUSHBUTTON_1:
                MessageBox(fenetrePrincipale,"Vous avez appuyé sur le premier bouton","",MB_OK);
                break;
            case ID_PUSHBUTTON_2:
                exit(0);
                break;        
            case ID_CHECKBOX_1:        
                AfficheActionCheckBox(iId-ID_CHECKBOX_1,hCtl,fenetrePrincipale);
                break;
            case ID_EDITBOX_1:
                getb=GetDlgItemInt(fenetrePrincipale, (HMENU)ID_EDITBOX_1, NULL, FALSE);						
    	    MessageBox(NULL, getb, getb, MB_OK);
                break;
        }
    }
    évidemment quand je lance l'application et que je clique sur l'editbox pour remplir le champ, une fenetre apparaît : mais avec marqué "error" au lieu de l'entier retourné par getb
    Dernière modification par Invité ; 31/08/2009 à 17h06.

  18. #18
    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
    Es-tu sûr de ne pas avoir une erreur de compilation ou un truc du genre?
    Car tu cherches à passer un entier à une fonction censée afficher des chaînes de caractères...

    Utilise la fonction sprintf(), ou une fonction assimilée, pour convertir ton nombre en chaîne de caractères et l'afficher.
    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.

  19. #19
    Invité
    Invité(e)
    Par défaut
    je ne comprend pas : GetDlgItemInt() n'est-elle pas censée retourner un valeur int d'un entier ?

    est-ce que ce que je tape au clavier dans l'editbox est stocké dynamiquement quelque part ? ou bien faut-il créer un bouton en + qui dit de stocker la valeur entrée ?

  20. #20
    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 gizmo27 Voir le message
    je ne comprend pas : GetDlgItemInt() n'est-elle pas censée retourner un valeur int d'un entier ?
    Ben si. Mais MessageBox() n'est pas censée en accepter un en paramètre (à part pour ses flags).
    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.

Discussions similaires

  1. Équivalent du "with" de delphi en C#
    Par jimbolelephan dans le forum C#
    Réponses: 4
    Dernier message: 29/06/2008, 10h26
  2. Équivalent de UserControl sous Delphi Win32
    Par Erakis dans le forum Composants VCL
    Réponses: 7
    Dernier message: 13/01/2008, 19h41
  3. [C#] Existe-t-il un équivalent au StringGrid de Delphi ?
    Par KibitO dans le forum Windows Forms
    Réponses: 8
    Dernier message: 04/05/2006, 11h08
  4. Réponses: 3
    Dernier message: 18/12/2005, 18h49
  5. Quel est l'équivalent de UBound de VB en delphi
    Par Isa31 dans le forum Langage
    Réponses: 2
    Dernier message: 03/02/2005, 14h37

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