我现在在做一个界面 继承了CPropertySheet
然后添加了 2 个CPropertyPage,我希望实现点击CPropertyPage中的"确定"按钮后,先进行page页中的数据检查,如果没有问题就顺序执行,如果Page中的数据输入不符合要求,AfxMessageBox 提示,然后继续保留Page和Sheet窗口.
void CXzqhPage::OnOK() 
{
UpdateData(TRUE);
m_strBzmc.TrimLeft();
m_strBzmc.TrimRight();
if (m_strBzmc == "")
{
AfxMessageBox("请输入标准名称!");
return;
} CPropertyPage::OnOK();
}我是这样写的,但是对于Sheet,直接return好像还Sheet的DoModal()继续执行完了,不能停在窗口页面,窗口被关闭,Sheet.DoModal()返回了IDOK.请教如何不关闭窗口,继续进行输入操作???

解决方案 »

  1.   

    Overload OnApply instead of OnOK
      

  2.   

    谢谢大家,不过有点问题还得请教  
    我现在把数据检查放到OnApplay()中处理  
    BOOL CXzqhPage::OnApplay()    
    {  
    UpdateData(TRUE);  
    m_strBzmc.TrimLeft();  
    m_strBzmc.TrimRight();  
    if  (m_strBzmc  ==    "  ")  
    {  
    AfxMessageBox(  "请输入标准名称!  ");  
    return FALSE;  
    }  
     
     return CPropertyPage::OnApplay();  
    }  
    BOOL CXzqhPage2::OnApplay()    
    {  
    UpdateData(TRUE);  
    m_strBzmc.TrimLeft();  
    m_strBzmc.TrimRight();  
    if  (m_strBzmc  ==    "  ")  
    {  
    AfxMessageBox(  "请输入标准名称!  ");  
    return FALSE;  
    }  
     
     return CPropertyPage::OnApplay();  
    }  
     
    但是好像只处理第一个page,第二个Page中的OnApplay不处理,不管第一个Page报不报错,第二个Page中的OnApplay()都运行不到 ,
    求教!!!
      

  3.   

    自己在坛子找了找  解决了 
    原因是CPorpertyPage没有被激活过的 不会执行其OnApply()方法所以在CPorpertySheet初始化的时候 先对所有的Page进行遍历
    然后就OK了 谢谢大家,结了 给分