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 :

Actualiser la vue


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre exp�riment� Avatar de Bryce de Mouri�s
    Profil pro
    CPI
    Inscrit en
    Mars 2007
    Messages
    225
    D�tails du profil
    Informations personnelles :
    �ge : 37
    Localisation : France, Hauts de Seine (�le de France)

    Informations professionnelles :
    Activit� : CPI

    Informations forums :
    Inscription : Mars 2007
    Messages : 225
    Par d�faut Actualiser la vue
    Salut,

    Je fais un petit programme de sudoku sous la forme d'un SDI, avec sauvegarde de la grille.
    Pour repr�senter la grille je dessine des lignes et des chiffres l� o� il y a des chiffres par d�faut. Pour les cases vides j'utilises des CEdit, bien s�r ces CEdit sont g�n�r�s dynamiquement lors de la cr�ation de la grille.
    Le probl�me c'est que je n'arrive pas � les g�n�rer lorsque l'utilisateur ouvre une grille � partir d'un fichier de sauvegarde. Je n'arrive pas � intercepter l'ouverture d'un fichier par la vue...
    On peut le d�tecter avec ID_FILE_OPEN, mais du coup quand je clique sur ouvrir y se passe rien, plus de boites de dialogue pour ouvrir le fichier -_-

    Une solution svp ?

  2. #2
    Membre �m�rite
    Avatar de Spout
    Profil pro
    Ing�nieur syst�mes et r�seaux
    Inscrit en
    F�vrier 2007
    Messages
    904
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : France, Val d'Oise (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur syst�mes et r�seaux

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 904
    Par d�faut
    Salut,
    Pour te filer un coup de main, il nous faut plus que 3 lignes de description de ton probl�me. Penses toujours � synth�tiser ta demande:
    • Ce que tu veux faire [OK]
    • Ce que tu as [OK]
    • Comment tu t'y prends via un bout de code minimal compilable reproduisant le probl�me
    une fois que tu arriveras � intercepter l'�v�nement, le probl�me sera r�gl�. C'est surtout cette partie qui m'int�resse.

  3. #3
    R�dacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par d�faut
    Citation Envoy� par Spout Voir le message
    Salut,
    Pour te filer un coup de main, il nous faut plus que 3 lignes de description de ton probl�me. Penses toujours � synth�tiser ta demande:
    • Ce que tu veux faire [OK]
    • Ce que tu as [OK]
    • Comment tu t'y prends via un bout de code minimal compilable reproduisant le probl�me
    une fois que tu arriveras � intercepter l'�v�nement, le probl�me sera r�gl�. C'est surtout cette partie qui m'int�resse.
    Idem.
    Sinon, en prenant ma boule de cristal, je dirais:
    1/ Si tu g�re ID_FILE_OPEN, alors tu dois g�rer l'ouverture d'une bo�te de dialogue pour permettre l'ouverture d'un fichier. Je dirais: mauvaise id�e pour r�soudre ton probl�me.
    2/ Il existe CView::OnInitialUpdate. Normalement, c'est ici que ton traitement devrait avoir lieu: r�cup�ration des donn�es du document et mise � jour de l'interface (cr�ation de tes CEdit).

  4. #4
    Membre exp�riment� Avatar de Bryce de Mouri�s
    Profil pro
    CPI
    Inscrit en
    Mars 2007
    Messages
    225
    D�tails du profil
    Informations personnelles :
    �ge : 37
    Localisation : France, Hauts de Seine (�le de France)

    Informations professionnelles :
    Activit� : CPI

    Informations forums :
    Inscription : Mars 2007
    Messages : 225
    Par d�faut
    D�sol� de ne pas avoir suffisamment bien expliquer.

    En d�tail voil� comment j'ai con�u la chose:
    A l'initialisation de la vue je cr�e une matrice 9*9 de CEdit.

    Lorsqu'on cr�e une nouvelle grille (document), j'ai la fonction OnFileNew de ma vue qui est appel�e. Je cr�e une grille dans mon document avec des chiffres positionn�s par d�faut et des cases vides qu'il faut remplir. Puis la vue analyse la grille, l� o� il y a un chiffre je masque le CEdit correspondant � la case. Donc toutes les cases vides disposent d'un CEdit visible.
    Derni�re �tape je rafraichit l'affichage. Ca dessine la grille avec les lignes/colonnes et les chiffres par d�faut.
    Donc toute l'initialisation se fait par la vue.

    Le probl�me se pose quand je dois ouvrir une grille. La grille se charge dans le document, donc �a se fait directement dans le document. Je n'arrive pas � dire � ma vue de mettre � jour les CEdit, ni de rafra�chir l'affichage.

    L'id�al �a serait que je puisse savoir � partir de la vue, qu'un fichier a �t� ouvert. A ce moment l� je r�cup�re le document et je peux actualiser la visibilit� de mes CEdit et de ma grille.

    J'esp�re avoir �t� suffisamment clair ^^

    Concernant OnInitialUpdate, c'est bien ici que se fait la cr�ation de mes CEdit, dites moi si je me trompe mais OnInitialUpdate c'est uniquement apr�s la cr�ation de la vue quand on lance application, apr�s la fonction n'est plus appel�e ?

  5. #5
    R�dacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par d�faut
    Citation Envoy� par Bryce de Mouri�s Voir le message
    D�sol� de ne pas avoir suffisamment bien expliquer.

    En d�tail voil� comment j'ai con�u la chose:
    A l'initialisation de la vue je cr�e une matrice 9*9 de CEdit.

    Lorsqu'on cr�e une nouvelle grille (document), j'ai la fonction OnFileNew de ma vue qui est appel�e.

    Citation Envoy� par Bryce de Mouri�s Voir le message
    Concernant OnInitialUpdate, c'est bien ici que se fait la cr�ation de mes CEdit, dites moi si je me trompe mais OnInitialUpdate c'est uniquement apr�s la cr�ation de la vue quand on lance application, apr�s la fonction n'est plus appel�e ?
    Oui, ensuite, c'est CDocument::UpdateAllViews et CView::OnUpdate qui joue leur r�le.

    Normalement, tu devrais avoir quelque chose comme �a:
    CDocument:
    une grille avec des chiffres et des trous.
    A l'init: grille al�atoire (par exemple).
    Au chargement d'un fichier: initialisation de la grille avec le fichier. Demande de mise � jour des vues (CDocument::UpdateAllViews)

    CView:
    Sur OnInitialUpdate: Cr�ation de tes CEdit (puisque c'est ton choix!). R�cup�re les infos du document et affichage/masquage des CEdit, construction de l'affichage.
    Sur OnUpdate: r�cup�ration des infos du document et affichage/masquage des CEdit, re-construction de l'affichage.


    P.S.: Pourquoi masquer les CEdit d�j� rempli plut�t que de leur affecter leur valeur et faire un EnableWindow(false)?

  6. #6
    Membre exp�riment� Avatar de Bryce de Mouri�s
    Profil pro
    CPI
    Inscrit en
    Mars 2007
    Messages
    225
    D�tails du profil
    Informations personnelles :
    �ge : 37
    Localisation : France, Hauts de Seine (�le de France)

    Informations professionnelles :
    Activit� : CPI

    Informations forums :
    Inscription : Mars 2007
    Messages : 225
    Par d�faut
    UpdateAllViews, c'est surement ce que je cherche � faire ^^, j'esp�re que �a va marcher. Merci beaucoup

    Citation Envoy� par 3DArchi
    P.S.: Pourquoi masquer les CEdit d�j� rempli plut�t que de leur affecter leur valeur et faire un EnableWindow(false)?
    Je masque les CEdit car je passe par le DeviceContext pour afficher les chiffres en gros !! Ne sachant pas s'il est possible de modifier la taille du texte dans un CEdit. De plus � la base je voulais juste g�n�rer une grille pour pouvoir l'imprimer, ce n'est qu'apr�s que j'ai rajout� les CEdit pour jouer directement.
    Maintenant si tu me dis que c'est possible d'avoir des CEdit avec le texte en gros (et simplement) pourquoi pas ^^

  7. #7
    Expert confirm�
    Avatar de Mat.M
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 539
    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 539
    Par d�faut
    Citation Envoy� par Bryce de Mouri�s Voir le message
    Salut,
    Le probl�me c'est que je n'arrive pas � les g�n�rer lorsque l'utilisateur ouvre une grille � partir d'un fichier de sauvegarde. Je n'arrive pas � intercepter l'ouverture d'un fichier par la vue...
    1-faire une methode InitJeu dans la classe de document
    2-appeler cette methode sur OnNewDocument ou autre methode pour ouvrir le fichier
    3-rafraichir les vues avec GetFirstViewPosition et GetNextView ( voir FAQ )

Discussions similaires

  1. Actualiser les vues dans une fen�tre
    Par fubra dans le forum D�veloppement OS X
    R�ponses: 0
    Dernier message: 31/10/2013, 12h14
  2. Actualiser une vue
    Par Neewd dans le forum Agents de placement/Fen�tres
    R�ponses: 8
    Dernier message: 30/10/2013, 11h20
  3. [MVC] Actualiser la vue en �coutant le mod�le
    Par dolcevita755 dans le forum Interfaces Graphiques en Java
    R�ponses: 7
    Dernier message: 25/03/2012, 16h12
  4. [OpenOffice][Base de donn�es] Actualisation en vue d'un publipostage
    Par p'tite Sandrine dans le forum OpenOffice & LibreOffice
    R�ponses: 2
    Dernier message: 09/06/2009, 10h05
  5. actualisation des vues _TABLES
    Par lmargueritte dans le forum Administration
    R�ponses: 2
    Dernier message: 03/05/2007, 16h49

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