我想在程序运行时动态的改变PropertySheet(Wizard风格)的标题,可是我发现SetTitle不起作用,我现在该怎么办?

解决方案 »

  1.   

    什么“PropertySheet(Wizard风格)的标题”?
    不懂
      

  2.   

    CPropertySheet dlg;
    ...
    dlg.SetWizardMode();
    ...
    然后我想动态的改变标题栏的标题,如何做?
      

  3.   

    每个CPropertyPage的继承类都得用SetTitle
      

  4.   

    在CPropertyPage的继承类中这样用
    CPropertySheet* p = (CPropertySheet*)GetParent();
    p->SetTitle("XXX");
    我用过,一定可以
      

  5.   

    toolscreator(toolscreator)兄:
      我是在CPropertyPage类的OnSetActive()中加入以上代码的,但是依然没有任何效果.程序总是采用模板的标题来作为向导框的标题.
      你在向导框模式下成功过吗?急.
      

  6.   

    看,像这样:
    CPropertySheet pps;
    CPpBase pb;   //是个propertypage
    CPpMore pm;   //是个propertypage
    pps.AddPage(&pb);
    pps.AddPage(&pm);
    pps.SetTitle("my property test");
    pps.DoModal();
      

  7.   

    jszj(老板说mis部不是赚钱的部门):
     如果加上pps.SetWizardMode();这一句,
     SetTitle()似乎就不起作用了.
      

  8.   

    在OnWizardBack()和OnWizardNext()处理.
      

  9.   

    重载CPropertyPage::OnWizardNext,添加AfxGetMainWnd()->SetWindowText("XXX");并且将return CPropertyPage::OnWizardNext();改为return 1
      

  10.   

    CPropertySheet pps;
    CPpBase pb;   //是个propertypage
    CPpMore pm;   //是个propertypage
    pps.AddPage(&pb);
    pps.AddPage(&pm);
    pps.SetTitle("my property test");
             pps.SetWizardMode();
    pps.DoModal();
    然后,比如在第二步(CPpMore)中加一个按钮,在它的click里写下边语句:
         this->GetParent()->SetWindowText("abc");
    则,到这一步(第二步)的时候,点你加入的按钮,那么它的标题将变成"abc"=============================
    我已经测试过了,是可以的,如果你那里出现什么问题,再问
      

  11.   

    嘿,我也有个问题,和上边的问题差不多:
    我不能修改选项卡上的标题!!
    比如在第二步中的按钮的click中,我要改变第二个选项卡上的标题(不是对话框上的标题),用
    this->SetWindowText("new caption");
    语句无效,不知怎地?
      

  12.   

    jszj(老板说mis部不是赚钱的部门) :
    um,我想事情是这样的.
    在wizard模式下,SetTitle和SetWindowText都是可以工作的,但问题出在
    CPropertyPage::OnSetActive()这个函数上,你只要调用他,他就会用模板的标题覆盖你原来的标题.对于你的例子,我猜测可能有这样的情况:在你按动按钮改完标题后,退到上一页,再回到此页,标题应该又改回去了.
    要想OnSetActive中改标题,一种方法是象demetry(大松) 所作的,不调用CPropertyPage::OnSetActive(),另一种方法是修改CTabCtrl,
    CTabCtrl *pTab=GetParent()->GetTabCtrl();
    ...
    pTab->SetItem(...)
    这种我已经试验成功了.---------
     jszj(老板说mis部不是赚钱的部门)
    修改选项卡上的标题,可以通过GetTabCtrl()得到选项卡控件,然后通过setitem来改写.
      

  13.   

    是在什么地方调用CPropertyPage::OnSetActive()的?其实在加入了SetWizardMode()函数后,tabctrl的工作过程是这样的:
    按照加入的先后顺序,首先显示第一个页面,在点下一个的时候,就显示第二个页面,依次向下
    点上一页的时候就显示前一页,这和点下一页是一样的,只是一个是向前,一个是向后
    它们的共同点就是:这些加入的页面,都处在一个共同的对话框中,即它们有一个共同的父窗口,在显示一个加入的页面的时候,这个页面就把自己的标题设成是父窗口的标题,然后,自己隐葳了标题栏。在父窗口中,有系统自己加入的几个按钮,比如"上一步"、"下一步"、"取消"等等