该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include "StdAfx.h"
#include
#include
#pragma comment(lib,"vfw32.lib")HWND camhwnd; //handle to camera window
LRESULT CALLBACK WindowProc (HWND, UINT, WPARAM, LPARAM); //Window Procedure WindowProc
char szAppName [] = TEXT("WebCam"); //Application name
HDC hdc ; //used in colorstatic to make text background transparent//main Window Procedure WinMain
int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
HWND hwnd;
MSG msg;
WNDCLASS wc;
wc.style = CS_HREDRAW|CS_VREDRAW;
wc.lpfnWndProc = WindowProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(GetModuleHandle(NULL), IDI_APPLICATION);
wc.hCursor = LoadCursor (NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH) (COLOR_WINDOW+1);
wc.lpszMenuName = NULL;
wc.lpszClassName = szAppName; RegisterClass (&wc);
//create the Main Window and call it 'WebCam'
hwnd = CreateWindow (szAppName,szAppName,WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX,CW_USEDEFAULT,CW_USEDEFAULT,300,600,0,0,hInstance,0); ShowWindow (hwnd,SW_SHOW);
UpdateWindow (hwnd);while (GetMessage(&msg,0,0,0))
{
if(!IsDialogMessage(hwnd, &msg))
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}
}
return msg.wParam;
}// Procedure WindowProc
LRESULT CALLBACK WindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HINSTANCE hInstance = GetModuleHandle(NULL);
HWND hButtStartCam;
HWND hButtStopCam;
HWND hButtStartVid;
HWND hStopCapture;
HWND hwndLabel;
switch (message) /* handle the messages */
{case WM_CTLCOLORSTATIC:
SetBkMode(hdc,TRANSPARENT);
return (LRESULT)CreateSolidBrush(0xFFFFFF);
case WM_CREATE:
{ hButtStartCam = CreateWindowEx(0,"BUTTON","Start Camera",WS_CHILD | WS_VISIBLE,0,0,100,20,hwnd,(HMENU)1,hInstance, 0); // A Button
hButtStopCam = CreateWindowEx(0,"BUTTON","Stop Camera",WS_CHILD | WS_VISIBLE,0,50,100,20,hwnd,(HMENU)2,hInstance, 0); // A Button
hStopCapture=CreateWindowEx(0,"BUTTON","Stop Capture",WS_CHILD | WS_VISIBLE,0,75,100,20,hwnd,(HMENU)10,hInstance, 0); // A Button
hButtStartVid = CreateWindowEx(0,"BUTTON","Start Capture",WS_CHILD | WS_VISIBLE,0,25,100,20,hwnd,(HMENU)3,hInstance, 0); // A Button
hwndLabel = CreateWindow ( TEXT ("static"),"Press Escape to Stop Capture",WS_CHILD|WS_VISIBLE|ES_LEFT|1,7,460,180,50,hwnd,(HMENU) 46,((LPCREATESTRUCT) lParam) -> hInstance,NULL);
camhwnd = capCreateCaptureWindow ("camera window", WS_CHILD , 0, 100, 300, 300, hwnd, 0); //create capture window SendMessage(camhwnd,WM_CAP_DRIVER_CONNECT,0,0);// connect to webcam
SendMessage(camhwnd,WM_CAP_DLG_VIDEOSOURCE,0,0);// show webcam options to pick a webcambreak;
}
case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case 1:
{ ShowWindow(camhwnd,SW_SHOW); SendMessage(camhwnd,WM_CAP_DRIVER_CONNECT,0,0);// connect to webcam
SendMessage(camhwnd, WM_CAP_SET_SCALE, true , 0);// set scale
SendMessage(camhwnd, WM_CAP_SET_PREVIEWRATE, 30, 0);// set previewrate
SendMessage(camhwnd, WM_CAP_SET_PREVIEW, true , 0);// turn preview mode onbreak;
}
case 2:
{
ShowWindow(camhwnd,SW_HIDE);// hide webcam window
SendMessage(camhwnd, WM_CAP_DRIVER_DISCONNECT, 0, 0);//disconnect driver turns webcam off
break;
}
case 3:
{
SendMessage(camhwnd, WM_CAP_FILE_SET_CAPTURE_FILE, 0, (LPARAM)"C:\\camvideo.avi");//setup a capture file called camvideo.avi
SendMessage(camhwnd, WM_CAP_SEQUENCE, 0, 0);// capture the video to camvideo.avi press Esc to stop capture
break;
}
case 10:
{
SendMessage(camhwnd,WM_CAP_SEQUENCE,0,0);
break;
}}
break;
}case WM_DESTROY:
{
SendMessage(camhwnd, WM_CAP_DRIVER_DISCONNECT, 0, 0);//disconnect driver turns webcam off
PostQuitMessage(0); /* send a WM_QUIT to the message queue */
break;
}
default: /* for messages that we don't deal with */
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0;
}