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 :

Poster un message privé


Sujet :

MFC

  1. #1
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut Poster un message privé
    Bonjour,

    Voici mon problème : dans une application MDI, j'ai une vue qui affiche une liste et plusieurs autres vues qui sont susceptibles d'ajouter / modifier / supprimer des éléments dans cette liste.
    Je voudrais donc que les vues susceptibles de modifier le contenu de la liste lancent un message privé que j'ai défini comme Farscape l'explique dans la FAQ. Mais mon problème est que je ne connais pas, dans les vues qui modifient, la ou les vues qui affichent la liste.
    En effet, il peut y avoir entre 0 et n instances de la vue liste, sans relation de parenté avec les autres vues.

    Existe-t-il un moyen pour poster ce message privé sans connaître a priori les destinataires ? Par exemple, il pourrait être possible de poster le message à l'application qui saurait ensuite le transférer aux éventuelles différentes instances de ma vue liste...

  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
    Par défaut
    salut,
    je n'ai pas très bien compris les différents liens entre les vues et listes
    en gros tu envois un message mais tu ne sais pas a qui ?
    ce n'est pas très clair pour moi

  3. #3
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Je n'ai pas été très clair...
    J'ai, d'une part, une vue qui est chargée d'afficher le résultat d'un requête sous forme de liste d'articles.
    J'ai, d'autre part, d'autres vues qui permettent d'ajouter, de modifier ou de supprimer des articles.

    Imaginons que j'affiche la liste des articles, et qu'en parallèle je décide d'en ajouter un (nouvel article). Je voudrais que la vue qui m'a permi d'ajouter un article envoie un message à la vue de liste (qui est encore visible à l'écran) afin que celle-ci actualise la liste. Le problème, c'est que la vue de création d'un article ne dispose pas de pointeur sur celle qui affiche la liste...

    Est-ce que je suis plus clair ?

  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
    Par défaut
    salut,
    il te "suffit" de parcourir les fenêtres de l'application et de détecter la bonne classe grâce à sa signature.
    http://cpp.developpez.com/faq/vc/?pa...App#GetAllView
    c'est un des thèmes que je développe dans mon deuxième tuto sur les MFC:
    http://farscape.developpez.com/tutor...ework-MDI-MFC/

  5. #5
    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
    Pour faire ça, j'utilise habituellement:

    CDocument::UpdateAllViews

    Regarde dans la MSDN, ça permet de notifier toutes les vues d'un document.

    @+

  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
    Par défaut
    Citation Envoyé par stephdim Voir le message
    Pour faire ça, j'utilise habituellement:

    CDocument::UpdateAllViews

    Regarde dans la MSDN, ça permet de notifier toutes les vues d'un document.

    @+
    encore faut-il disposer du pointeur sur le document ...
    et de supposer que toutes les autres vues fassent parties du même document.

  7. #7
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Farscape --> Ok, je comprends la façon de faire que tu proposes. Je commençais à l'envisager sans être certain qu'il n'y ait pas mieux. Mais si toi tu ne vois rien de plus pratique, je vais faire comme ça.

    stephdim --> Comme le dis Farscape, je ne dispose pas de pointeur sur le document concerné. Et puis je ne veux pas réinitialiser toute la vue ; je veux juste lancer une méthode précise.

    Merci à vous deux pour vos propositions

  8. #8
    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
    Si tu as une vue, tu as forcément un pointeur sur le document par "GetDocument()", ou alors c'est un montage maison ...

    UpdateAllViews() prend des parametres.

    Par défaut, ça reinitialise toutes les vues car il y a seulement un Invalidate() derrière.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void UpdateAllViews(
       CView* pSender,
       LPARAM lHint = 0L,
       CObject* pHint = NULL 
    );
    lHint sert a identifier le type de mise à jour, c'est une valeur que tu définies selon tes besoins.
    pHint est pointeur en paramètre que tu définies aussi en fonction de tes besoins et rien ne t'empeche de le caster a autre chose que CObject*

    mais bon si c'est des vues "maisons" faut mettre en place une liste chainée comme les MFC le font.

    @+

  9. #9
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Je pourrais utiliser UpdateAllViews si je connaissais le document contenant le vue qui affiche la liste des articles depuis la vue qui effectue la modification d'un article. Mais ce n'est pas le cas...
    Les vues dont je parle ne sont pas dans le même document.

  10. #10
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Super, ça marche !
    Merci Farscape

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/12/2005, 18h29
  2. Messages Privés : reste en boite d'envoi ? Pourquoi ?
    Par Perceval dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 2
    Dernier message: 20/09/2005, 17h52
  3. Poster un message avec un CString en parametre
    Par loupdeau dans le forum MFC
    Réponses: 2
    Dernier message: 19/05/2005, 15h02
  4. A lire impérativement avant de poster un message
    Par ok.Idriss dans le forum Demandes
    Réponses: 0
    Dernier message: 01/05/2002, 18h57

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