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 :

sauver/restorer l'état des composants d'une interface


Sujet :

MFC

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 23
    Points : 10
    Points
    10
    Par défaut sauver/restorer l'état des composants d'une interface
    Bonjour à tous,

    j'aurai voulu savoir s'il était facilement possible de sauvegarder l'état des composants d'une inteface (edit, ...) afin de recharger les valeurs en l'état après une fermeture de l'application ??

  2. #2
    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,
    c'est quoi l'etat pour toi ? le contenu des composants ?
    il suffit de serialiser le contenu .
    serialisation voir faq .

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    en fait je voudrais sauvegarder la valeur d'un CEdit, la position d'un CWButton, la selection d'un combobox, ...
    puis recharger la sauvegarde pr que l'utilisateur n'est pas tout à ce refaire après chaque relance du logiciel.

  4. #4
    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
    tu as un exemple de sauvegarde des controles dans le projet associé a mon tuto :
    http://farscape.developpez.com/Samples/SampleSDI.zip

  5. #5
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    slt

    en fait ce que je viudrais, c avoir une boucle qui scrute tous les composants de ma CDialog et pour chaque type de composant faire une action.
    exemple : si je détecte que le composant est un CEdit, je choisis te sauver la valeur saisie ou si je détecte que le composant est un CWButton je sauve son état etc ...
    en fait, il faudrait
    - lister les composants de la CDialog
    - détecter son type (CEdit, ...)
    - sauvegarder ce que l'on veut selon le cas (valeur texte) et l'ID (pour faire la manip inverse)

    ce que je ne sais pas trop , comment lister tous les composants et connaitre leur type ?

  6. #6
    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,
    voila un exemple de parcours des contrôles d'une dialogue:
    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
     
    void CTestDlgDlg::MettreStaticEnGras()
    {
    	char szClassName[100];
    	bool bFirst=true;
     
    	LOGFONT LogFont;
    	if(!/*CFont */m_NewFont.m_hObject)
    	{
    		GetFont()->GetLogFont(&LogFont);
     
    		LogFont.lfWeight = FW_BOLD; 
    		LogFont.lfHeight = -24; 
    		m_NewFont.CreateFontIndirect(&LogFont); 
    	}
     
    	CWnd *pCtrl=GetWindow(GW_CHILD);
    	while(pCtrl)
    	{
    		if(!bFirst) pCtrl = pCtrl->GetWindow(GW_HWNDNEXT);
    		bFirst=false;
    		if(pCtrl)
    		{
    			::GetClassName(pCtrl->GetSafeHwnd(),szClassName,sizeof(szClassName));
    			if(!strcmp(szClassName,"Static"))
    			{
    				pCtrl->SetFont(&m_NewFont,FALSE);      
    				pCtrl->Invalidate();
    			}
    		}
    	}
     
    }
    cette fonction régle tous les statics de la boite de dialogue en gras.
    GetClassName permet de recuperer la classe du contrôle .
    edit pour un CEdit etc ...

  7. #7
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    meri bien à toi
    je vais essayer de mettre au point !
    a+

  8. #8
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    slt

    j'ai suvi ton exemple mais en voulant aller un peu plus loin, je bloque sur un truc
    en fait j'aurai voulu avoir en paramètre la possibilité de choisir sur quelle CDialog de mon projet je scrute les composants.
    Peux-tu m'indiquer la manip ? (ça doit être de faire pointer pCtrl sur la CDialog voulue)

  9. #9
    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,
    et bien il suffit sur le parcours de depart de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CWnd *pCtrl=pDlgSrc->GetWindow(GW_CHILD);
    ou pDlgSrc est le pointeur sur la dialogue a parcourir....


  10. #10
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    c bien ce que j'avais essayé !
    mais le p'tit soucis ce que je ne vois que les composants qui ont une variable associé et pas les autres
    est-ce normal ? ou y a t'il une autre subtilié ?

  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
    quel types de controles sont ignorés ?

  12. #12
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    les controles sur lesquels je n'ai pas créé de variables : CEdit, CWButton
    mais que j'accède via leurs ID

  13. #13
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    en réalité pr le CEdit c OK et pr le CWButton c plutot AfxOleControl42 que je dois recherché comme nom de class
    merci encore pr ton aide précieuse !

Discussions similaires

  1. [Spark] Utilité des états de composants dans une logique MVC
    Par Madfrix dans le forum Flex
    Réponses: 3
    Dernier message: 21/09/2011, 11h35
  2. Liste des composants d'une applet
    Par SheikYerbouti dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 24/12/2006, 01h14
  3. Adaptation dynamique des composants d'une JFrame
    Par Invité dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 06/12/2006, 23h23
  4. Réponses: 10
    Dernier message: 15/10/2006, 18h23
  5. Agencement des composants d'une frame
    Par new_wave dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 20/03/2006, 10h56

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