void CHLDlg::OnBnClickedOpen()
{
// TODO: 在此添加控件通知处理程序代码
CFileDialog dlg(TRUE,NULL,NULL,NULL,NULL);
pCapture = NULL;
if(dlg.DoModal()==IDOK)//
{
PathName = dlg.GetPathName();
FileName = dlg.GetFileName();
}
else
{
return;
}
c=(LPCSTR)PathName;
pCapture = cvCaptureFromFile(c);
video_fps=(int)cvGetCaptureProperty(pCapture,CV_CAP_PROP_FPS);
hThread2 = CreateThread(NULL,0,Wavedisplay,(LPVOID)this,0,NULL);
}
DWORD WINAPI CHLDlg::Wavedisplay(LPVOID lpParam)
{
CHLDlg *p=(CHLDlg *)lpParam;
p->SetTimer(1,(int)(1000/p->video_fps),NULL);
return 0;
}
void CHLDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CDialogEx::OnTimer(nIDEvent);
if(1==nIDEvent)
{
Frame_Img = cvQueryFrame( pCapture );
}
}
程序如上,变量都封装在CHLDlg类里面,析构函数里将它们一一释放,为什么程序运行后内存一直以每秒8kb的速度上升?