小弟刚接触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();
}
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();
}
UpdateData(TRUE);//这句话一点意义都没有
ht[i].data=m_data;//m_data是什么?在哪变化?
ht[i].weight=atoi(m_weight);//我猜m_weight是edit关联的变量,那先要UpdateData(FALSE)之后更新才有效。
edit清空以便再输入//没看到有地方实现了这个功能ps:全部要重写
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();
}
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);
}
{
//将控件上的值取回来存储
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();
}