mfc 在编辑框中显示消息
Dialog_allinfo::Dialog_allinfo(CWnd*pParent/*=NULL*/,student_list*s_list):CDialogEx(D...
Dialog_allinfo::Dialog_allinfo(CWnd* pParent /*=NULL*/,student_list * s_list)
: CDialogEx(Dialog_allinfo::IDD, pParent)
{
info_student * head = s_list->gethead();
CString str1,str2;
if(head != NULL)
{
while(head->get_next() != NULL)
{
str2.Format(_T("%s %s %d %d %d %d %d %d %lf"),head->get_name(),head->get_num(),head->get_cp(),head->get_st(),head->get_mt(),head->get_mz(),head->get_en(),head->get_pe(),head->get_average());
str1 += str2;
head = head->get_next();
}
UpdateData(TRUE);
GetDlgItem(IDC_EDIT1)->SetWindowText(str1);
UpdateData(FALSE);
}
}
我想将链表的东西通过编辑框显示出来,可是出错了,怎么办啊 展开
: CDialogEx(Dialog_allinfo::IDD, pParent)
{
info_student * head = s_list->gethead();
CString str1,str2;
if(head != NULL)
{
while(head->get_next() != NULL)
{
str2.Format(_T("%s %s %d %d %d %d %d %d %lf"),head->get_name(),head->get_num(),head->get_cp(),head->get_st(),head->get_mt(),head->get_mz(),head->get_en(),head->get_pe(),head->get_average());
str1 += str2;
head = head->get_next();
}
UpdateData(TRUE);
GetDlgItem(IDC_EDIT1)->SetWindowText(str1);
UpdateData(FALSE);
}
}
我想将链表的东西通过编辑框显示出来,可是出错了,怎么办啊 展开
2个回答
展开全部
建议这样,添加一个按钮控件,然后双击添加消息函数,把代码放在这里,方便调试。
另外UpdateData();这个东西不知道你理解没有,如果你的编辑框已经绑定了valve变量了的话,这个程序运行结果应该是空的编辑框
首先任何控件在绑定了valve变量的情况下UpdateData();才会生效,假设编辑框绑定一个变量m_str
那么UpdateData(TRUE);这句话的作用是把当前(运行状态时)编辑框中的内容赋值给m_str,而
UpdateData(FALSE);的作用是把m_str的值在编辑框中显示出来,所以如果有这样的语句:
UpdateData(TRUE);
UpdateData(FALSE);
运行结果就是编辑框内容没有一点变化
而SetWindowText()的作用是立即改变编辑框的内容,不需要配合UpdateData();
如果仅仅是想改变编辑框的值,两种方法:
.....//准备数据
m_str=_T("123");
UpdateData(false);此方法仅限绑定了变量的
另一种方法就是
CString s;
...//准备数据
GetDlgItem(IDC_EDIT1)->SetWindowText(s);
推荐后者,因为UpdateData(false);的作用是全部的控件,很多时候只想改变其中某个控件
另外UpdateData();这个东西不知道你理解没有,如果你的编辑框已经绑定了valve变量了的话,这个程序运行结果应该是空的编辑框
首先任何控件在绑定了valve变量的情况下UpdateData();才会生效,假设编辑框绑定一个变量m_str
那么UpdateData(TRUE);这句话的作用是把当前(运行状态时)编辑框中的内容赋值给m_str,而
UpdateData(FALSE);的作用是把m_str的值在编辑框中显示出来,所以如果有这样的语句:
UpdateData(TRUE);
UpdateData(FALSE);
运行结果就是编辑框内容没有一点变化
而SetWindowText()的作用是立即改变编辑框的内容,不需要配合UpdateData();
如果仅仅是想改变编辑框的值,两种方法:
.....//准备数据
m_str=_T("123");
UpdateData(false);此方法仅限绑定了变量的
另一种方法就是
CString s;
...//准备数据
GetDlgItem(IDC_EDIT1)->SetWindowText(s);
推荐后者,因为UpdateData(false);的作用是全部的控件,很多时候只想改变其中某个控件
展开全部
首先,不能放在对话框的构造函数中。(可以放在InitDialog里面)
其次,先注释掉while和括号,看看一个显示有没有问题。
编辑框有数据量64k限制,超过了会出错。
哦,你的当前错误可能是链表作为参数造成的吧。。。
用一个对话框类成员变量指针接收链表,不要在标准函数内做参数。
其次,先注释掉while和括号,看看一个显示有没有问题。
编辑框有数据量64k限制,超过了会出错。
哦,你的当前错误可能是链表作为参数造成的吧。。。
用一个对话框类成员变量指针接收链表,不要在标准函数内做参数。
更多追问追答
追问
我建了一个InitDialog,然后把
CString str1 = _T("sdfasdf");
UpdateData(TRUE);
GetDlgItem(IDC_EDIT1)->SetWindowText(str1);
UpdateData(FALSE);放进去,在构造函数里引用InitDialog,怎么还是不行啊,怎么办?谢谢了
追答
你建了一个?这是框架生成对话框自带的函数啊。。。OnInitDialog
有点晕了,先确认几点吧,用的MFC,对话框创建了资源,并通过资源ID生成的类(一般资源中双击对话框),是这样吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询