Accueil > Forum > > > > Fenêtre comme formulaire
Fenêtre comme formulaire
jeudi 21 juillet 2011 à 19:44:19 |
Fenêtre comme formulaire

ArthurAuguste
|
Bonjour,
Je cherche à faire en C/C++ une fenêtre en 3 parties (comme un formulaire avec une entête, le corps de la fenêtre et un pied) y a-t-il une solution standard pour faire ceci ?
- 1.- J'ai pensé à faire une fenêtre mère avec à l'intérieur 3 fenêtres filles sans titre qui se juxtaposent
- 2.- J'ai pensé à une seule fenêtre avec comme entête et comme pied de fenêtre un contrôle statique de hauteur suffisante et ayant comme largeur la largeur totale de la fenêtre (à tenir à jour en fonction des redimensionnements)
- 3.- J'ai pensé à utiliser comme entête une tool barre et comme pied une status barre.
Dans la solution 2, je me demande si c'est gérable dans la mesure où dans l'entête j'aurai aussi des boutons, ce qui revient à superposer des contrôles
Dans la solution 3, l'avantage c'est que le redimensionnement en largeur est facile, par contre, il ne me semble pas que je sois maître de la hauteur, ni de la forme des boutons que je veux y mettre (prévu pour des onglets) et je ne vois pas comment gérer la couleur du fond, ni du texte de la toolbar ou de la status barre.
A votre avis quelle est la moins mauvaise solution, où en existe-t-il une 4ème plus standard pour ce genre de problème ?
|
|
jeudi 21 juillet 2011 à 22:29:43 |
Re : Fenêtre comme formulaire

buno
|
Hello,
Réponse 2.
1. C'est à oublier: inutile d'aller s'embêter avec des sous-fenêtres
3. Effectivement, tu n'as pas la main sur la hauteur de la toolbar (qui est sensé afficher des "outils") ni de la statusbar (qui est là pour afficher l'état courant de l'appli)
En fait, ce n'est ni plus ni moins qu'une fenêtre classique avec des composants dessus
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
|
|
vendredi 22 juillet 2011 à 09:19:13 |
Re : Fenêtre comme formulaire

ArthurAuguste
|
Merci pour la réponse, effectivement la solution 2 paraît plus simple sauf que je n'ai pas testé si je pouvais superposer des boutons sur le contrôle statique qui me servirait de header et si c'est gérable de modifier la taille de ce contrôle statique servant de header ainsi que le cadrage du texte chaque fois que l'utilisateur redimensionne la fenêtre.
Entre-temps j'ai continué à chercher et j'ai trouvé une 4ème solution avec WC_HEADER (le header control), j'ai commencé à tester et j'ai vu qu'avec ça je pouvais régler à loisir la hauteur du header. Maintenant, je n'ai pas encore trouvé comment forcer la couleur de ce contrôle, du texte et du fond que je suis sensé y insérer et comment y introduire des boutons. Je ne sais pas non plus encore s'il existe un équivalent "footer" pour le bas de fenêtre ou si on doit se resservir du header en modifiant son implantation ?
As-tu un avis sur cette 4ème solution ?
Merci
|
|
vendredi 22 juillet 2011 à 09:56:27 |
Re : Fenêtre comme formulaire

buno
|
Tiens, je ne connais pas le "header control". Mais, à mon avis, ta nouvelle solution n'est qu'une "surcouche" de la 2e. Avec la 2e, tu as la main sur tout et tu fais ce que tu veux: resize, superposition,...
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
|
|
vendredi 22 juillet 2011 à 22:52:37 |
Re : Fenêtre comme formulaire

