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

Windows Discussion :

Problème avec l'ascenseur vertical


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 214
    Par défaut Problème avec l'ascenseur vertical
    Bonjour,
    Me voici encore avec mes questions tordues:
    Je voudrais que l'ascenseur vertical apparaisse lorsque ma fenêtre est trop petite pour afficher tout le contenu et que je puisse ainsi la faire défiler.
    Problème, a priori simple, sauf que dans mon cas, désolé, plusieurs petites complications:
    1.- Ma fenêtre que nous appellerons F sur laquelle je veux l'ascenseur est une parmi n de mes fenêtres filles
    2.- Ma fenêtre F a en plus un header contrôle que nous appellerons H, la logique voudrait que si le défilement de F fonctionnait, elle devrait glisser vers le haut sous H;
    3.- La fenêtre parente de ma fenêtre F est une MDICLIENT qui est elle-même fenêtre fille de ma fenêtre principale que nous appellerons MAIN
    Les ascenseurs apparaissent normalement dès que nécessaire sur MAIN, par contre par défaut aucun ascenseur n'apparaît sur F, même lorsque ça serait nécessaire, je peux quand même voir les infos cachés en tirant sur la fenêtre F pour l'agrandir.
    Si je force un ascenseur vertical avec WS_VSCROLL, il apparaît bien mais il est inefficace, je peux le baisser en tirant dessus, mais la fenêtre ne défile pas et l'ascenseur se comporte comme un élastique, dès que je le lâche il revient à son point de repos.
    Styles de F dans WNDCLASS: CS_VREDRAW | CS_HREDRAW
    F créée avec CreateWindowEx et les paramètres: WS_EX_CLIENTEDGE | WS_EX_MDICHILD puis: WS_CHILD |WS_CAPTION | WS_VISIBLE | WS_OVERLAPPEDWINDOW | WS_VSCROLL
    H créé avec CreateWindow(WC_HEADER, NULL puis: WS_CHILD | WS_VISIBLE etc...
    Merci

  2. #2
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 795
    Par défaut
    Salut Arthur,

    est-ce que tu as contrôlé que les messages que devraient envoyer la scroll bar à sa fenêtre parante (F si j'ai bien compris) sont bien reçus ?

    Sinon j'ai une question con (je n'ai aucune expérience avec des fenêtres ayant une scroll bar) :
    le fait de rajouter le style WS_VSCROLL ne fait-il rien de plus que de rendre la scroll bar visible.
    Ne faut-il pas implémenter son comportement soi-même (peut-être valable uniquement pour certain styles de fenêtres )?
    Mais tu dis que ça marche pour ta fenêtre MAIN, donc la réponse devrait être non.
    Surtout qu'il serait pas très intelligents de proposer cette fonctionnalité, s'il fallait quand même au final implémenter le comportement soi-même...
    Autant utiliser le composant Scroll Bar directement dans ce cas là.

    Quelles sont les différences entre ta fenêtre MAIN et ta fenêtre F ?
    Tu pourrais faire un clone de ta fenêtre MAIN puis petit à petit la transformer en F pour voir à quel moment tu perds le bon fonctionnement de la scroll bar.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 214
    Par défaut Ascenseur vertical
    Bon, je ne vois pas trop comment faire ce que tu dis pour passer de la fenêtre principale à la fenêtre F et de plus je ne veux pas trop triturer le programme dans tous les sens pour faire des essais car il fait déjà 4500 lignes de code et mis à part ce problème il tourne correctement. Mais entre-temps quelqu'un m'a répondu sur un autre site en me disant qu'il fallait que je gère moi-même les messages qui me sont envoyés par l'ascenseur ce qu'effectivement je ne faisais pas car comme ça marchait tout seul pour la fenêtre principale je pensais que ça aurait pu être pareil pour cette fenêtre fille. Par ailleurs s'il faut que je fasse défiler moi-même par programme la fenêtre ça me pose quelques problème, j'ai sur cette fenêtre une quantité non négligeable de contrôles statiques et de boutons s'il faut que je fasse des MoveWindow() de chaque contrôle à chaque clic sur l'ascenseur je ne suis pas sorti de l'auberge ou alors je n'ai rien compris. De ce fait, je mets ce problème sous le coude pour le reprendre plus tard à moins que quelqu'un me propose une solution miracle. Ma priorité maintenant étant de résoudre mes problèmes avec l'imprimante (question suivante sur le site)
    Merci.

  4. #4
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 795
    Par défaut
    Ben tu pourrais faire un nouveau projet avec un fenêtre principale contenant tous les objets de ta fenêtres F et tu lui ajoutes la scrollbar.
    Puis tu changes ses styles petit à petit jusqu'à savoir lequel te faire perdre le comportement normal de la scrollbar.
    J'imagine que c'est quand ta fenêtre devient fille d'une autre fenêtre.

    Et si tu dois implémenter le scroll toi-même, je doute qu'il faille dire à chaque composant de se déplacer sur la fenêtre...
    Il doit plutôt y avoir un genre de visible_rect qui défini la zone visible de la fenêtre.
    Il suffirait alors de déplacer la fenêtre verticalement et déplacer cette zone visible dans le sens opposé pour avoir une impression de scroll (je ne sais pas si je me suis fait comprendre).

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 214
    Par défaut Suite
    Je pense avoir à peu près compris ce que tu suggères. Je vais essayer de régler mon problème de compréhension du fonctionnement de l'édition sur imprimante puis je vais m'attaquer à la méthode d'investigation que tu proposes.
    Merci

  6. #6
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 795
    Par défaut
    Sinon dans le pire des cas, tu crées ta fenêtre enfant F avec le WS_VSCROLL.
    Ensuite tu place une autre fenêtre fille (qu'on appelera F') dans F.
    Et tu places tout tes composants dans F'.
    Comme ça pour gérer le scroll, tu n'auras plus qu'à bouger F'.

    Je reste tout de même sceptique quant à l'implémentation manuelle de la gestion du VScroll...

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

Discussions similaires

  1. [WD19] Problème avec l'ascenseur dans un Champ Fenêtre Interne
    Par sbernard dans le forum WinDev
    Réponses: 0
    Dernier message: 12/03/2015, 22h15
  2. [CSS 2] problèmes avec vertical-align
    Par rohtangla dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 10/02/2012, 14h35
  3. Réponses: 2
    Dernier message: 13/05/2010, 03h01
  4. [WD9] problème avec ascenseur automatique
    Par omar344 dans le forum WinDev
    Réponses: 14
    Dernier message: 24/04/2010, 15h31
  5. Réponses: 6
    Dernier message: 21/01/2009, 15h18

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