需要把计时器的消息传递给WM_TIMER,需要在类向导里面添加:类视图-》CShowCaptureDlg右键-》属性,然后你可以再属性类表中找到消息,你就可以在WM_TIMER中添加OnTimer来响应计时器了。不懂得可以看下图:
添加计时器!!
void CShowCaptureDlg::OnBnClickedOpenCamera()
{
。。。。。。
SetTimer(ID_TIMER1, 10, NULL);
}
你看到了一个setTimer()的函数,没错,就是这里添加一个计时器,Deal按钮也需要添加计时器:
void CShowCaptureDlg::OnBnClickedProcess()
{
......
SetTimer(ID_TIMER2, 10, NULL);
}
OnTimer的代码:
void CShowCaptureDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
switch(nIDEvent)
{
case ID_TIMER1:
{
if(m_bOpenCamera)
{
pFrame = cvQueryFrame(pCapture);
drawToDC(pFrame, IDC_CAPTURE);
}
break;
}
case ID_TIMER2:
{
IplImage* pGray = cvCreateImage(cvGetSize(pFrame), 8, 1);
cvCvtColor(pFrame, pGray, CV_BGR2GRAY);
cvThreshold(pGray, pGray, 100, 255, CV_THRESH_BINARY);
drawToDC(pGray, IDC_DEAL);
break;
}
}
CDialog::OnTimer(nIDEvent);
}
清理动作,同样,在WM_CLOSE添加OnClose代码:
void CShowCaptureDlg::OnClose()
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
cvReleaseCapture(&pCapture);
KillTimer(ID_TIMER1);
KillTimer(ID_TIMER2);
CDialog::OnClose();
}