Een van mijn classes heeft als basisclasse CTreeView. Deze classe heb ik genoemd: CLeftView. In deze classe heb ik in de onInitialUpdate() staan:
wat er gebeurd, is er wordt een root item aangemaakt met daaronder 1 subitem. Deze heeft een dynamisch aantal items. AddItem is een zelfgemaakte functie welke een TVITEM aanmaakt en toevoegd aan de TreeCtrl.
De laatste regel (GetTreeCtrl().SelectItem(hPrograms);) hoort de functie OnSelchanging(...) te triggeren. Dit doet die ook wel, maar twee keer?! Dit levert een probleem op voor mijn programma. In de functie OnSelchanging staat alleen een AfxMessageBox("OnSelchanging"). Daar kan dus weinig mee mis gaan.
Als ik de GetTreeCtrl().SelectItem(hPrograms); weg haal, dan wordt OnSelchanging helemaal niet aangeroepen.
Waar zou mijn fout kunnen zitten?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| void CLeftView::OnInitialUpdate(){
CTreeView::OnInitialUpdate();
HTREEITEM hRoot, hPrograms;
hRoot = AddItem("Root", TVI_ROOT, 0, 0, 0);
hPrograms = AddItem("Sub", hRoot, 1, 1, 1);
// invullen van iMax en het vullen van een lijst(list)
for (int i=0; i<iMax; i++){
AddItem(list[i].strName, hPrograms, 2, 2, 2);
}
//expand the root
GetTreeCtrl().Expand(hRoot, TVE_EXPAND);
GetTreeCtrl().Expand(hPrograms, TVE_EXPAND);
GetTreeCtrl().SelectItem(hPrograms);
} |
wat er gebeurd, is er wordt een root item aangemaakt met daaronder 1 subitem. Deze heeft een dynamisch aantal items. AddItem is een zelfgemaakte functie welke een TVITEM aanmaakt en toevoegd aan de TreeCtrl.
De laatste regel (GetTreeCtrl().SelectItem(hPrograms);) hoort de functie OnSelchanging(...) te triggeren. Dit doet die ook wel, maar twee keer?! Dit levert een probleem op voor mijn programma. In de functie OnSelchanging staat alleen een AfxMessageBox("OnSelchanging"). Daar kan dus weinig mee mis gaan.
Als ik de GetTreeCtrl().SelectItem(hPrograms); weg haal, dan wordt OnSelchanging helemaal niet aangeroepen.
Waar zou mijn fout kunnen zitten?
Ik zeg maar zo, ik zeg maar nix. dan zeg ik al veel te veel.