一个属性表 CPropertySheet 
三个属性页 CPropertyPage page1;
           CPropertyPage page2;
           CPropertyPage page3;现在在每个属性页中都有一个CCheckListBox(复选框样式),都有一个结构变量保存用户选择的复选框。如何当用户改变标题时将选中的复选框写入结构变量中??
说明:发现不能用OnCommand函数,调用太频繁
      重载page1中的OnApply函数,如何将page2/page3中的变化加进去?

解决方案 »

  1.   

    see the sample below, useful :http://www.codeproject.com/property/hacking_the_cpropertyshee.asp
      

  2.   

    I have read the article above carefully, howerer I found nothing available.
    你再帮我看看吧,thanks!
      

  3.   

    我可能说得不是很清楚:
    一个属性表 CPropertySheet 
    三个属性页 CPropertyPage page1;
               CPropertyPage page2;
               CPropertyPage page3;现在在每个属性页中都有一个CCheckListBox(复选框样式),都有一个结构变量m_struTemp保存用户是否选中了复选框。我应该在属性页的哪个函数中查询CCheckListBox,将响应数据写入结构变量呢?thanks!
      

  4.   

    在page2,page3中也重载OnApply函数。
      

  5.   

    你想错了吧?三个属性页是不能用
    CPropertyPage page1,page2,page3; 
    来定义的,否则这三页不就一样了嘛!应该是
    CPage1: public CPropertyPage
    CPage2: public CPropertyPage
    CPage3: public CPropertyPage然后各自重载OnApply().再:
    CPage1 page1;
    CPage2 page2;
    CPage3 page3;
      

  6.   

    你想错了吧?三个属性页是不能用
    CPropertyPage page1,page2,page3; 
    来定义的,否则这三页不就一样了嘛!应该是
    CPage1: public CPropertyPage
    CPage2: public CPropertyPage
    CPage3: public CPropertyPage然后各自重载OnApply().再:
    CPage1 page1;
    CPage2 page2;
    CPage3 page3;
      

  7.   

    属性页的特性是在更换标签时保存上一页面内容。
    强烈建议:class CBasePP :public CPropetyPage{};
     然后  class CPage1: public CBasePP    
           ....
    //
       在CBasePP里重载OnSetActive();//此函数即用户点击标签更换页面会触发行为,然后在函数内处理上一页面内容,如得到上一页面的选项啊...
      

  8.   

    to zark:
    知道你的意思了,是我写错了。我已经将APPLY按扭去掉了,因此重载apply函数无用了。to sizhi:
    好象不好办啊。我现在已经为每个属性页重载了OnOK()函数,一切搞定了。
    唉,简单的很,可困了几天。