If you always wanted to create an application which uses a digital camera, this article is just for you. If you know how to deal with Timers and Bitmaps, this is going to be easy. Digital cameras produce bitmap pictures. There are a few simple functions to use, so let's get started.
Add to your project these libraries (project->settings->link): vfw32.lib, user32.lib, winmm.lib.
You must link these .lib files in order to be able to connect to the digital camera driver.
Include in your project, these files:
You must include these files in order to use the *.lib files mentioned above.
Use the following functions:
capDriverConnect (hWndC, 0);
Add member variables:
HWND hWndC as a capture window handle, and:
BITMAP bm; CBitmap m_bmp;
hWndC = capCreateCaptureWindow ( "Capture Window", WS_CHILD |WS_DLGFRAME
capDriverConnect (hWndC, 0); else
AfxMessageBox("Error Cammera is not connected!"); exit(1);
In order to make a Preview function to view a video stream on a specific
CFrame rectFrame in your dialog (for example):
void CYourProject::OnTimer(UINT nIDEvent)
capGrabFrame(hWndC); capEditCopy(hWndC); OpenClipboard();
m_hBmp = (HBITMAP)::GetClipboardData(CF_BITMAP);
If you don't know how to paint a bitmap into a frame (
CFrame), inside the
OnPaint() function, you need to do:
Now you can take a snapshot by using the following function:
KillTimer(1);, and you have the picture saved in
m_hBmp (handle to your Bitmap picture).
In order to choose your own camera settings: favorite resolution and pixels depth, you need to use the
capDlgVideoFormat(hWndC); function like this:
hWndC = capCreateCaptureWindow("Capture Window",
GetSafeHwnd(), 1); capDriverConnect (hWndC, 0); capDlgVideoFormat(hWndC); capDriverDisconnect(hWndC);
My name is Eyal Zoref, I'm from Israel, I'm a Management and Software Engineer. View my C.V..
For Q. you can reach me at EMail_ME.