我用MFC属性表模态对话框,当用户点击确定或退出按钮时我希望能够先判断用户填写的内容是否填写完,如果没填写完就提醒用户填写完整,而不是直接退出。就是说怎样在用户点确定或退出时先截取信息判断是否退出。当然如果说再调用一次DoModal()函数可以就再进去属性表对话框的话那就算了,我希望是否显示或隐藏模态对话框是由用户是否想退出来决定。

解决方案 »

  1.   

    在属性页CPorpertyPage里判断OnApply或者处理OnOk,如果没有调用SetModify,那你通过OnOk就可以了,不过最好的方法是在你修改后调用SetModify,然后通过OnApply对内容进行检查
      

  2.   

    对话框的
    OnCancel中判断。
      

  3.   

    那你在退出之前加一些判断,然后
    if(IDYES = MessageBox(m_hWnd, _T("Are you sure?"), _T("Quit"), MB_YESNO|MB_MB_ICONQUESTION))
    {
     // 点击的是Yes按键
    }
    else
    {
     // 点击的是No按键
    }
      

  4.   


    在属性页CPorpertyPage中添加ONOK判断后怎么才能让属性表能在点了确定和退出按钮后不会隐藏呢?
      

  5.   

    点了ONOK后对话框会销毁是因为调用了默认的ONOK函数
    只要你不调用这类默认处理函数就可以了
      

  6.   


    不行,因为在CPropertySheet中找不到ONOK函数,在CPorpertyPage响应ONOK后不管你调不调用默认的ONOK函数CPropertySheet都会退出,这是何解,还有什么别的方法吗?
      

  7.   


    注释掉CPropertyPage::OnOK();也会关闭?
      

  8.   

    没有OnOK也总会有一个确认处理的函数吧
    你通过什么渠道确认操作呢?
      

  9.   

    无非就是重写OnOK和OnCancel两个函数非模态时,或者可以试试拦截退出窗口消息。