void CRunDlg::show()
{
SetDlgItemInt(IDC_A2,B[0]); SetDlgItemInt(IDC_A3,C[0]);
SetDlgItemInt(IDC_B2,B[1]); SetDlgItemInt(IDC_B3,C[1]);  
SetDlgItemInt(IDC_C2,B[2]); SetDlgItemInt(IDC_C3,C[2]);
SetDlgItemInt(IDC_D2,B[3]); SetDlgItemInt(IDC_D3,C[3]);
SetDlgItemInt(IDC_E2,B[4]); SetDlgItemInt(IDC_E3,C[4]);
SetDlgItemInt(IDC_F2,B[5]); SetDlgItemInt(IDC_F3,C[5]); Sleep(2000);
SetDlgItemInt(IDC_G2,B[6]); SetDlgItemInt(IDC_G3,C[6]); Sleep(2000);
SetDlgItemInt(IDC_ALL,X); SetDlgItemText(IDC_AVG,strNumber);}我想让系统在显示IDC_F2和IDC_F3这两个动态文本控件后,暂停2秒后再显示后面IDC_G2和IDC_G2这两个动态文本控件再暂停2秒
在显示IDC_ALL和IDC_AVG
但是系统调用这个函数后,就暂停4秒才一起显示所有的文本控件!求知道,我该怎么修改代码才能实现这个功能

解决方案 »

  1.   

    怎么用FOR循环,不是很明白你的意思
      

  2.   

    SetDlgItemInt(IDC_F2,B[5]); SetDlgItemInt(IDC_F3,C[5]); Sleep(2000);
    RedrawWindow();
      

  3.   

    你的程序没机会响应消息就睡着了,所以一睡睡4秒,直到醒来才发现没显示,一起显示了,中间加个响应消息的函数就行了。
    BOOL CheckMessageQueue() 

    MSG msg; 

    while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)){ 
    if(msg.message==WM_QUIT) 
    return FALSE; 
    TranslateMessage(&msg); 
    DispatchMessage(&msg); 

    return TRUE; 

    void CAboutDlg::OnButton1() 
    {
    // TODO: Add your control notification handler code here

    SetDlgItemInt(IDC_EDIT1,111); 
    CheckMessageQueue();
    Sleep(2000);
    SetDlgItemInt(IDC_EDIT2,222);
    CheckMessageQueue();
    Sleep(2000);
    SetDlgItemInt(IDC_EDIT3,333);

    }
      

  4.   

    不是特别明白你想干什么
    不过Sleep会让线程挂起、界面假死
    我觉得应该不是你要的效果