CPropertyPage::OnSetActive()和OnKillActive()函数:属性页切换时的处理函数

CPropertyPage::OnKillActive

virtual BOOL OnKillActive();
返回值:
如果数据被成功更新则返回非零值;否则返回0。
说明:
当页不再是活动页时,框架调用此函数。重载这个成员函数来执行指定的数据确认任务。
此成员函数的缺省实现将对属性页中的控件所做的设置拷贝到属性页的成员变量中。如果数据没有被成功地更新,则属于一个对话框数据确认(DDV)错误,该页保持焦点。
在此成员函数成功返回之后,框架将调用此页的OnOK函数。



CPropertyPage::OnSetActive
virtual BOOL OnSetActive();
返回值:
如果成功地激活了此页则返回非零值;否则返回0。
说明:
当用户选择了此页并将其变为活动页时,框架调用这个成员函数。重载此成员函数来执行当一个页被激活时要执行的任务。你的关于这个成员函数的重载应该在做任何其它处理之前调用缺省的版本。
缺省的实现为该页创建窗口(如果在此之前没有创建的话),并使它成为活动页。

 

当在一个主对话框中同时加载几个属性页时,有时候就需要在属性页切换时做一些必要的处理,例如传递数据,在当前激活页使用上一页中的变量或函数。实例代码如下:

BOOL CRealTimeDlg::OnSetActive(void)
{
 CPropertySheet* pParent = (CPropertySheet*) GetParent();//首先获得属性页父窗口指针

//再获得指定属性页指针,其中CDataAnalysisDlg为要进行处理的窗口类
 CDataAnalysisDlg* dataanalysisdlg = (CDataAnalysisDlg*)pParent->GetPage(1);

 dataanalysisdlg->OnKillTimerDatabase();//调用该窗口类中的函数

 return CPropertyPage::OnSetActive();  //这句本来就有,重载
}

你可能感兴趣的:(框架,活动,任务)