类VC界面中,左边两个一个为"图层管理"的窗口,一个为"属性页"的View,如同VC的ClassView和SourceView一样;默认显示为图层管理窗口,右边是客户区View;问题在于
双击左边的客户区显示右边的属性页,也就是说改变TabCtrl的次序?int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)//在主窗口创建
{
          ///创建TAB Control
m_TabCtrl.Create(TCS_DOWN|WS_CHILD|WS_VISIBLE,CRect(0,0,100,100),&m_wndLayerBar,ID_TABCTRL);
//
//加了一个图层管理
m_pWndManagerLayer->Create(AfxRegisterWndClass(CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW, AfxGetApp()->LoadStandardCursor(IDC_SIZE), (HBRUSH)GetStockObject(LTGRAY_BRUSH), NULL),
NULL,
WS_CHILD|WS_VISIBLE,
CRect(0,0,100,100), 
&m_TabCtrl, 
ID_LAYERMANAGER);
m_pWndManagerLayer->ModifyStyleEx(0, WS_EX_CLIENTEDGE);
//
//加了一个属性页
m_pPropertyView->Create(AfxRegisterWndClass(CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW, AfxGetApp()->LoadStandardCursor(IDC_CROSS), (HBRUSH)GetStockObject(LTGRAY_BRUSH), NULL),
NULL,
WS_CHILD|WS_VISIBLE,
CRect(0,0,100,100), 
&m_TabCtrl, 
ID_PROPERTY_PAGE); 
m_pPropertyView->ModifyStyleEx(0, WS_EX_CLIENTEDGE);

m_wndLayerBar.EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndLayerBar, AFX_IDW_DOCKBAR_LEFT,CRect(0,0,200,220));

m_TabCtrl.AddPage(m_pWndManagerLayer,"图层管理",IDI_ICON_LAYER);    
m_TabCtrl.AddPage(m_pPropertyView,"属性页",IDI_ICON_LAYER);
m_TabCtrl.UpdateWindow();
}根据王骏先生的示例代码中提供了一个称为CCoolTabCtrl的封装类,我也创建了一个类似的东东.
BOOL CCoolTabCtrl::AddPage(CRuntimeClass* pClass,UINT nIDTemplate, LPCTSTR sText, UINT IconID)
{
CDialog *pDlg = (CDialog*)pClass->CreateObject();
if(pDlg != NULL)
if(pDlg->Create(nIDTemplate,this))
{
CPageItem *pItem;
pItem = new CPageItem();
pItem->m_pWnd = (CWnd*)pDlg;
pItem->m_nStyle = 1;///Dialog
pItem->m_sText = sText;
if(IconID)
pItem->m_hIcon = AfxGetApp()->LoadIcon(IconID);
else
pItem->m_hIcon = NULL;
CRect rect;
GetClientRect(rect);
pDlg->MoveWindow(rect);
m_PageList.AddTail(pItem);
return TRUE;
}
return FALSE;
}
如何让属性页显示呢?请高手指教/////////////////////已在客户区建立了一个双击事件,
void CDigitalMapView::OnDblClickSupermap() 
{
}

解决方案 »

  1.   

    http://www.codeproject.com/property/treepropsheet.asp关键字:Netscape Tree CPropertySheet
      

  2.   

    http://codeguru.com/Cpp/controls/treeview/misc-advanced/article.php/c727/
      

  3.   

    我说错了,是双击右边的客户区,tabctrl
      

  4.   

    说错了,双击右边的客户区,左边的TAB就更换,默认的"图层管理"就更换成"属性页"的view了
      

  5.   

    Tab控件有SetCurSel方法,可以完成你要的功能。老实说,这是基础的东西。贴的代码肯定不是你写的。
      

  6.   

    你用的CCoolTabCtrl,那么对应的函数应该是SetActivePage(int nIndex)。
      

  7.   

    我用m_TabCtrl.SetActivePage(1),但运行后没反应,贴的代码是不是我写的,我看了看是参考了那个温岭电信局的王骏的代码,初学GIS和VC,希望大家多指教