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

  1. #1
    Membre confirmé Avatar de Bryce de Mouriès
    Profil pro
    CPI
    Inscrit en
    Mars 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : CPI

    Informations forums :
    Inscription : Mars 2007
    Messages : 219
    Points : 558
    Points
    558
    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 ?
    Infinity - To The Top, shoot'em up développé en Haxe / OpenFL pour FLASH et Android, piou piou rythmé dans l'espace

  2. #2
    Membre éprouvé
    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 : 39
    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
    Points : 1 067
    Points
    1 067
    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.
    "L'ordinateur obéit à vos ordres, pas à vos intentions." [Anonyme]

  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
    Points : 13 017
    Points
    13 017
    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 confirmé Avatar de Bryce de Mouriès
    Profil pro
    CPI
    Inscrit en
    Mars 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : CPI

    Informations forums :
    Inscription : Mars 2007
    Messages : 219
    Points : 558
    Points
    558
    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 ?
    Infinity - To The Top, shoot'em up développé en Haxe / OpenFL pour FLASH et Android, piou piou rythmé dans l'espace

  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
    Points : 13 017
    Points
    13 017
    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 confirmé Avatar de Bryce de Mouriès
    Profil pro
    CPI
    Inscrit en
    Mars 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : CPI

    Informations forums :
    Inscription : Mars 2007
    Messages : 219
    Points : 558
    Points
    558
    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 ^^
    Infinity - To The Top, shoot'em up développé en Haxe / OpenFL pour FLASH et Android, piou piou rythmé dans l'espace

  7. #7
    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
    Points : 13 017
    Points
    13 017
    Par défaut
    Citation Envoyé par Bryce de Mouriès Voir le message
    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 ^^
    http://msdn.microsoft.com/en-us/libr...changing_fonts

  8. #8
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    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 361
    Points : 20 379
    Points
    20 379
    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