|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : décembre 2012 Messages : 7 ![]() |
Bonjour,
J'ai pour but de développer une fenêtre contenant plusieurs onglets qui vont se remplir dynamiquement : Combobox, Label... (nombre d'onglet dynamique aussi). Cette fenêtre a été crée avec l'outil graphique de Visual 6, mais le reste (CTabCtrl pour les onglets et tout ce qu'ils vont contenir) vont être créés par du code au chargement de la fenêtre. Je viens de me faire un petit programme de test afin de construire cette fenêtre. Pourriez vous m'aider pour spécifier à quel onglet va "appartenir" ma ComboBox ? ma classe correspondant a ma fenêtre: Voici une partie de mon code de l’implémentation de cette classe Code :
Quelqu'un a t il une idée ou a deja été confronté à ce problème ? |
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() Paul BacelarDéveloppeur informatique Inscription : février 2005 Messages : 2 651 ![]() |
Pourquoi utiliser directement un CTabCtrl plutôt qu'une CPropertySheet ?
Ci-dessous une référence VS2012 mais je suis quasi certain que cela existait déjà en VC++6. http://msdn.microsoft.com/en-us/library/614xe086.aspx |
|
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Inscription : décembre 2012 Messages : 7 ![]() |
Merci. Donc en gros, mon CTabCtrl devient CPropertySheet et mes différents onglets des CPropertyPage.
Au lieu d'utiliser des "AddItem", j'utilise des "AddPage". Par contre j'ai un pointer null lors du create. Code :
|
||
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() Paul BacelarDéveloppeur informatique Inscription : février 2005 Messages : 2 651 ![]() |
Je pense qu'il faut fournir lID du template associé à chaque CPropertyPage avant de créer la PropertySheet.
L'assert doit d'indiquer, directement ou indirectement la chose à initialiser avant d'utiliser la méthode où l'assert t'engueule. |
|
|
00
|
|
|
#5 | ||||||
|
Invité de passage
![]() Inscription : décembre 2012 Messages : 7 ![]() |
oui le null pointer exception vient bien de cette fonction:
Code :
Code :
Code :
|
||||||
|
|
00
|
|
|
#6 |
|
Expert Confirmé Sénior
![]() Paul BacelarDéveloppeur informatique Inscription : février 2005 Messages : 2 651 ![]() |
Une propertypage, c'est un peu comme une boite de dialogue, vous devez donner un template pour créer correctement les contrôles qu'elle doit contenir.
|
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : décembre 2012 Messages : 7 ![]() |
Je comprends tout a fait ce principe par contre je ne vois pas à quel moment doit ton lui fournir ce template. Comme je fais une construction dynamique, comment dois je lui de dire quel est son template ?
|
|
|
00
|
|
|
#8 |
|
Expert Confirmé Sénior
![]() Paul BacelarDéveloppeur informatique Inscription : février 2005 Messages : 2 651 ![]() |
C'est le genre de question que je règle en lisant les sources des MFC puis en regardant la documentation pour vérifier que les moyens détectés dans les sources sont "documentés".
Mais je n'ai pas vos MFC. Donc, en gros, le flag "PSP_DLGINDIRECT" devrait être un bon axe de recherche. http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx |
|
|
00
|
|
|
#9 | ||||||
|
Invité de passage
![]() Inscription : décembre 2012 Messages : 7 ![]() |
Merci pour tes conseils.
Dans mon projet, j'utilise une CDialog que j'ai crée de facon "graphique" via Visual6. Voici sa definition dans le fichier .rc du projet associé Code :
Ensuite j'ai une classe qui herite de CDialog qui correspond à la fenetre qui va contenir par la suite mon CPropertySheet Code :
j'implemente cette classe Code :
faut il que je crée une classe héritant de CPropertyPage dont l'interface graphique sera vide et complétée dynamiquement par la suite ? Ou seulement un objet CPropertyPage crée a la volé sur lequel ensuite j'ajoute mes différents CStaic, Combobox... suffit ? |
||||||
|
|
00
|
|
|
#10 | |
|
Expert Confirmé Sénior
![]() Paul BacelarDéveloppeur informatique Inscription : février 2005 Messages : 2 651 ![]() |
Citation:
|
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com