我用VC6的MFC建立了一个基于对话框的程序.当操作者在编辑框中输入一串数字后,不用做任何操作,程序能够自动在其旁边显示另一串数字.后者是前者通过公式运算后得到的.
比如,公式是Y=X*2.  当我在编辑框里输入25时,希望旁边能自动显示50.主要有2个问题不清楚:
1、程序如何知道我输入了25?EN_CHANGE和EN_UPDATE的区别是什么?而当输入2之后,在输入5之前,这两个函数是否也会动作?
2、如何把50显示出来?textout只能显示字符串.SetWindowText不是OnPaint函数.看来只能把50转化为字符串再送textout显示了.但我用下面的方法总出错:
   int i = 2;
    i = i * m_edit;
    CString str;
    str.Format("%d",i);
然后TextOut(100,100,str);
可是显示是"%d",而不是i的内容.

解决方案 »

  1.   

    1. 响应对应Edit的EN_CHANGE。
    2. 显示的话,只要在要显示的地方放一个CStatic控件,把显示内容输出在该控件上就行了。使用CStatic控件做显示输出时,注意要修改“IDC_STATIC”这个默认ID为其他名称。
      

  2.   

    首先要有一个条件来决定输入数字完成吧,比如按下回车键。所以可以处理键盘消息,遇到回车计算输出结果。结果可以用一个静态控件或只读的的编辑控件,简单一些。当然也可以用TextOut()输出。编辑空间可以用SetDlgItemInt()直接输出整数,如果要转换成字符串,你的方法是对的,但是:注意是%而不是%。