第一次发博客,有一点点激动呀,其实研究vc的东西也蛮久了。但是从来没写过文章来分享一些我学到的东西,今天就拿个简单的例子来开个头吧。
好了,闲话不多说。把步骤烧上,我们先建立一个mfc工程,命名为sxr_1,创建一个这样的一个界面。
中间的控件是picture控件,我们先给各个按钮的命名给上。然后双击按钮添加事件,我给打开摄像头命名为IDC_BUTTON_OPEN,双击进入事件响应。代码为:
void CSxt_1View::OnButtonOpen()
{
// TODO: Add your control notification handler code here
//char name[100];
CRect rect;
GetDlgItem(IDC_OPENCAMERA)->GetWindowRect(&rect);
ScreenToClient(&rect);
hWndC = capCreateCaptureWindowA("Capture Window",WS_CHILD | WS_VISIBLE ,
rect.left,rect.top,rect.right-rect.left,rect.bottom-rect.top,this->m_hWnd,0);
// capDriverGetName(hWndC,name);
if (hWndC != 0)
{
::SendMessage(hWndC, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, 0);
::SendMessage(hWndC, WM_CAP_SET_CALLBACK_ERROR, 0, 0);
::SendMessage(hWndC, WM_CAP_SET_CALLBACK_STATUSA, 0, 0);
::SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0);
::SendMessage(hWndC, WM_CAP_SET_SCALE, 1, 0);
::SendMessage(hWndC, WM_CAP_SET_PREVIEWRATE, 66, 0);
::SendMessage(hWndC, WM_CAP_SET_OVERLAY, 1, 0);
::SendMessage(hWndC, WM_CAP_SET_PREVIEW, 1, 0);
}
}
然后我们给关闭摄像头命名IDC_BUTTON_CLOSE,双击进入事件,代码为:
void CSxt_1View::OnButtonClose()
{
if (hWndC != 0)
{
::SendMessage(hWndC, WM_CAP_DRIVER_DISCONNECT, 0, 0);
hWndC = 0;
}
}
同理我们给保存图片命名IDC_BUTTON_SAVE并添加事件,代码为:
void CSxt_1View::OnButtonSave()
{
// TODO: Add your control notification handler code here
// x=1;
//shang chu;
CTime time;
time=CTime::GetCurrentTime();
CString times=time.Format("%H%M%S");
times+=".bmp";
if(hWndC!=0)
{
capFileSaveDIB(hWndC,times.GetBuffer(0));
}
}
退出按钮就不用我多说了吧,直接给代码:
void CSxt_1View::OnButton3()
{
// TODO: Add your control notification handler code here
::PostMessage(this->m_hWnd,WM_QUIT,0,0);
}
好了,今天就说到这里了,以后有机会再说说我的心得吧,哈哈~