我想按下一个按钮后刷新10次edit控件,
for(i=0;i<10;i++)
{
m_edit = i;//edit控件的成员
Sleep(500);
UpdateData(FALSE);
}为什么每次都只刷新成9呢,

解决方案 »

  1.   

    进入for循环,界面线程被阻塞了。你不能动态看到数值改变。
      

  2.   

    你可以建立一个线程来实现。参考代码如下:void CGraphictestDlg::OnButton1() 
    {
    AfxBeginThread(MyThread,this);
    }
    UINT MyThread(LPVOID pParam)
    {
    CGraphictestDlg *pDlg=(CGraphictestDlg *)pParam;
    for(int i=0;i<10;i++)
    {
      pDlg->m_edit2=i;
      Sleep(1000);
      pDlg->UpdateData(FALSE);
    }
    return 0;
    }
    这样就可以看到动态改变的效果了。
      

  3.   

    同意楼上
    在for 循环中sendmessage给窗口处理,让窗口给你刷新
      

  4.   

    同意 kugou123(酷狗)(http://www.xiaozhou.net) 
    UIThread被阻塞了!内部已经更新了!
    另外:m_edit = i;//edit控件的成员
    你刷新的是不是就是一个Edit控件
      

  5.   

    void CTestView::OnButton7() 
    {
    int x;
             DWORD dwThreadID; LastData = Data = 0; bExit = false; GetDlgItem(IDC_EDIT3,&hwndEdit); FThread=CreateThread(NULL,0,DisplayData,
    (LPVOID )&x,CREATE_SUSPENDED,&dwThreadID); ResumeThread(FThread);
    }DWORD WINAPI DisplayData(LPVOID param)
    {
    MSG msg;
    CString s_Data;

    while(TRUE)
    {

    Data++;
    if(LastData != Data)
    {
    s_Data.Format("%d",Data);
    ::SetWindowText(hwndEdit,s_Data);
    LastData = Data;
    } Delay(200); if(bExit)
    ExitThread(0); }
    return 0;
    }