回 帖 发 新 帖 刷新版面

主题:一个经典的问题 : Sleep()

用Sleep()函数时,是不是程序不能进入消息循环了,也就是说窗口不能更新了?我有如下代码:

OnBnClickedButtonRun()
{
IfLoaded=DriverLoad();
if (IfLoaded==TRUE)
    SetDlgItemText(IDC_STATIC_RESULT,TEXT("Driver Loaded"));
else
    SetDlgItemText(IDC_STATIC_RESULT,TEXT("Driver Loaded NG"));


Sleep(1000);

IfLoaded=DriverUnload();
if (IfLoaded==TRUE)
    SetDlgItemText(IDC_STATIC_RESULT,TEXT("Driver Unloaded"));
else
    SetDlgItemText(IDC_STATIC_RESULT,TEXT("Driver Unloaded NG"));

}

可是在SLEEP过程中静态文本一直不能更新,一点按钮后就只显示最后的结果,我试过用Application->ProcessMessages(); 可是提示Application:undeclared identifier。哪位高手指一下,谢谢了。

回复列表 (共13个回复)

11 楼

其实你要的不是Sleep而是一个延时的事件。不应该采取Sleep

12 楼

把你觉得需要处理很旧的函数放在另外的线程中.

13 楼

你把你那段代码,写成这样:

DWORD WINAPI RunProc(LPVOID lpParam)
{
... /* Paste your code here */
return 0;
}

然后 OnBnClickedButtonRun() 内容改成
{
  DWORD dwID;
  CreateThread(NULL, NULL, RunProc, NULL, NULL, &dwID);
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册