tomorrow.
"BobF" <rNfOrSePeAzMe@charter.net> wrote in message
news:%23YpfMvOOIHA.6108@TK2MSFTNGP03.phx.gbl...
I've also done this with tabbed pp and ps on a dialog-based app. It
works very well.
Here's the OnInitDialog that does it:
BOOL CVMRDialog::OnInitDialog()
{
CDialog::OnInitDialog();
// load the menu
m_menu.LoadMenu(IDR_MAINFRAME);
SetMenu(&m_menu);
m_menu.EnableMenuItem(ID_CHANNEL_CLOSE, MF_GRAYED);
OnChannelNew(); // adds the initial prop -page-
// create the property -sheet-
m_propsheet.Create(this, WS_CHILD|WS_VISIBLE);
m_propsheet.ModifyStyleEx(0, WS_EX_CONTROLPARENT);
// tighten up the size of the main dialog box
// to fit neatly around the prop pages
CMainDlg* pp = (CMainDlg*)m_propsheet.GetActivePage();
RECT rect;
// no need to call ScreenToClient - we're only using
// values for relative sizing
pp->GetWindowRect(&rect);
// get the tab rect so the tab height can
// be accounted for
CTabCtrl* tcp = m_propsheet.GetTabControl();
RECT trect;
tcp->GetItemRect(0, &trect);
SetWindowPos(NULL,
0,0,rect.left+rect.right,rect.bottom+(trect.bottom-trect.top),
SWP_NOZORDER | SWP_NOMOVE | SWP_NOACTIVATE);
return TRUE;
}
And OnChannelNew (a menu selection):
void CVMRDialog::OnChannelNew()
{
CMainDlg *pnewChannel;
pnewChannel = new CMainDlg(this);
if (pnewChannel != NULL)
{
m_chList.insert(m_chList.end(), pnewChannel);
m_chIter = m_chList.end();
m_propsheet.AddPage(pnewChannel);
m_propsheet.SetActivePage(pnewChannel);
if (m_chList.size() > 1)
m_menu.EnableMenuItem(ID_CHANNEL_CLOSE, MF_ENABLED);
}
else //pnewChannel != NULL
{
AfxMessageBox("New Port Create Failed");
}
}
Hey, neat! But does it look good? I'm not sure how the property sheet
header (the area at the top of each page which has the icon and boldface
subtitle) would look if that was spread across the property sheet child
wndow and not across the entire dialog?
Thanks,
David