具体问题是这样的:
    一个基于对话框的VC程序。界面上有很多编辑框,关联了int变量,用来定时(500毫秒)显示某些数据的实时值,也就是说我在OnTimer()函数里把值赋给int变量后,最后要UpdateData(FALSE)一下。但是问题出来了:
    界面还有一个编辑框是用来设置数据的(设置框),也关联了int变量。这样,当我正在输入数据时,遇到UpdateData(FALSE),该设置框中的数据就被刷回了上一次的值,我无法进行设置数据的操作。
    盼望高手帮忙解答一下!!!

解决方案 »

  1.   

    你可以根据条件来是否决定调用UpdateData(FALSE);比如你当前正在操作编辑框,即当前编辑框得到焦点的情况下,是不能调用UpdateData的
      

  2.   

    那你就不要用UpdateData(FALSE);而是直接使用SetDlgItemInt()直接设置指定要设置的值
      

  3.   

    CDataExchange dx(this, FALSE);
    DDX_Text(pDX, IDC_EDIT_SCORE1, m_nScore1); //这里直接复制你想要更换编辑框值的DDX宏,可以设置多个
      

  4.   

    既然UpdateData是调用DDX一次性更新界面。你希望更新一部分那显然不能用UpdateData了。听3楼部长的话。
      

  5.   

    请问你这里m_nScore1是什么类型?可以是int或float吗?
    还有CDataExchange dx(this, FALSE);这一句有什么作用?
    高手能不能说详细一点?这样处理的话我是不是就能保留以前定义的int类型变量而且也不用再调用UpdateData(FALSE)了???
      

  6.   

    其实这个方法也不错,不过你的语法有点不对,改为:
    CDataExchange dx(this, FALSE);
    DDX_Text(&dx, IDC_EDIT_SCORE1, m_nScore1); //这里直接复制你想要更换编辑框值的DDX宏,可以设置多个
    这样可以不用调用UpdateData(FALSE)函数了,我也可以自如设置编辑框中的值不用担心它被意外刷新。