MFC编辑框数据实时更新问题!!求解答!!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC编辑框数据实时更新问题!!求解答!!!相关的知识,希望对你有一定的参考价值。

其中一段代码如下
for (i = 0; i < gener; i++)

ClearAllSeries(); //清图
m_CurrenG = i + 1; //获得当前迭代数,m_CurrenG为编辑框的变量
UpdateData(false); //更新显示
..
...
...
.(中间计算程序省略)

我遇到的问题是:m_CurrenG对应的编辑框显示不能实时更新,要在for循环最后一个循环结束后才更新,显示最终的结果,为什么啊?怎样才能实时地更新?

参考技术A 在VC里,很多情况下需要更新控件,也就是调用UpdateData(FALSE);
但是如果是在循环中调用该函数,会导致没有时间来刷新界面,消息得不到相应,从外部看来,似乎整个循环只执行了一次UpdateData(FALSE);如下面的例子
for(i = 0;i < m;i++)

m_yiducishu = i+1;
UpdateData(FALSE);


这种写法会导致界面没有时间更新。
根据牛人的指点,在代码上添加一点东西,就可以了.如下:

for(i = 0;i < m;i++)

m_yiducishu = i+1;
UpdateData(FALSE);
///////////////////////////
MSG msg;
while( PeekMessage( &msg, 0, 0, 0, PM_REMOVE ) )

TranslateMessage(&msg);
DispatchMessage(&msg);

///////////////////////////////

自己推动消息循环就ok了。本回答被提问者采纳

mfc 动态更新编辑框内容

我把程序放在一个按钮响应函数里,程序运行过程中有几个结果我想在一个编辑框里输出,请问如何实时输出?我用的是SetDlgItemText(ID,strS),现在是几个结果得程序运行完才能一起输出,能不能出来一个结果就立刻输出到编辑框里?
网上有说涉及多线程,可不可以不这么麻烦就能解决?

在每个结果出来的时候都调用一次SetDlgItemText就可以了,这样子编辑框最终只会保留最后一次调用时的结果 参考技术A 没代码不好说,不过多线程是一个很好的解决办法!追问

比如:for(i=0 ; i<3; i++) strS+=_T("123"); SetDlgItemText(IDC, strS); str+=_T("\r\n") strS+="456"; 我想要的输出效果是:
"123"//第一个循环结束后就出来,而不是等所有运行完后出来
"123"
"123"
"456"

以上是关于MFC编辑框数据实时更新问题!!求解答!!!的主要内容,如果未能解决你的问题,请参考以下文章

MFC中的Eidt控件怎样才能实时显示更新的内容?

MFC - 如何在运行时更新编辑框? (C++)

mfc EDIT编辑框即时在for循环中更新

mfc 图片列表显示

MFC 编辑框内容更新方法以及滚动条设置

MFC 编辑框的数据显示时,用update后,返回了第一行。怎么才能显示最新的数据呢?编辑框属性如下。