给你一个char buffer[];
fprintf();
SetDlgItemText();
明白了吗?

解决方案 »

  1.   

    如果这样,就要改变EDIT  BOX的属性,让它可以接受数字以外的字符。可是这样我担心用户会输入出错。有没有能够不改变控件只接受数字的属性的办法?
      

  2.   

    构造一个CEdit的子类,子类化你的edit box
    再在你的子类中处理WM_CHAR消息,只接收0-9 ,a-f
      

  3.   

    好像没有...
    要不自己写个CMyEdit派生类,过滤WM_CHAR消息:
    void CMyEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
    {
          if((nChar >= 97 && nChar <= 102) ||
              (nChar >= 65 && nChar <= 70)  ||
              (nChar > = 48 && nChar <= 57))
             CEdit::OnChar(nChar, nRepCnt, nFlags);
          else
                      return;
    }
    然后在CDialog的AppWizard->Member Variables将对应ID的变量类型改成 CMyEdit就成了
      

  4.   

    补充:
    不用子类化,在Dialog的AppWizard->Member Variables页上直接选Edit框的ID,然后点Add Variable,Categroy选中Control,Variables Type选CMyEdit,然后取个名OK,编译就可以了。
      

  5.   

    真是一波未平,一波又起。因为这里的功能比较简单,就是16进制显示数字,再读回来。我就没有用子类化的方法。而是设了一个串,把数字按16进帛格式化到串中,再用UPDATEDATA显示该串。可是读回来的时候发现了新问题。把显示的串读回一个串中,再用atoi转为数字。可是atoi函数
    默认串中的数字是10进制的。结果转化又不对。比如说,数字是3E8,10进制是1000。可是转化后只把开头的3转化了,后面的舍弃了。
      

  6.   

    问题解决啦。其实方法很简单。
    用一个串作EDITBOX的代表。将数字按16进制格式化到串中,再显示。
    读回来的时候,这个数以ASCII码的形式存放在串中,再用SSCANF把数字放到一个INT型中。
    that's ok!
    谢谢诸位大虾了