ArthurAuguste
|
Salut
Bon, entre-temps j'ai approfondi le header control, voilà ce que j'ai fait.
1.- J'ai créé un header control par hheader=CreateWindow(WC_HEADER,...) pas de problème
2.- J'ai récupéré sa taille par SendMessage(hheader, HDM_LAYOUT...) pas de problème
3.- J'ai modifié sa taille par SetWindowPos(hheader,...) pas de problème
4.- J'ai modifié la couleur de fond du header par SetClassLong(hheader, GCL_HBRBACKGROUND,...) pas de problème
5.- J'ai créé un contrôle statique (du texte) à l'intérieur du header comme contrôle enfant du header. pas de problème
6.- J'ai créé un bouton à l'intérieur du header comme contrôle enfant du header. pas de problème.
7.-Comme je veux en plus gérer la police du texte, sa couleur et son fond, gérer la forme et la couleur du bouton, j'ai sous-classé la WindowProc du header par SetWindowLong(hheader, GWL_WNDPROC...).
Dans la procédure de sous-classement, je récupère le message WM_DRAWITEM sous lequel je change la couleur du texte, du bouton, etc... pas de problème
8.- comme je veux récupérer la main dans la fenêtre mère du header quand l'utilisateur clique sur le bouton, je profite de la procédure de sous-classement pour y tester aussi le message WM_COMMAND associé à l'identificateur du bouton et si c'est le cas j'envoie un message WM_NOTIFY avec les codes appropriés à la fenêtre parente. Pas de problème: quand l'utilisateur clique sur le bouton qui est un enfant du header, je récupère bien la main au niveau du message WM_NOTIFY de la fenêtre parente du header.
A noter que je n'ai pas de WM_PAINT à gérer, j'ajuste juste la largeur du header à celle de sa fenêtre mère lors du message WM_SIZE.
Donc tout baigne,
Il me reste à tester un footer, je pense que je dois pouvoir soit utiliser la statusbar en la sous-classant éventuellement aussi pour gérer la couleur du texte que je veux y mettre dedans, soit un autre header control, je n'ai pas testé mais si on peut modifier sa taille, on doit pouvoir aussi modifier son implantation pour le positionner en fin de fenêtre, soit encore la solution 2.
En fait, le header control n'est pas à l'origine exactement prévu pour cette utilisation, il est prévu pour mettre des titres aux colonnes qui sont en dessous comme ça existe par exemple dans l'explorateur et lorsqu'on clique sur le titre de la colonne ça trie les données qui sont en dessous selon le critère du titre (par exemple: "nom" ou "date de modification", etc...).
Maintenant, il va me falloir choisir une solution en fait il y en avait même une 5ème qui consistait simplement à peindre un rectangle de couleur différente à l'emplacement du header, mais là il faut gérer le WM_PAINT.
Merci pour tes conseils.
|
|
samedi 23 juillet 2011 à 13:40:02 |
Re : Fenêtre comme formulaire

buno
|
Je constate que tu t'en sors très bien...
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
|
|
Cette discussion est classée dans : solution, formulaire, fenêtre, pied, entête
Répondre à ce message
Sujets en rapport avec ce message
appeler une autre fenêtre [ par harbat ]
comment puis-je appeler un autre formulaire en utilisant le visual C++(j'utilise les MFC)merci de me répondre a la question le plutot possible
Effaçage de fenêtre [ par denis28 ]
Comment effacer le contenu d'une fenêtre win32 avec visual c++? Je cherche l'équivalent du clrscr() du mode console.Merci
création de fenêtre enfant [ par polykos ]
quelqu'un saurait me dire pour quoi lorsque avec CreateWindow, j'indique en tant que style WS_CHILD, j'obtiens une feêtre enfant mais inactive ???!!
Comment afficher du texte dans un fenêtre OpenGl?? [ par mastave ]
Comment afficher du texte dans un fenêtre OpenGl??Et avec un police spéciale??
Fenêtre windows... [ par ELECTRORESiSTiK ]
Salut,Je suis debutant en Visual C++ et je n'arrive pas à créer ce que je veux faire...Je voudrais créer une fenêtre windows ( Form ) avec 2 edit box
Créer un lien sous fenêtre windows [ par JMGR ]
Comment peut - on créer un lien vers un site sous une fenêtre Windows ?(avec les MFC par ex.)a+
Fenêtre pas carrée ... [ par Ostrogoth22 ]
Comment créer une fenètre de forme ronde , ou n'importe quelle formeEG : la fenetre d'intro de icq, ou copernic ..
A tous les pros du C++ / POO [ par Kezal ]
Salut,J'ai un leger problème et j'aimerais y trouver une solution, alors je viens demander conseil ici ;)Alors voila, j'ai une classe :class CEngine{p
inserer une fenêtre opengl dans une autre fenetre [ par 20100 ]
je cherche à inserer un programme que j'ai fait avec opengl dans une fenêtre windows classique(avec des boutons ...)pour l'instant tout marche mais da
Rafraichissement des dialog [ par JeriKo ]
salut a tous,j'ai fait un prog avec boite de dialogue, le probleme etant que j'ai une boucle et du coup faut rafraichir la fenetre pour pouvoir utilis
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|