在父窗体中画一个按键(Button1),点击按键(Button1)然后跳出子窗体(son_window_IDD_DIALOG_BG),显示图像。(OPEN/CLOSE是用来打开和关闭摄像头的,father_window里面的image control控件用于显示视频,三者和本次问题无关)
我不知道怎么配置CDC/HDC/CRECT/CWND之类的参数。
如图,双击屏幕之后,程序停止。
IplImage* src = cvLoadImage("D:\\PERSONAL\\VC++\\OpenCV\\image\\hy2head.jpg");//OpenCV里面的加载图像语句 CRect rect; CDC *pDC; HDC hDC; CWnd *pwnd;
void CTestDlg::OnLButtonDblClk(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 pwnd = GetDlgItem(IDC_ShowImage); pDC =pwnd->GetDC(); <span style="font-family: Arial, Helvetica, sans-serif;">//DEBUG中,这里开始出错 </span> hDC= pDC->GetSafeHdc(); pwnd->GetClientRect(&rect); CvvImage m_CvvImage; // OpenCV中的显示类 m_CvvImage.CopyOf(src,1); // <span style="font-family: Arial, Helvetica, sans-serif;">OpenCV中的显示用函数</span> m_CvvImage.DrawToHDC(hDC, &rect); // <span style="font-family: Arial, Helvetica, sans-serif;">OpenCV中的显示用的</span> CDialogEx::OnLButtonDblClk(nFlags, point); }
IplImage* src = cvLoadImage("D:\\PERSONAL\\VC++\\OpenCV\\image\\hy2head.jpg"); CRect rect; CDC *pDC; HDC hDC; CWnd *pwnd;
// TODO: 在此添加额外的初始化代码 pwnd = GetDlgItem(IDC_ShowImage); pDC =pwnd->GetDC(); hDC= pDC->GetSafeHdc(); pwnd->GetClientRect(&rect);
void CsubwindowDlg::OnClickedButtonOpen() { // TODO: 在此添加控件通知处理程序代码 // 测试 CvvImage m_CvvImage; m_CvvImage.CopyOf(src,1); m_CvvImage.DrawToHDC(hDC, &rect); // 设置计时器,每10ms触发一次事件 }
void CsubwindowDlg::OnClickedButtonClose() { // TODO: 在此添加控件通知处理程序代码 ReleaseDC(pDC); }
void CTestDlg::OnLButtonDblClk(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 <span style="color:#ff0000;">pwnd = GetDlgItem(<span style="font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; font-size: 14px; line-height: 23px;">IDC_STATIC</span>); //这里如果返回空指针会出错。</span> pDC =pwnd->GetDC(); <span style="font-family: Arial, Helvetica, sans-serif;">//DEBUG中,这里开始出错 </span> hDC= pDC->GetSafeHdc(); pwnd->GetClientRect(&rect); CvvImage m_CvvImage; // OpenCV中的显示类 m_CvvImage.CopyOf(src,1); // <span style="font-family: Arial, Helvetica, sans-serif;">OpenCV中的显示用函数</span> m_CvvImage.DrawToHDC(hDC, &rect); // <span style="font-family: Arial, Helvetica, sans-serif;">OpenCV中的显示用的</span> CDialogEx::OnLButtonDblClk(nFlags, point); }