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);
}
}
我想将链表的东西通过编辑框显示出来,可是出错了,怎么办啊
展开
 我来答
zhccsd
2012-12-27 · TA获得超过4042个赞
知道大有可为答主
回答量:1347
采纳率:66%
帮助的人:908万
展开全部
建议这样,添加一个按钮控件,然后双击添加消息函数,把代码放在这里,方便调试。
另外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);的作用是全部的控件,很多时候只想改变其中某个控件
bhtzu
2012-12-27 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4145万
展开全部
首先,不能放在对话框的构造函数中。(可以放在InitDialog里面)
其次,先注释掉while和括号,看看一个显示有没有问题。
编辑框有数据量64k限制,超过了会出错。

哦,你的当前错误可能是链表作为参数造成的吧。。。
用一个对话框类成员变量指针接收链表,不要在标准函数内做参数。
更多追问追答
追问
我建了一个InitDialog,然后把
CString str1 = _T("sdfasdf");
UpdateData(TRUE);
GetDlgItem(IDC_EDIT1)->SetWindowText(str1);
UpdateData(FALSE);放进去,在构造函数里引用InitDialog,怎么还是不行啊,怎么办?谢谢了
追答
你建了一个?这是框架生成对话框自带的函数啊。。。OnInitDialog
有点晕了,先确认几点吧,用的MFC,对话框创建了资源,并通过资源ID生成的类(一般资源中双击对话框),是这样吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式