Hi
Well, it depends what you mean by unacceptable ...
It is in fact quite powerfull and you can do a lot of things with it.
In fact, You can add dialog box for every tab very easily.
Like this:
First egt a pointer to the TabCtrl
CWnd* pWndTab = ( CWnd*) GetDlgItem( IDC_DATA_TAB);
Then add the dialogboxes:
// Create Child Dialog Boxes
m_LogDlg.Create( IDD_LOG_DLG, pWndTab);
m_NewLogDlg.Create( IDD_NEW_LOG_DLG, pWndTab);
Then insert Item in TabCtrl:
TCITEM tc = {0};
tc.cchTextMax = strlen( "Log"

;
tc.pszText = "Log";
tc. mask = TCIF_TEXT | TCIF_PARAM;
tc.lParam= &m_LogDlg;
InsertItem( 0, &tc);
Then you handle the OnSelChange to show/hide the dialog boxes:
I assumed that you maintain a member called m_nCurSel that stored the current tab index ...
// Hide Current Selection
TCITEM tc;
tc.mask = TCIF_PARAM ;
GetItem( m_nCurSel, &tc);
CWnd* pWnd = (CWnd*) tc.lParam;
HWND hwnd = pWnd->GetSafeHwnd();
::ShowWindow( hwnd, SW_HIDE);
m_nPrevSel = m_nCurSel;
// Get Current Selection
m_nCurSel = GetCurSel();
// Get Pointer to Window
tc.mask = TCIF_PARAM ;
GetItem( m_nCurSel, &tc);
pWnd = (CWnd*) tc.lParam;
hwnd = pWnd->GetSafeHwnd();
::ShowWindow( hwnd, SW_SHOW);
Here you see the interest of storing the address of the dialogbox in the param member of the TCITEM structure.
It's just a small exemple that show that you can do almost what you want. You can also enable/disable the tas, change the background color, the text color, ...
Good luck
Thierry
EMail: Thierry.Marneffe@swing.be