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 : Sélectionner tout - Visualiser dans une fenêtre à part class CDlgFormDyn : public CDialog
Je n'utilise pas de "view" car je dois intégrer ceci dans un module déjà existant n’ayant pas cette spécificité.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 BOOL CDlgFormDyn::OnInitDialog() { CDialog::OnInitDialog(); m_tab_ongl = new CTabCtrl(); m_tab_ongl->Create(TCS_TABS,CRect(5,70,950,600),this,1); m_tab_ongl->ShowWindow(SW_SHOW); test() ; UpdateData(FALSE); return TRUE; } void CDlgFormDyn::test() { CComboBox* cbBox; CButton* cbt = new CButton(); CRect rect; TC_ITEM TabItem; TabItem.mask = TCIF_TEXT | TCIF_IMAGE; TabItem.pszText = "onglet3"; // 2 facons de créer mes onglets m_tab_ongl->InsertItem(0, "onglet1"); m_tab_ongl->InsertItem(1, "onglet2"); m_tab_ongl->InsertItem(2, &TabItem); GetWindowRect(&rect); rect.left = POS_X_DEB; //20 rect.right = rect.left+TAILLE_X; //20+80 rect.top = POS_Y_DEB; //90 rect.bottom = rect.top+TAILLE_Y; //90+20 for(int i=0; i<20; i++) { cbBox = new CComboBox(); if(!cbBox->Create(CBS_DROPDOWNLIST | WS_VISIBLE,rect2,m_tab_ongl,1)) return; // fail to create cbBox->AddString("ma combobox"); cbBox->ShowWindow(SW_SHOW); rect2.left += 100; rect2.right = rect2.left+TAILLE_X; maj_rect(rect2); } } bool CDlgFormDyn::maj_rect(CRect& rect) { if(rect.left > SIZE_MAX_X) { rect.left = POS_X_DEB; rect.right = rect.left+TAILLE_X; rect.top += INCR_Y; rect.bottom = rect.top+TAILLE_Y; return true; } return false; }
Quelqu'un a t il une idée ou a deja été confronté à ce problème ?
Partager