怎样在程序中修改属性表中Tab页的标题?

解决方案 »

  1.   

    使用SetWindowText()函数(注意是在你希望变动的那个CPropertyPage中)
      

  2.   

    拿程序来看[email protected]
      

  3.   

    GetTabControl()获得CTabCtrl对象指针
    然后再用CTabCtrl的SetItem()方法
      

  4.   

    我碰到过类似问题,链接如下:
    http://expert.csdn.net/Expert/topic/2186/2186005.xml?temp=.353512以下为实现步骤:1、对CMyPropertySheet类添加一成员函数
    声明
    public:
      void SetPageTitle(int nTabIndex, CString strTitle);
    实现
    void CMyPropertySheet::SetPageTitle(int nTabIndex, CString strTitle)
    {
      CTabCtrl* pTab = GetTabControl();
      ASSERT (pTab);
      TC_ITEM ti;
      char szText[1024];
      ti.mask = TCIF_TEXT;
      ti.pszText = szText;
      ti.cchTextMax = 100;
      VERIFY (pTab->GetItem (nTabIndex, &ti));
      strcpy(szText, strTitle.Left(1023));
      VERIFY (pTab->SetItem (nTabIndex, &ti));
    }2、覆盖PropertySheet类的OnInitDialog
    BOOL CMyPropertySheet::OnInitDialog() 
    {
      BOOL bResult = CPropertySheet::OnInitDialog();
      SetPageTitle(0,"Page One");
      SetPageTitle(1,"Page Two");
      SetPageTitle(2,"Page Three");
      SetPageTitle(3,"Page Four");
      //我在构造函数中向测试程序中追加了四个属性页
        //你根据实现情况适当调用SetPageTitle(...,...);
      return bResult;
    }
      

  5.   

    谢谢各位,我是这样写的,编译通过,运行时出现严重错误。
    /* BOOL CmypropertySheet::OnCreate(LPCREATESTRUCT lp)
    {
                      if(CPropertySheet::OnCreate(lp)==-1)
                          return -1;
    CString str="aaaa";
    TC_ITEM tc;
    tc.mask= TCIF_TEXT;
                  tc.pszText = (LPTSTR)((LPCTSTR)str);
                GetTabControl()->SetItem(0, &tc );  
    return 0;
    }*/
    另:PorpertySheet 有 OnInitDialog()吗?      
      

  6.   

    CPropertySheet没有由于它是CWnd的子类.而CPropertyPage有,因为它是CDialog的子类.请注意,你的方法是要求你在CPropertyPage中做,而不是CPropertySheet中做.
      

  7.   

    CPropertySheet没有由于它是CWnd的子类.而CPropertyPage有,因为它是CDialog的子类.请注意,我的方法是要求你在CPropertyPage中做,而不是CPropertySheet中做
      

  8.   

    SetWindowText()我就是在CPropertyPage中做的,在其OnInitDialog()中使用,可是根本就不能改。