I want to be able to add tabs dyanmicly to the tab control during program operation, I will not know witch tabs or in what order they will need to be added.
I tried solving this problem by assigning an index to each tab so I could add and remove them by useing there index however If I have tabs 1,2 and 3 on a form and 1 is removed then 2 becomes 1 and 3 becomes 2. This messess things up.
To solve the probelm I want to identify the tabs by there names. So I added a "add tab by name" and "remove tab by name" meathod.
int CappDlg::DeleateTabByName (char name)
CurTab.mask = TCIF_TEXT;
int num = SubMen.GetItemCount();
for ( cout = 0 ; cout <= num ; cout++)
BOOL fail = SubMen.GetItem ( cout , &CurTab );
if ( fail = FALSE )
if ( CurTab.pszText == name)
SubMen.DeleteItem ( cout );
return 1; // 1 == succses
return 0; // 0 == failure
return -1; // -1 means not implemented
int CappDlg::addTabByName (char name)
TabCtrlItem.mask = TCIF_TEXT;
TabCtrlItem.pszText = name;
SubMen.InsertItem ( 1 , &TabCtrlItem );
return 1; // 1 == succsess
The add tab by name function works correcly but the remove tab by name tab does not. Why does the remove tab by name function fail to work?
I tried debuging and I find that CurTab's sting value is bad, it says that the pointer is invalied. I don't see how this could be however becuse the GetItem meathod returns true.
I have no idea why thid does not work but it might have something to do with the invalid string in CurTab.