本文共 642 字,大约阅读时间需要 2 分钟。
我从OpenCV的等待函数中改进!
1.可以实现“等待”功能。
2.可以定时。
3.可以处理消息。防止界面卡死。
void WaitKey( int delay ) //单位毫秒 { if (delay <= 0) { return; } //计算当前的毫秒数 int time0 = GetTickCount(); //无限循环 for(;;) { MSG message; //如果等候时间已到 ,则退出函数 if( (delay > 0 && abs((int)(GetTickCount() - time0)) >= delay) ) return ; else if( PeekMessage(&message, 0, 0, 0, PM_REMOVE) == FALSE ) // 如果没有查询到消息. (非阻塞式函数) { Sleep(1); //让渡出线程的时间片,防止CPU居高不下; 等待时间可能很长,不可能让CPU一直处理本函数。该用法很有用。 continue; //继续f无限or循环 } //派发消息 TranslateMessage(&message); DispatchMessage(&message); }
}
PS: 基本上能用。有时候会有问题!
如果应用程序退出的时候,WaitKey还会运行,那么建议给for循环加一个 bWaitFlag
for(;bWaitFlag;) //加一个判断;
bWaitFlag = FALSE; //退出EXE
转载地址:http://crnws.baihongyu.com/