MFC中的setTimer和WM_TIMER实现

来源:互联网 发布:spss数据分析实例详解 编辑:程序博客网 时间:2024/06/08 05:59

需要把计时器的消息传递给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();}
0 0
原创粉丝点击