Accueil > > > UTILISATION AVANCÉE DU VC6 - TRUCS & ASTUCES NON/PEU DOCUMENTÉS
UTILISATION AVANCÉE DU VC6 - TRUCS & ASTUCES NON/PEU DOCUMENTÉS
Information sur la source
Description
Principalement pour les boite de dialogues
J'ai rassemblé ci après quelques trucs & astuces sur Visual C++ que je n'ai pas trouvé détaillé par ailleur...
ou alors, des choses certes documentées dans les MFC mais que je ne connaissai pas jusqu'a récement.
Qui font gagné un max de temps dans la création/la gestion d'interface graphiques
Magicalement.
Source
- pour les boites de dialogues, (RessourceView)
-
- Pour changer les numeros d'ID des controles
- (si vous ne voyez pas l'intéret, lisez la suite...)
- .
- . vous savez afficher l'ID de tous les controles d'une boite de dialog:
- . . Clic droit - Propriete
- . Ces ID sont des constantes définies dans resource.h
- . . #define ID 123
- . . ou ID est votre identifiant et 123 sa valeur numérique
- . Un moyen simple de changer sa valeur depuis l'interface graphique consiste à prendre la fenetre de propriété et après le nom de l'ID, inscrire "=321"
- le controle aura donc toujours le meme nom mais ce dernier vaudra 321.
-
- Rq : pensez à respecter les plages de valeurs specifiez
- sinon, ça va vite etre le wyyyy !!!
-
-
- Changer cette valeur est util pour utiliser une fonctionnalité de controle très pratique:
- Dans mon cas concret, tous les boutons radio d'une boite de dialogue devaient appeler une fonction de mise a jour 'maj()'
-
- auparavant , j'affectait une action a chacun des boutons appelant maj
- maintenant, ça se fait en 3 lignes:
- . au préalable, il faut que nos différents identifiants aient des nombres successifs. (voir ci dessus & faire les modifs nécessaires)
- . ensuite, modifions la MESSAGE_MAP de notre boite de dialogue:
- . .
- . . BEGIN_MESSAGE_MAP(CChoixInfor, CDialog)
- . . . //{{AFX_MSG_MAP(CChoixInfor)
- . . . ... //code éventuel inséré par le wizard... -Nono
- . . . //}}AFX_MSG_MAP
- . . END_MESSAGE_MAP()
- . Il faut insérer un code dans cette section mais a l'extérieur de la section du wizard:
- . .
- . .
- . . BEGIN_MESSAGE_MAP(CChoixInfor, CDialog)
- . . . //{{AFX_MSG_MAP(CChoixInfor)
- . . . ... //code éventuel inséré par le wizard... -Nono
- . . . //}}AFX_MSG_MAP
- . . . ... // notre code
- . . END_MESSAGE_MAP()
- . .
- . on va affecter un controle à l'ensemble des éléments désirés qui se suivent
- . ON_CONTROL_RANGE(BN_CLICKED, 1er elt, dernier elt, nom fonction)
- . exemple :
- . ON_CONTROL_RANGE(BN_CLICKED, IDC_RINFO_BASIC, IDC_RINFO_DET3, maj)
- .
- . ensuite, il faut modifier la fonction : son proto à changé, elle a un nv param !
- . maj() devient : maj(UINT id)
- . on modifie donc le header et le srce...
- . ou id a la valeur du controle !!! (celle qu'on a affectée!!!)
- . on pourra éventuellement faire un switch sur les id avec des case sur vos ID
- . (pas de valeurs numerique dans vos programmes !!!)
- .
- Le defaut est qu'en double cliquant sur le controle, il ne propose toujours de créer une action associée... et ne vas pas à celle que nous avons spécifier
- Et que le ClassWizard ne voit pas ces associations.
- (je ne C po si VC7 a résolu ce bug...)
-
-
- a propos, pour éviter un warning a la compilation si vous ne vous servez pas d'une variable (ici l'id)
- . dans la fonction, (au début par ex) inserez : "nomVar;"
- . ici : id;
-
- . un conseil très général enfin : toujours compiler vos prg en mode level 4
- . Project-Settings-C/C++ - Warning Level ==> 4
- . et éliminez toutes les erreurs & warning... (1 max en tt cas)
- . (mes prg n'en garde aucunes !) donc C tjs faisable ...
- . on détaillera plus tard ici diverses astuces à cet effet.
- .
-
- **********************************************
- news 08/07/04 : un bug VC6 !!!
- . si on inclu plsr prj ds le mm esp de travail
- . et qu'on le supprime,
- . (ça peut servir à copier des ctrl de boite de dialogue d'autres prj)
- . les classes de celui supprimé reste tjs accessibles...
- . pour la completion...
- . le dsw doit garder un ersatz
- **********************************************
- news 17/07/04 : utilisation de controles à l'intérieurs d'une boite à onglet
- lorsque l'on intègre des fenetres dans une boite à onglet au sein d'une boite de dialogue, les controles , zappages par tab & raccourcis ne sont pas accessible => les intégrer avec l'option control sur chacune des fenêtre filles... ()
-
- Rq: ces fenetres filles sont de style Child Non Bordered
-
- Bug possible : si des valeurs d'ID (cf.ressources.h) de la mere & la fille st identiq, platage lors de la sélection
- résolution : changer les valeurs (cf + haut...)
-
-
- **********************************************
- news 17/07/04 - 2 : réorganisation de controle au sein d'une fenetre
-
- on peut reprendre en cours l'ordre grace à CTRL+clic sur l'élément d'ordre juste inférieur à celui voulu
-
-
- **********************************************
- **********************************************
-
-
- Voilà pour aujourd'hui,
-
- .
pour les boites de dialogues, (RessourceView)
Pour changer les numeros d'ID des controles
(si vous ne voyez pas l'intéret, lisez la suite...)
.
. vous savez afficher l'ID de tous les controles d'une boite de dialog:
. . Clic droit - Propriete
. Ces ID sont des constantes définies dans resource.h
. . #define ID 123
. . ou ID est votre identifiant et 123 sa valeur numérique
. Un moyen simple de changer sa valeur depuis l'interface graphique consiste à prendre la fenetre de propriété et après le nom de l'ID, inscrire "=321"
le controle aura donc toujours le meme nom mais ce dernier vaudra 321.
Rq : pensez à respecter les plages de valeurs specifiez
sinon, ça va vite etre le wyyyy !!!
Changer cette valeur est util pour utiliser une fonctionnalité de controle très pratique:
Dans mon cas concret, tous les boutons radio d'une boite de dialogue devaient appeler une fonction de mise a jour 'maj()'
auparavant , j'affectait une action a chacun des boutons appelant maj
maintenant, ça se fait en 3 lignes:
. au préalable, il faut que nos différents identifiants aient des nombres successifs. (voir ci dessus & faire les modifs nécessaires)
. ensuite, modifions la MESSAGE_MAP de notre boite de dialogue:
. .
. . BEGIN_MESSAGE_MAP(CChoixInfor, CDialog)
. . . //{{AFX_MSG_MAP(CChoixInfor)
. . . ... //code éventuel inséré par le wizard... -Nono
. . . //}}AFX_MSG_MAP
. . END_MESSAGE_MAP()
. Il faut insérer un code dans cette section mais a l'extérieur de la section du wizard:
. .
. .
. . BEGIN_MESSAGE_MAP(CChoixInfor, CDialog)
. . . //{{AFX_MSG_MAP(CChoixInfor)
. . . ... //code éventuel inséré par le wizard... -Nono
. . . //}}AFX_MSG_MAP
. . . ... // notre code
. . END_MESSAGE_MAP()
. .
. on va affecter un controle à l'ensemble des éléments désirés qui se suivent
. ON_CONTROL_RANGE(BN_CLICKED, 1er elt, dernier elt, nom fonction)
. exemple :
. ON_CONTROL_RANGE(BN_CLICKED, IDC_RINFO_BASIC, IDC_RINFO_DET3, maj)
.
. ensuite, il faut modifier la fonction : son proto à changé, elle a un nv param !
. maj() devient : maj(UINT id)
. on modifie donc le header et le srce...
. ou id a la valeur du controle !!! (celle qu'on a affectée!!!)
. on pourra éventuellement faire un switch sur les id avec des case sur vos ID
. (pas de valeurs numerique dans vos programmes !!!)
.
Le defaut est qu'en double cliquant sur le controle, il ne propose toujours de créer une action associée... et ne vas pas à celle que nous avons spécifier
Et que le ClassWizard ne voit pas ces associations.
(je ne C po si VC7 a résolu ce bug...)
a propos, pour éviter un warning a la compilation si vous ne vous servez pas d'une variable (ici l'id)
. dans la fonction, (au début par ex) inserez : "nomVar;"
. ici : id;
. un conseil très général enfin : toujours compiler vos prg en mode level 4
. Project-Settings-C/C++ - Warning Level ==> 4
. et éliminez toutes les erreurs & warning... (1 max en tt cas)
. (mes prg n'en garde aucunes !) donc C tjs faisable ...
. on détaillera plus tard ici diverses astuces à cet effet.
.
**********************************************
news 08/07/04 : un bug VC6 !!!
. si on inclu plsr prj ds le mm esp de travail
. et qu'on le supprime,
. (ça peut servir à copier des ctrl de boite de dialogue d'autres prj)
. les classes de celui supprimé reste tjs accessibles...
. pour la completion...
. le dsw doit garder un ersatz
**********************************************
news 17/07/04 : utilisation de controles à l'intérieurs d'une boite à onglet
lorsque l'on intègre des fenetres dans une boite à onglet au sein d'une boite de dialogue, les controles , zappages par tab & raccourcis ne sont pas accessible => les intégrer avec l'option control sur chacune des fenêtre filles... ()
Rq: ces fenetres filles sont de style Child Non Bordered
Bug possible : si des valeurs d'ID (cf.ressources.h) de la mere & la fille st identiq, platage lors de la sélection
résolution : changer les valeurs (cf + haut...)
**********************************************
news 17/07/04 - 2 : réorganisation de controle au sein d'une fenetre
on peut reprendre en cours l'ordre grace à CTRL+clic sur l'élément d'ordre juste inférieur à celui voulu
**********************************************
**********************************************
Voilà pour aujourd'hui,
.
Conclusion
Je pense faire évoluer cet article en fonction de l'avancement de mes découvertes, de vos msg et +++
Peut-etre que la norme associée a MétaProg se vera augmentée d'une section spécifique à Visual,
@+ très bientot, & merci pour vos contribution...
Bruno CELLE.
Historique
- 13 juillet 2004 17:38:09 :
- news 08/07/04 : un bug VC6 !!!
news 17/07/04 : utilisation de controles à l'intérieurs d'une boite à onglet
news 17/07/04 - 2 : réorganisation de controle au sein d'une fenetre
- 19 juillet 2004 15:46:44 :
- Bug amenée par les onglets + résolution...
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
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 SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
RE : SAC A DOS RE : SAC A DOS par hadjkaddour
Cliquez pour lire la suite par hadjkaddour
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
|