小弟刚接触VC,现在在做课设计,有关哈夫曼树的!小弟设计一个对话框 ,现界面有一静态文本“请输入第1个元素的权值”,用户可在edit中输入数值,然后按确定!每输入一次,对话框就更新一下,静态文本中的数字加1,edit清空以便再输入。可我搞了好久老不好,这是我的代码,高手们教下我要怎么做
void Two::OnOK() 
{
i=0;
CString s,t;
t.Format("请输入第%d个元素的值:",i+1);
GetDlgItem(IDC_D)->SetWindowText(t);
s.Format("请输入第%d个元素的权值:",i+1);
GetDlgItem(IDC_W)->SetWindowText(s);
ht[i].data=m_data;
ht[i].weight=atoi(m_weight);
UpdateData(TRUE);
i++;
if(i>num1)
CDialog::OnOK();
}

解决方案 »

  1.   

    问题不少哦i=1;//按你的编码,i要做成全局变量才能正常运行。
    UpdateData(TRUE);//这句话一点意义都没有
    ht[i].data=m_data;//m_data是什么?在哪变化?
    ht[i].weight=atoi(m_weight);//我猜m_weight是edit关联的变量,那先要UpdateData(FALSE)之后更新才有效。
    edit清空以便再输入//没看到有地方实现了这个功能ps:全部要重写
      

  2.   

    我在前面有设变量i为全局的了,也有设了数组ht[]; 我是想在每次输入权值跟数值付给ht[i].weight和ht[i].data;m_weight和m_data是两个edit相关变量,updatedata(true)我本意是想每次更新把控件的值付给变量。呵呵,刚学,不知要怎么用,能不能详细点教 下我
      

  3.   

    i = 0;
    void Two::OnOK() 
    {
    UpdateData(FALSE); 
     
    ht[i].data=m_data; 
    ht[i].weight=atoi(m_weight);CString s,t;
    t.Format("请输入第%d个元素的值:",i+1);
    GetDlgItem(IDC_D)->SetWindowText(t);
    s.Format("请输入第%d个元素的权值:",i+1);
    GetDlgItem(IDC_W)->SetWindowText(s);

    i++;
    if(i>num1)
    CDialog::OnOK();
    }
      

  4.   

    赋值前UpdateData()中的参数必须是TRUE;刷新用UpdateData()时参数就要换成FALSE了。
    void Two::OnOK() 
    {
             UpdateData(FALSE);////要刷新出这两个静态文本,用FALSE
    i=0;
    CString s,t;
    t.Format("请输入第%d个元素的值:",i+1);
    GetDlgItem(IDC_D)->SetWindowText(t);
    s.Format("请输入第%d个元素的权值:",i+1);
    GetDlgItem(IDC_W)->SetWindowText(s);
             UpdateData(TRUE);//////////////给变量赋值前用这个TRUE
    ht[i].data=m_data;
    ht[i].weight=atoi(m_weight);
    ///UpdateData(TRUE);//////////不要了
    i++;
    if(i>num1)
    CDialog::OnOK();
             UpdateData(FALSE);
    }
      

  5.   

    i = 0;//在窗口初始化时赋值,不能在下面这个函数中void Two::OnOK() 
    {
    //将控件上的值取回来存储
       UpdateData(FALSE);  
       ht[i].data=m_data; 
       ht[i].weight=atoi(m_weight);//刷新静态文本框
    CString s,t;
    t.Format("请输入第%d个元素的值:",i+1);
    GetDlgItem(IDC_D)->SetWindowText(t);
    s.Format("请输入第%d个元素的权值:",i+1);
    GetDlgItem(IDC_W)->SetWindowText(s);//edit清空以便再输入
       m_data = 0;//这个是int型的吧? 
       m_weight = "";//这个是CString的吧?
    //根据你的变量类型相应修改这两个值,以初始化edit新的显示值
       UpdateData(TRUE);  i++;
    if(i>num1)
    CDialog::OnOK();
    }