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

MFC Discussion :

MFC CDialog - lister tous les composants presents


Sujet :

MFC

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Points : 546
    Points
    546
    Par défaut MFC CDialog - lister tous les composants presents
    'Soir,

    je cherche s'il est possible de lister "aveuglement" tous les composants présents sur un CDialog ?

    un peu comme en delphi qu'en on utilise le tableau Components et la variable ComponentCount :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure TForm1.Button1Click(Sender: TObject);
    var i : integer;
    begin
    for i := 0 to ComponentCount -1 do
      begin
      if Components[i].ClassName = 'TEdit' then TEdit(Components[i]).Text := '';
      end;
    end;
    Mon but est de repositionner proportionnelement tous les composants lors d'un resize.

    merci

  2. #2
    Membre confirmé Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Points : 488
    Points
    488
    Par défaut
    Regarde du coté des méthodes GetNextWindow(...), IsChild(...).

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Points : 546
    Points
    546
    Par défaut
    je dois donc lister tous les "windows" et voir s'ils sont enfants de ma CDialog, c'est ca ?

  4. #4
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    voir aussi CWnd::GetTopWindow

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Points : 546
    Points
    546
    Par défaut
    comment ca ?

    a quoi il va me servir le "top window" ?

    merci

  6. #6
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Points : 546
    Points
    546
    Par défaut
    ok, j'ai capté, ca donne un poiteur sur le premier enfant, puis apres, je me decale d'element en element

    ok... merci

  7. #7
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Points : 546
    Points
    546
    Par défaut
    heu... je cycle en boucle sur mes compo apparamment et si j'essai de memoriser le top window, et quitter lorsque je retombe dessus, tous les elements ne sont pas listes

  8. #8
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    ce code s'applique dans la fenetre parent des controles : la CFormView ou la CDialog
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
            char szClassName[100];
    	CWnd *pCtrl=GetWindow(GW_CHILD);
    	while(pCtrl)
    	{
    		::GetClassName(pCtrl->GetSafeHwnd(),szClassName,sizeof(szClassName));
    		if(!strcmp(szClassName,"Edit")) 
    		{
    			CString str;
    			pCtrl->GetWindowText(str),
    				TRACE("\nEdit:%s",static_cast<const char *>(str));
    		}
    		pCtrl = pCtrl->GetWindow(GW_HWNDNEXT);
    	}
    on récupére la premiere fenetre fille de la fenetre après on itére...

  9. #9
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 49
    Points : 43
    Points
    43
    Par défaut
    Salut
    Tu peux aussi utiliser EnumChildWindows
    a mon avis c'est plus simple
    a+

  10. #10
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Points : 546
    Points
    546
    Par défaut
    Ok, merci, j'avais quelque chose sensiblement differents mais mon soucis venait en fait de l'ID de mes statics textes que j'avais laissé à IDC_STATIC (-1)

    c'est cool merci.

  11. #11
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    Citation Envoyé par adel_dz
    Salut
    Tu peux aussi utiliser EnumChildWindows
    a mon avis c'est plus simple
    a+
    c'est pas si sur ,c'est une api win32 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    BOOL EnumChildWindows(          HWND hWndParent,
        WNDENUMPROC lpEnumFunc,
        LPARAM lParam
    );
    si tu enleves les fioritures du code posté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
       CWnd *pCtrl=GetWindow(GW_CHILD);
       while(pCtrl)
       {           
          pCtrl = pCtrl->GetWindow(GW_HWNDNEXT);
       }

  12. #12
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Points : 546
    Points
    546
    Par défaut
    ouep, c'est ce que j'avais gardé

    merci encore

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

Discussions similaires

  1. [Synth] Ou trouver un exemple traitant tous les composants ?
    Par dam_moreyllo dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 14/04/2006, 12h24
  2. Comment lister tous les composants d'une fiche ?
    Par tipiweb dans le forum Langage
    Réponses: 2
    Dernier message: 18/01/2006, 21h53
  3. [Swing] Mettre une police à tous les composants
    Par MrEddy dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 02/05/2004, 15h21
  4. Envoie d'un message a TOUS les composant d'une form
    Par chddv dans le forum Composants VCL
    Réponses: 7
    Dernier message: 15/09/2003, 09h47

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