我希望能在按下按钮后Edit 控件能够连续显示一个变化的变量。 定义了一个命令按钮,一个Edit Box 控件,该控件与一个int型变量关联;在命令按钮代码中,我让int型变量连续变化,然后赋值到关联变量,然后读取,代码如下所示:
void CShiyan_displayDlg::OnButton1()
{
int i;
for(i=0;i<1000;i++)
{ m_111=i;
UpdateData(FALSE);
} }
现在的问题是,我按下按钮以后,Edit Box 控件只显示了一次值,即999,显示了最后一次值,请问如何让控件动态连续显示变量值啊,谢谢,谢谢!
void CShiyan_displayDlg::OnButton1()
{
int i;
for(i=0;i<1000;i++)
{ m_111=i;
UpdateData(FALSE);
} }
现在的问题是,我按下按钮以后,Edit Box 控件只显示了一次值,即999,显示了最后一次值,请问如何让控件动态连续显示变量值啊,谢谢,谢谢!
因为速度太快没感觉
可以加下延迟
void CShiyan_displayDlg::OnButton1()
{
int i;
for(i=0;i <1000;i++)
{ m_111=i;
Sleep(100);
UpdateData(FALSE);
} }
我的思路:1、定义一个对话框类的成员变量,用来记忆数值变化,如:int m_Number = 0;2、当用户按下按钮时,启动一个定时器,定时时间设置为你两次显示的间隔时间,如 100 毫秒;3、响应 WM_TIMER 定时器消息,m_Number++ ,然后显示到编辑框中;4、再加一个停止定时器的按钮,当用户按下按钮后停止定时器,这时数值就停止显示了。
只是太快就看不出来而已
像1楼给出的代码
sleep(1000)一下就可以看到连续的变化了
Mackz,能不能说的更详细一点呢,比如如何启动一个定时器,如何更新编辑框呢,具体代码如何啊?谢谢的
退出之前无法处理其他消息,因此CEdit变更后的更新消息得不到响应,自然不会刷新其显示了。解决的办法之一是设置一个定时器,在每次的定时器消息中变更CEdit的值,这样每次CEdit的值变更之后都及时从消息函数中退出,转而处理其他消息,其中就包括CEdit的更新消息。另一种方法是在CButton的Click消息响应函数中再内嵌一个消息处理函数,这样每次修改了CEdit的值之后,都立即从消息队列里检索产生的新消息并处理掉,CEdit的更新消息也就不会延误了。这种方法对你的代码修改比较少,下面是例子:void CShiyan_displayDlg::OnButton1()
{
int i;
for(i=0;i <1000;i++)
{
m_111 = i;
Sleep(10);
UpdateData(FALSE);
DoEvents();
}
}void CShiyan_displayDlg::DoEvents()
{
MSG msg;
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
DispatchMessage(&msg);
TranslateMessage(&msg);
}
}
就是一秒变一次就可以了