UpdateWindow(); //这个地方我写UpdateData(true);也不行,为什么?

我在一个窗口上添加了一个编辑框,单击按钮在编辑框中显示text中内容,只能显示一次,第二次点击按钮
就显示不了了。
void two::OnOK() 
{
// TODO: Add extra validation here
UpdateData(true);
CString tt;
char name[100];
freopen("test1.txt","r",stdin); 
cin>>name;
tt.Format(name);
while(cin>>name)
{
tt+="\r\n";
tt+=name;
}
SetDlgItemText(IDC_EDIT1,tt);
fclose(stdin);
UpdateWindow(); //这个地方我写UpdateData(true);也不行
}

尚方宝剑之说
浏览 185回答 2
2回答

catspeake

将两处的cin>>name; 改为 gets(name)就可以了具体为什么不太清楚,可能是这个cin在第二次被破坏了吧调了一晚上了,您这个问题厉害啊代码如下:void CCTest6DlgDlg::OnOK() {CString tt;tt = "";char name[100];memset(name,0,100);FILE *fp;fp = freopen("ReadMe.txt","r",stdin); if (!fp){return ;}gets(name);tt.Format(name);while(gets(name)){tt+="\r\n";tt+=name;}fclose(fp);fclose(stdin);freopen("CON","r",stdin); SetDlgItemText(IDC_EDIT1,tt);return;}

森栏

第一,cin>>name;和tt.Format(name);这两句貌似木有用,可以删掉;第二,如上人所说的,在编辑框的属性里改成Multiline 改为True ,如果你的编辑框画的时候只有一行,你可以把它拖大一点,看看是不是内容显示在回车换行下面;第三,其实UpdateWindow()函数这里不需要,UpdateWindow()函数为真,是写到变量里去,为假才是显示到窗口中,默认为真;第四,实在不行你试着把SetDlgItemText(IDC_EDIT1,tt);改为GetDlgItem(IDC_EDIT1)->SetWindowText(tt);
打开App,查看更多内容
随时随地看视频慕课网APP