今天在验证手机摄像头模组测试系统中发现,当系统进入成像特性测试时,出现严重的卡顿现象。然后重新review代码发现在一个while循环中导致卡顿。回想过去 在BCB环境中一句Application->ProcessMessages搞定,但MFC没有这样的处理功能。
通过查阅相关资料可以这样实现类似的功能:
首先,定义函数的实现功能:
/*****************************************************
功能:当系统测试手机摄像模组成像特性时,能同时响应系统的其他操作事件,避免出现卡顿现象。
函数名称:myProcessMessage()
输入参数:NULL
输出参数:NULL
******************************************************/
void Camera_Test::myProcessMessage()
{
MSG Curmsg;
while (PeekMessage(&Curmsg, (HWND)NULL, 0, 0, PM_REMOVE) )//判断是否有消息
{
TranslateMessage(&Curmsg);
DispatchMessage(&Curmsg);
}
}
其次,在系统中的调用。
bool MainTest::CamerFeatureTest()
{
m_Interface.ShowTitle(_T"(手机摄像头模组成像特性测试中..."));
while(1)
{
//GetVideo
................
m_CamerAqu.myProcessMessage();
// processVideo
................
m_CamerAqu.myProcessMessage();
// test img
................
m_CamerAqu.myProcessMessage();
}
这样处理后系统运行顺畅,不会出现卡顿现象。