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 :

Enregistrement position ToolBar


Sujet :

MFC

  1. #1
    Membre averti
    Homme Profil pro
    Informatique industrielle
    Inscrit en
    Novembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Informatique industrielle

    Informations forums :
    Inscription : Novembre 2007
    Messages : 41
    Par défaut Enregistrement position ToolBar
    Bonjour tout le monde

    Grâce à la faq de farscape j'arrive à enregistrer la position des mes toolbars.

    Mais j'ai un petit problème si j'ouvre et que je ferme plusieurs fois mon application au bout d'un moment j'ai une erreur et je dois éffacer tous les registres, en faisant regedit, pour pouvoir lancer mon application.

    A votre avis que dois je faire?
    Et pourquoi est ce qu'ai cette erreur?

    Moi je pensais rajouter une commande dans mon code qui permet d'éffacer les registres avant d'enregistrer la position des toolbars. Vous en pensez quoi de cette idée? Si elle est bonne qu'elle est l'instruction qui permet d'éffacer les registres?

  2. #2
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    Salut,

    J'ai pas ce genre de soucis, ça marche très bien dans mes applis.

    Je fais un LoadBarState() dans OnCreate() après avoir tout initialisé et un SaveBarState() dans le OnClose()

    et aucune erreur ...

    précise l'erreur que tu rencontres

    @+

  3. #3
    Membre averti
    Homme Profil pro
    Informatique industrielle
    Inscrit en
    Novembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Informatique industrielle

    Informations forums :
    Inscription : Novembre 2007
    Messages : 41
    Par défaut
    Voilà ce qu'il me dit :

    Debug assertion failed
    Il me dis que ça viens du fichier dockstat.cpp
    et que je dois me référer à la doc.

    Sinon je suis sous Visual Studio 2005 tu pense que ça peut venir de ça?

  4. #4
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    ben justement moi aussi sous VS2005 ...
    Il faut que tu analyses ton "assertion fail" pour bien connaitre la cause.
    ou alors poste les infos ici ...

    @+

  5. #5
    Membre averti
    Homme Profil pro
    Informatique industrielle
    Inscrit en
    Novembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Informatique industrielle

    Informations forums :
    Inscription : Novembre 2007
    Messages : 41
    Par défaut
    Ok je vais bien chercher et si je trouve pas je reviendrai demandé de l'aide ici

  6. #6
    Membre averti
    Homme Profil pro
    Informatique industrielle
    Inscrit en
    Novembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Informatique industrielle

    Informations forums :
    Inscription : Novembre 2007
    Messages : 41
    Par défaut
    Bon bin j'ai essaillé de trouver l'erreur mais je ne l'ai pas trouvé.

    J'ai toujours une erreur.
    Si vous voulez l'enregistrement de la position des toolbars marche trois ou quatre fois puis il plante.

    Le code que j'ai utilisé pour enregistré et

    LoadBarState("Settings\\Toolbar");

    et pour l'enregistrement


    this->SaveBarState("Settings\\Toolbar");

    Quelqu'un a une idée?

  7. #7
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    postes les infos sur l'assertion (y compris le code source)

    @+

  8. #8
    Membre averti
    Homme Profil pro
    Informatique industrielle
    Inscrit en
    Novembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Informatique industrielle

    Informations forums :
    Inscription : Novembre 2007
    Messages : 41
    Par défaut
    désolé de rép que maintenant mais je n'avais pas le programme sous les yeux.

    Donc voilà mon assertion :

    Debug Assertion Failed!
    Program:
    File : dockstat.cpp

    For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts
    Sinon voila mon code.

    Je récupère la position des barres d'outils :

    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
    65
    66
    67
    int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
    		return -1;
     
    	// ** Création Toolbar Fichier
    	if (!m_wndToolBarFichier.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
    		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
    		!m_wndToolBarFichier.LoadToolBar(IDR_TOOLBAR_FICHIER))
    	{
    		TRACE0("Impossible de créer toolbar\n");
    		return -1;      // échec de la création
    	}
    	m_wndToolBarFichier.SetDlgCtrlID(IDR_TOOLBAR_FICHIER);
    	m_wndToolBarFichier.SetWindowText(_T("Fichier"));    
     
    	// ** Création Toolbar Affichage
    	if (!m_wndToolBarAffichage.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
    		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
    		!m_wndToolBarAffichage.LoadToolBar(IDR_TOOLBAR_AFFICHAGE))
    	{
    		TRACE0("Impossible de créer toolbar\n");
    		return -1;      // échec de la création
    	}
    	m_wndToolBarAffichage.SetDlgCtrlID(IDR_TOOLBAR_AFFICHAGE);
            m_wndToolBarAffichage.SetWindowText(_T("Affichage")); 
     
    	// ** Calcul position de TOOLBAR_AFFICHAGE
     
    	m_wndToolBarFichier.EnableDocking(CBRS_ALIGN_ANY);
            m_wndToolBarAffichage.EnableDocking(CBRS_ALIGN_ANY);
     
      EnableDocking(CBRS_ALIGN_ANY);
      DockControlBar(&m_wndToolBarFichier);
     
      CRect RectOne,RectTwo;
      RecalcLayout();
     
      m_wndToolBarFichier.GetWindowRect(&RectOne);
     
      m_wndToolBarAffichage.GetWindowRect(&RectTwo);
      int nWidth=RectTwo.Width();
      int nHeight=RectTwo.Height();
     
    	// Calcul emplacement de la TOOLBAR_AFFICHAGE a droite de TOOLBAR_FICHIER
      RectTwo.left=RectOne.right;
      RectTwo.right=RectTwo.left+nWidth;
      RectTwo.top=RectOne.top;
      RectTwo.bottom=RectTwo.top+nHeight;
     
    	// Placement final
      DockControlBar(&m_wndToolBarAffichage,(UINT)0,RectTwo);
      RecalcLayout();
     
    	if (!m_wndStatusBar.Create(this) ||
    		!m_wndStatusBar.SetIndicators(indicators,
    		  sizeof(indicators)/sizeof(UINT)))
    	{
    		TRACE0("Impossible de créer la barre d'état\n");
    		return -1;      // échec de la création
    	}
     
    	// ** Récupérer position toolbar
     
    	LoadBarState("Settings\\Toolbar");
     
    	return 0;
    J'ai en tout 5 barre d'outils.

    Mon code pour enregistrer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void CMainFrame::OnClose()
    {
    	// ** Sauvegarder Position Toolbar
     
    	this->SaveBarState("Settings\\Toolbar");
    	CFrameWnd::OnClose();
    }

  9. #9
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    Ca ne me dit pas le numéro de la ligne ou se trouve l'assertion dans 'DockStat.cpp' (il y en a un paquet des ASSERT dans ce fichier)

    ton code a l'air pas mal, je vois rien d'alarmant ...

    @+

  10. #10
    Membre averti
    Homme Profil pro
    Informatique industrielle
    Inscrit en
    Novembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Informatique industrielle

    Informations forums :
    Inscription : Novembre 2007
    Messages : 41
    Par défaut
    désoler

    Je voudrais bien te donner la ligne mais pour le moment il ne veux plus planter.

    Si tu veux lorsque qu'il a planté tout à l'heure j'ai fait Ignorer et depuis il marche très bien. Bizarre quand même non?

    Dés qu'il replantera je te donnerai la ligne.

    En tout cas merci pour ton aide

Discussions similaires

  1. Enregistrer position des Toolstrip
    Par kekesilo dans le forum Windows Forms
    Réponses: 5
    Dernier message: 03/07/2007, 17h22
  2. Position d'un enregistrement dans une table ou requête Query
    Par polinevol dans le forum Bases de données
    Réponses: 3
    Dernier message: 21/01/2006, 03h53
  3. Position d'un enregistrement dans une table
    Par polinevol dans le forum Bases de données
    Réponses: 1
    Dernier message: 16/01/2006, 09h10
  4. récupérer la position d'un enregistrement
    Par zenzo dans le forum Requêtes
    Réponses: 11
    Dernier message: 20/07/2005, 14h13
  5. Récupérer la position d'un enregistrement
    Par Hell dans le forum Requêtes
    Réponses: 6
    Dernier message: 10/09/2004, 19h14

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