我界面上有一个属性页,我的结构如下:class CViewPropertySheet : public CPropertySheetclass CViewPropertyPage : public CPropertyPageclass CMyFormView : public CPropPgFormView
class CPropPgFormView : public CFormViewclass CPropPage1 : public CViewPropertyPage(第一个页面)class CPropPage2 : public CViewPropertyPage(第二个页面)class CPropPage3 : public CViewPropertyPage(第三个页面)class CPropPage4 : public CViewPropertyPage (第四个页面)
我这个属性页有四个页面组成,我想在点击第一个属性页的标签的时候,对这个对话框进行一些操作。在第三个标签页不显示的时候做一些操作,请问这个怎么处理?应该用什么事件?这四个页面是四个对话框,我的想法是,在这个对话框获得焦点,或者失去焦点的时候进行操作,但是根本不执行获得焦点或者得到焦点的代码
void CPropPage4::OnKillFocus(CWnd* pNewWnd) 
 {
CViewPropertyPage::OnKillFocus(pNewWnd);
  GetDlgItem(IDC_EDIT1)->SetWindowText("");
  GetDlgItem(IDC_EDIT2)->SetWindowText("");
GetDlgItem(IDC_EDIT3)->SetWindowText("");
GetDlgItem(IDC_EDIT4)->SetWindowText("");
  GetDlgItem(IDC_EDIT_START_T)->SetWindowText("");
  GetDlgItem(IDC_EDIT_END_T)->SetWindowText("");
GetDlgItem(IDC_EDIT_T)->SetWindowText("");
UpdateData(TRUE);
 
 
 }

解决方案 »

  1.   

    应该在这4个属性页的父窗口获取SelectChange或者SelectChanging的消息来处理吧
      

  2.   

    没太搞清楚你是什么问题。
    在第三个标签页不显示的时候做一些操作,是什么意思呢?
    在第4页KillFocus的时候发生了什么?
      

  3.   


    BOOL CViewPropertyPage::OnSetActive() 
    {
    CMyFormView* pView =  (CMyFormView*)GetParent()->GetParent();
        
        if (pView->m_PropSheet.GetActiveIndex()==0)
        {
            
            CPropPage1* cp1;
            cp1=(CPropPage1 *)pView->m_PropSheet.GetPage(0);
            cp1->GetDlgItem(IDC_LIST2)->ShowWindow(SW_HIDE);
            cp1->GetDlgItem(IDC_MONTHCALENDAR1)->ShowWindow(SW_SHOW);
        } return CPropertyPage::OnSetActive();
    }这样就可以了,谢谢各位的回答,结贴
      

  4.   

    你想实现的是几个属性页之间切换和初始化吗!??
        3楼的办法还不错呢!
    然后再SelectChange处理函数里面加上对对应的页面的初始化函数就可以实现你需要的效果了。