我在使用VFW的时候,调试过程中,capDriverConnect()函数,显示user breakpoint called from code at 0xX?

yanhc519 2010-03-24 03:54:44
我在使用VFW的时候,调试过程中,capDriverConnect()函数,显示user breakpoint called from code at 0xXXX...
我在运行的时候可以连上,而且画面可以预览,不知道为什么在调试的时候就这样了?
开始我以为是上次退出时没有正常关闭,后来程序改了还是这样?什么原因啊?
我的代码:
BOOL CVFWcameraDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}

// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

// 设置预览窗口
CWnd *pWnd=AfxGetMainWnd()->GetDlgItem(IDC_VIDEO);//得到预览窗口指针,为Animate控件
CRect rect;
pWnd->GetWindowRect(&rect); // 得到窗口大小
m_hCapWnd=capCreateCaptureWindow("Capture",
WS_CHILD|WS_VISIBLE,
0,0,
rect.Width(),rect.Width(),
pWnd->GetSafeHwnd(),0); // 设置预览窗口
if(!m_hCapWnd)
{
MessageBox("Set preview window failed!");
return FALSE;
}

// 连接摄像头
if(!capDriverConnect(m_hCapWnd,0))
{
MessageBox("Connect to Camera failed!");
return FALSE;
}

//得到驱动器的属性
capDriverGetCaps(m_hCapWnd,sizeof(CAPDRIVERCAPS), &m_CapDrvCap);

if(m_CapDrvCap.fCaptureInitialized) // 查看摄像头是否初始化成功
{
capGetStatus(m_hCapWnd, &m_CapStatus,sizeof(m_CapStatus)); // 得到驱动器状态
capPreviewRate(m_hCapWnd,30); // 设置预览帧频,30 ms
}
else{
AfxMessageBox("Camera initilize failed!");
return FALSE;
}

isPreview = FALSE;

return TRUE; // return TRUE unless you set the focus to a control
}

void CVFWcameraDlg::OnOpen() 
{
// TODO: Add your control notification handler code here
capPreview(m_hCapWnd,TRUE); // 开始预览
isPreview = TRUE;
}

void CVFWcameraDlg::OnPause()
{
// TODO: Add your control notification handler code here
capPreview(m_hCapWnd,FALSE); // 暂停
}

void CVFWcameraDlg::OnImage()
{
// TODO: Add your control notification handler code here
capFileSaveDIB(m_hCapWnd,"pic.bmp");
}

void CVFWcameraDlg::OnRecord()
{
// TODO: Add your control notification handler code here
capFileSetCaptureFile(m_hCapWnd,"video.avi"); //设置保存路径
capFileAlloc(m_hCapWnd,(1024L*1024L*5)); //设置文件缓存
capCaptureSequence(m_hCapWnd); //开始捕捉
}

void CVFWcameraDlg::OnOK()
{
// TODO: Add extra validation here
if(isPreview == TRUE)
capPreview(m_hCapWnd,FALSE);

// Stop the capture process
capCaptureStop(m_hCapWnd);
capCaptureAbort(m_hCapWnd);

Sleep(500);

// Disable the callback function..
capSetCallbackOnVideoStream(m_hCapWnd, NULL);

Sleep(300); // This delay is important...

// Finally disconnect the driver
capDriverDisconnect(m_hCapWnd);

CDialog::OnOK();
}
...全文
219 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanhc519 2010-03-27
  • 打赏
  • 举报
回复
实际原因是什么Heap 分配的问题,不过现在没有了,不管了,不过学会了一个查找Heap错误的工具,pageheap
yanhc519 2010-03-27
  • 打赏
  • 举报
回复
http://download.csdn.net/source/2162738
这是我的代码,问题不知道怎么消失了,我把pageheap关掉之后,就好了,呵呵
gslqy 2010-03-24
  • 打赏
  • 举报
回复
这么爽,都有画面预览。 我以前用VFW时画面是黑的,后来没解决就不了了之了,看到你帖子又想起来,求解!

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