我现在在做一个界面 继承了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.请教如何不关闭窗口,继续进行输入操作???
然后添加了 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.请教如何不关闭窗口,继续进行输入操作???
我现在把数据检查放到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()都运行不到 ,
求教!!!
原因是CPorpertyPage没有被激活过的 不会执行其OnApply()方法所以在CPorpertySheet初始化的时候 先对所有的Page进行遍历
然后就OK了 谢谢大家,结了 给分