关于VC/MFC的
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秒才一起显示所有的文本控件!求知道,我该怎么修改代码才能实现这个功能
[解决办法]
使用for循环试试
[解决办法]
SetDlgItemInt(IDC_F2,B[5]); SetDlgItemInt(IDC_F3,C[5]); Sleep(2000);
RedrawWindow();
[解决办法]
你的程序没机会响应消息就睡着了,所以一睡睡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); }
[解决办法]
不是特别明白你想干什么
不过Sleep会让线程挂起、界面假死
我觉得应该不是你要的效果