void CMy1234Dlg::OnButton1()
{
// TODO: Add your control notification handler code here
int a;
CString str;
for(a=0;a<20;a++)
{
Sleep(1000);
str.Format("%d",a);
SetDlgItemText(IDC_EDIT1,str);
}
}
在对话框中我想实现按下键后,编辑框显示str的每一次变化。可是运行起来,结果都是一段时间后直接显示最后结果,不知道是什么原因,该怎么改变?
{
// TODO: Add your control notification handler code here
int a;
CString str;
for(a=0;a<20;a++)
{
Sleep(1000);
str.Format("%d",a);
SetDlgItemText(IDC_EDIT1,str);
}
}
在对话框中我想实现按下键后,编辑框显示str的每一次变化。可是运行起来,结果都是一段时间后直接显示最后结果,不知道是什么原因,该怎么改变?
要想动态显示,还是用TIMER
CString str;
for(a=0;a <20;a++)
{
str.Format("%d",a);
SetDlgItemText(IDC_EDIT1,str); MSG msg;
while( ::PeekMessage(&msg,NULL,0,0,PM_REMOVE) )
{
::TranslateMessage( &msg );
::DispatchMessage( &msg );
}
Sleep(1000); }
CString str;
for(a=0;a <20;a++)
{
Sleep(1000);
str.Format("%d",a);
CEdit *pEdit = (CEdit*)GetDlgItem(IDC_EDIT_SHOW);
pEdit->SetWindowText(str);
SetDlgItemText(IDC_STATIC_SHOW,str);
UpdateWindow();//添加这句就可以了
}
{
// TODO: Add your control notification handler code here
int a;
for(a=0;a<20;a++)
{
Sleep(1000);
m_str.Format("%d",a);
SetTimer(1, 1000, 0);
}
}void CMy1234Dlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
SetDlgItemText(IDC_EDIT1,m_str);
KillTimer(1);
CDialog::OnTimer(nIDEvent);
}
这样吗?结果还是一样没变啊?
{
// TODO: Add your control notification handler code here
int a;
CString str;
for(a=0;a <20;a++)
{
Sleep(1000);
str.Format("%d",a);
SetDlgItemText(IDC_EDIT1,str);UpdateWindow();//添加这句就可以了} }
你的方法可以显示变化,可是程序结束后,编辑框中的内容没了,要让他保留该怎么办?
我试了下你的方法,可是只能显示个0,然后就没显示了
我做了一个STATIC TEXT,一个EDIT CONTROL。文本框不需要Updatawindow()这句就可以显示。而EDIT CONTROL却需要刷新的这句。你也用类似的方法来比较,我觉得是你程序中可能赋值到最后的时候,进行了多余的操作。最好debug下,单步调试,看下最后的时候的值。
我的代码是这样的void CWinAppTestDlg::OnOK()
{
int a;
CString str;
for(a=0;a <20;a++)
{
Sleep(1000);
str.Format("%d",a); SetDlgItemText(IDC_EDIT_SHOW, str);//设置EDIT
SetDlgItemText(IDC_STATIC_SHOW,str);//设置STATIC
UpdateWindow();
}
// CDialog::OnOK();
}效果就是这两个同步显示。你试试。