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 :

[MFC] Taille et position de fenetres (CFormView)


Sujet :

MFC

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 47
    Points : 25
    Points
    25
    Par défaut [MFC] Taille et position de fenetres (CFormView)
    Bonjour,

    Je suis dans un contexte MDI, plusieurs vues pour un seul document.
    Je voudrai mémoriser la taille et la position de mes fenêtres dans mon objet document.
    J'utilise un CRect pour mémoriser les informations, un SetWindowPos() dans InitialUpdate pour modifier taille et position à l'ouverture, et GetWindowRect() et GetClientRect() sur le OnDestroy() pour récupérer les informations à la fermeture.

    Problème : mes fenêtres ne se réaffiche pas au même endroit ni avec la même taille, en fait, je pense que GetWindowRect et GetClientRect ne compte pas les bordures alors que le SetWindowPos les compte (ou inversement ... j'en perd mon latin ).

    Existe il d'autres méthodes permettant d'éviter de décompter la bordure lors de la récupération ?

    Merci de votre aide,
    Marie.

  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

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    J'ai vu cet exemple dans la FAQ. Cela me parait un peu compliqué pour ce que je veux faire. Je veux simplement récupérer la taille et la position de la fenêtre lors de sa fermeture et l'ouvrir avec ces mêmes informations stockées dans l'objet document.

    De plus, dans le PreCreateWindow, je n'ai pas accès à mon objet document.

    Est ce le seul moyen ?

  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
    Citation Envoyé par MarieMtl
    J'ai vu cet exemple dans la FAQ. Cela me parait un peu compliqué pour ce que je veux faire. Je veux simplement récupérer la taille et la position de la fenêtre lors de sa fermeture et l'ouvrir avec ces mêmes informations stockées dans l'objet document.

    Est ce le seul moyen ?
    salut , je ne vois pas pourquoi c'est une classe template permettant de gerer la taille des fenetres child et celle de l'application .
    ça fait le boulot.
    Citation Envoyé par MarieMtl
    De plus, dans le PreCreateWindow, je n'ai pas accès à mon objet document.
    pourquoi faire ? ,puisque la taille et la position par instance des fenetres est geré par cette classe ,elle est donc autonome.


  5. #5
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    pourquoi faire ? ,puisque la taille et la position par instance des fenetres est geré par cette classe ,elle est donc autonome.
    Parce que c'est ce que l'on me demande de faire. En fait la position et la taille des fenêtres peuvent être différentes selon le document ouvert. Je dois donc stocker ces informations dans l'objet document (afin de les sérialiser).

    Mon problème ne se situe pas au niveau du stockage des informations mais au niveau de leur récupération.

    Peut-être que je peux arriver à implémenter cela à partir de tes classes (ce que je suis entrain d'essayer de faire sans trop de succès jusqu'à présent). Dans ce cas, peux tu me dire comment ou me dire comment je peux faire autrement ?

    Merci,
    Marie.[/code]

  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,
    bien le probleme c'est que au moment ou la MDI est créée le document n'est pas encore operationnel donc pas de données lues etc..
    et si on eviter des effets d'affichages il vaut mieux placer le code de position de la fenetre dans la MDI.
    si ce n'est pas génant il suffira d'appeler les fonctions situées dans la MDI (avec mon exemple) à partir de la view dans OnInitialUpdate .

  7. #7
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    Maintenant cela fonctionne correctement , j'avais tout simplement oublié d'appeler ces fonctions sur la Frame et non sur la View.

    Sur le OnInitialUpdate de ma View, je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    GetParentFrame()->SetWindowPlacement();
    Sur le OnDestroy de ma View, je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    WINDOWPLACEMENT wp;
    wp.length = sizeof(wp);
    GetParentFrame()->GetWindowPlacement(&wp);
    Et tant pis pour les effets de bord.

    Merci pour votre aide,
    Marie.

  8. #8
    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
    pense a mette résolu si c'est ok

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/09/2012, 17h09
  2. Garder Taille et positions des fenetres
    Par Cazaux-Moutou-Philippe dans le forum Mandriva / Mageia
    Réponses: 1
    Dernier message: 05/07/2007, 21h04
  3. [web] [PerlTk] Position des fenêtres
    Par Cyspak dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 05/11/2004, 11h49
  4. [MFC]Taille minimale d'une fenetre
    Par fr66 dans le forum MFC
    Réponses: 5
    Dernier message: 14/06/2004, 11h44
  5. [MFC] Maximiser à l'ouverture une fenetre fille !
    Par leskritiques dans le forum MFC
    Réponses: 15
    Dernier message: 28/04/2004, 08h50

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