一个对话框有很多编辑框。按下ok时候如何检测编辑框是否被修改过?或者当编辑框被修改时怎样通知?
求一个简单的办法

解决方案 »

  1.   

    编辑框被修改时会有消息。如果要在按下ok时判断是否修改,可以事先把edit的内容保存在一个string里,按ok时对比。
      

  2.   

    用一组BOOL做dirty flag,在EN_CHANGE中设置
    OnOK中轮循检查
      

  3.   

    用ON_CONTROL_RANGE响应EN_CHANGE
    设一个标志位就够了
      

  4.   

    1 对话框类中定义一个变量
      BOOL bModify;
    2 重载CEdit类,更改OnChange:
    void CMyEdit::OnChange() 
    {
    CMyDialog* dlg;
    dlg = (CMyDialog*)GetParents();
    dlg->bModify = TRUE

    }
      

  5.   

    也就是重载CEdit类的EN_CHANGE事件
      

  6.   

    这个办法可行,但是要修改很多的edit控件,比较麻烦。能不能从对话框的消息处理这部分找到解决办法?
      

  7.   

    这样吧.dlg.h里
    找到灰色注释的
    消息响应函数部分;
    加上
    afx_msg void test();   //test就是针对响应的函数然后在dlg.cpp中
    BEGIN_MESSAGE_MAP(CDiaDlg, CDialog)
    END_MESSAGE_MAP()
    里面加上
    ON_EN_CHANGE(IDC_EDIT1,test)
    ON_EN_CHANGE(IDC_EDIT2,test)
    ON_EN_CHANGE(IDC_EDIT3,test)
    ON_EN_CHANGE(IDC_EDIT4,test)
    ON_EN_CHANGE(IDC_EDIT5,test)
    ON_EN_CHANGE(IDC_EDIT6,test)
    ID分别是你想控制的编辑框的资源ID...
    然后填写你的test函数..
    void CDiaDlg::test()
    {
    AfxMessageBox("haha");
    }这样还不满意的话,我就没什么办法了....