把 语句 CPropertyPage::OnOK();屏蔽掉试试看?

解决方案 »

  1.   

    你应该把程序放在ONAPPLY函数中
    BOOL CFirstPropertyPage::OnApply() 
    {
    if (IsWindowVisible())
    {
    if (pos == NULL)
    {
    MessageBox("请选择一个项目");
                            return FALSE;
    }
    else
    {
                             //  正常处理;
    }
    }
    return FALSE;
    // return CPropertyPage::OnApply();//此出屏蔽
    }
    就可以了!
      

  2.   

    这个特性比较奇怪,跟踪后得知,触发ONOK消息时,执行的是ONAPPLY,
    而VC中OnApply函数如下:
    BOOL CPropertyPage::OnApply()
    {
    ASSERT_VALID(this); OnOK();
    return TRUE;//此时返回true,所以无论如何你在你的onok函数怎么写程序都会结束!
    }
      

  3.   

    在DoDataExchange里面校验数据。
    自定义DDX。
      

  4.   

    非常感谢cool29(),我怎么没有想到换个事件呢!真是白活了第一个问己经解决,第二个问题是怎么回事
             COpenSheet cOpenSheet;
    if (cOpenSheet.DoModal() != IDOK)
    {
    return ;
    }         程序运行到这时属性表还没有关闭,怎样才能关闭释放