⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 airguard_c.cpp

📁 用vc编写的视频采集端口编成
💻 CPP
📖 第 1 页 / 共 5 页
字号:
					g_myCamera.TiltDown();
					break;
				case ACK_BN_UP:
					g_myCamera.StopTiltDown();
					break;
			}
			break;
		case ID_RIGHTBUTTON:
			switch(wmEvent){
				case ACK_BN_DOWN:
					g_myCamera.PanRight();
					break;
				case ACK_BN_UP:
					g_myCamera.StopPanRight();
					break;
			}
			break;
		case ID_PIEBUTTON:
			switch(wmEvent){
				case ACK_BN_DOWN:
					break;
				case ACK_BN_UP:
					
					SnapStill2Bmp(1, 0, "D:\\CaptureX\\testOrg.bmp");
					//MessageBox(hWnd, "Picture captured!", "message", MB_OK);
					//CvtBmpTo320("D:\\CaptureX\\testOrg.bmp", "D:\\CaptureX\\test320.bmp");
					break;
			}
			break;
		case ID_PLUSBUTTON:
			switch(wmEvent){
				case ACK_BN_DOWN:
					if(SendMessage(g_hwndRadioZoom, BM_GETCHECK, 0L, 0L)){
						g_myCamera.ZoomTelephoto();
					}
					else if(SendMessage(g_hwndRadioFocus, BM_GETCHECK, 0L, 0L)){
						g_myCamera.FocusFar();
					}
					else if(SendMessage(g_hwndRadioAperture, BM_GETCHECK, 0L, 0L)){
						g_myCamera.IrisOpen();
					}
					break;
				case ACK_BN_UP:
					if(SendMessage(g_hwndRadioZoom, BM_GETCHECK, 0L, 0L)){
						g_myCamera.StopZoomTelephoto();
					}
					else if(SendMessage(g_hwndRadioFocus, BM_GETCHECK, 0L, 0L)){
						g_myCamera.StopFocusFar();
					}
					else if(SendMessage(g_hwndRadioAperture, BM_GETCHECK, 0L, 0L)){
						g_myCamera.StopIrisOpen();
					}
					break;
			}
			break;
		case ID_MINUSBUTTON:
			switch(wmEvent){
				case ACK_BN_DOWN:
					if(SendMessage(g_hwndRadioZoom, BM_GETCHECK, 0L, 0L)){
						g_myCamera.ZoomWide();
					}
					else if(SendMessage(g_hwndRadioFocus, BM_GETCHECK, 0L, 0L)){
						g_myCamera.FocusNear();
					}
					else if(SendMessage(g_hwndRadioAperture, BM_GETCHECK, 0L, 0L)){
						g_myCamera.IrisClose();
					}

					break;
				case ACK_BN_UP:
					if(SendMessage(g_hwndRadioZoom, BM_GETCHECK, 0L, 0L)){
						g_myCamera.StopZoomWide();
					}
					else if(SendMessage(g_hwndRadioFocus, BM_GETCHECK, 0L, 0L)){
						g_myCamera.StopFocusNear();
					}
					else if(SendMessage(g_hwndRadioAperture, BM_GETCHECK, 0L, 0L)){
						g_myCamera.StopIrisClose();
					}

					break;
			}
		
	}
	return 1;
}

bool MainWindow_OnCommand(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	int wmId    = LOWORD(wParam); 
	int wmEvent = HIWORD(wParam); 
	RECT rect;
	// Parse the menu selections:
	switch (wmId)
	{
		case IDM_TEST_SAVEIMAGE:
			SnapStill2Bmp(1, 0, "D:\\CaptureX\\testOrg.bmp");
			
			break;
		case IDM_TEST_STARTRECV:
			//g_myCamera.MPEG_StartRecvShow(g_hwndVideo_MPEG);

			rect.left = 0;
			rect.top = 0;
			rect.right = 640;
			rect.bottom = 480;

			if (g_hwndVideo_MPEG == 0){
				g_hwndVideo_MPEG = CreateDialog(g_hInst, (LPCTSTR)IDD_VIDEO_MPEG, g_hwndVideo, (DLGPROC)Video_MPEGWndProc);
				if (!(g_hwndVideo_MPEG))
					MessageBox(NULL, "Create Video Window error", "error", MB_OK);
			}
			
			RecvShowMPEG(g_hwndVideo_MPEG, g_hwndVideo_MPEG, 1, LXD_RECEIVE_BROADCAST, rect, "",
					"",6000, LXD_VIDEO_MODE_PAL, 
					LXD_MPEG1_VIDEO,"");
			ShowWindow(g_hwndVideo_MPEG, SW_SHOW);
			return 1;

		case IDM_TEST_STOPRECV:
			StopRecvShowMPEG(1);
			DestroyWindow(g_hwndVideo_MPEG);
			g_hwndVideo_MPEG = 0;
			break;
		case IDM_DATABASE_MANAGER:
			WinExec(g_myDIB.DBGetDBManager(), SW_SHOWNORMAL);
			break;
		case IDM_DATABASE_CONFIG:
			DialogBox(g_hInst, MAKEINTRESOURCE(IDD_DBCONFIG), hWnd, (DLGPROC)DlgDatebaseConfiguration);
			break;
		case ID_RADIOAUTO:
			if( g_mySysState.iOpMode != AUTOMODE){
				g_mySysState.iOpMode = AUTOMODE;
				EnterAutoMode();
			}
			//MessageBox(NULL, "ID_RADIOAUTO", "message", MB_OK);
			break;
		case ID_RADIOMANUAL:
			if(g_mySysState.iOpMode != MANUALMODE){
				g_mySysState.iOpMode = MANUALMODE;
				EnterManualMode();
			}
			break;
		case ID_CHECKBOXSOUND:
			if(SendMessage(g_hwndCheckBoxBeep, BM_GETCHECK, 0L, 0L))
				g_mySysState.bSoundAlarm = 1;
			else g_mySysState.bSoundAlarm = 0;
			break;
		case IDM_TOOLS_CREATETEMPLATE:
			switch(g_myCamera.pCameraList[g_myCamera.m_iCurrentCamera].iType){
				case JIMU:
					JIMU_CreateChimneyTemplate();
					break;
				case MPEG:
					MPEG_CreateChimneyTemplate1();
					break;
				case INVALID:
					break;
				default:
					break;
			}

			break;
		case IDM_SETTINGS_SITESETTINGS:
			g_hwndSiteSettings = CreateWindowEx(WS_EX_STATICEDGE, "SiteSettingsWindow", 0,
				WS_SYSMENU | WS_VISIBLE, 145, 25,  640, 480,
				hWnd, NULL, g_hInst, 0);
			if (!g_hwndSiteSettings)
				MessageBox(NULL, "Create SiteSettings Window error", "error", MB_OK);

			break;
		case IDM_ABOUT:
		   DialogBox(g_hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
		   break;
		case IDM_EXIT:
		   DestroyWindow(hWnd);
		   break;
		case ID_BTNGOTO:
			DialogBox(g_hInst, MAKEINTRESOURCE(IDD_GOTOPRESET), hWnd, (DLGPROC)DlgGotoPreset);
			break;
		case ID_BTNSETPRESET:
			DialogBox(g_hInst, MAKEINTRESOURCE(IDD_SETPRESET), hWnd, (DLGPROC)DlgSetPreset);
			break;
		default:
			if((wmId >= ID_BTNCAMNUM_0) && (wmId <= ID_BTNCAMNUM_15)){
				wmId = wmId - ID_BTNCAMNUM_0;
				switch(g_myCamera.pCameraList[wmId].iType){
					case MPEG:
						if (g_hwndVideo_JIMU != 0){
							DestroyWindow(g_hwndVideo_JIMU);
							g_hwndVideo_JIMU = 0;
						}
						if (g_hwndVideo_MPEG != 0){
							DestroyWindow(g_hwndVideo_MPEG);
							g_hwndVideo_MPEG = 0;
						}

						if (g_hwndVideo_MPEG == 0){
							g_hwndVideo_MPEG = CreateDialog(g_hInst, MAKEINTRESOURCE(IDD_VIDEO_MPEG), g_hwndVideo,
								(DLGPROC)Video_MPEGWndProc);
							if (!g_hwndVideo_MPEG)
								MessageBox(NULL, "Create MPEG Video Window error", "error", MB_OK);
						}
						g_myCamera.SwitchCamera(g_hwndMainWindow, g_hwndVideo_MPEG, wmId);
						break;
					case JIMU:
						if (g_hwndVideo_JIMU != 0){
							DestroyWindow(g_hwndVideo_JIMU);
							g_hwndVideo_JIMU = 0;
						}

						if (g_hwndVideo_MPEG != 0){
							DestroyWindow(g_hwndVideo_MPEG);
							g_hwndVideo_MPEG = 0;
						}
						if (g_hwndVideo_JIMU == 0){
							g_hwndVideo_JIMU = CreateDialog(g_hInst, MAKEINTRESOURCE(IDD_VIDEO_JIMU), g_hwndVideo,
								(DLGPROC)Video_JIMUWndProc);
							if (!g_hwndVideo_JIMU)
								MessageBox(NULL, "Create JIMU Video Window error", "error", MB_OK);
						}
						g_myCamera.SwitchCamera(g_hwndVideo_JIMU, NULL, wmId);

						break;
					case INVALID:
						if (g_hwndVideo_JIMU != 0){
							DestroyWindow(g_hwndVideo_JIMU);
							g_hwndVideo_JIMU = 0;
						}

						if (g_hwndVideo_MPEG != 0){
							DestroyWindow(g_hwndVideo_MPEG);
							g_hwndVideo_MPEG = 0;
						}

						g_myCamera.SwitchCamera(0, 0, wmId);
						break;
					default:
						break;
				}
				
			} // End if...
		  // default:
	} // switch
	return 1;
}

BOOL CALLBACK DlgGotoPreset(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
	CHAR lpszBuffer[30];
	int nPresetNum;

	switch (uMsg){
		case WM_INITDIALOG:
			SetFocus(GetDlgItem(hwndDlg, IDC_EDIT_PRESETNUM));
			return false;
		case WM_COMMAND:
			if (LOWORD(wParam) == IDOK){
				GetDlgItemText(hwndDlg, IDC_EDIT_PRESETNUM, lpszBuffer, 20);
				nPresetNum = atoi(lpszBuffer);
				if(!(g_myCamera.m_iCurrentCamera == INVALIDCAMERA))
					g_myCamera.m_iCurrentChimney = nPresetNum;
				g_myCamera.GotoPreset(nPresetNum);
			}
			
			if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) 
			{
				EndDialog(hwndDlg, LOWORD(wParam));
				return TRUE;
			}
			break;
	}
	return false;
}
BOOL CALLBACK DlgSetPreset(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
	CHAR lpszBuffer[30];
	int nPresetNum;

	switch (uMsg){
		case WM_INITDIALOG:
			SetFocus(GetDlgItem(hwndDlg, IDC_EDIT_PRESETNUM));
			return false;
		case WM_COMMAND:
			if (LOWORD(wParam) == IDOK){
				GetDlgItemText(hwndDlg, IDC_EDIT_PRESETNUM, lpszBuffer, 20);
				nPresetNum = atoi(lpszBuffer);
				g_myCamera.SetPreset(nPresetNum);
			}
			
			if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) 
			{
				EndDialog(hwndDlg, LOWORD(wParam));
				return TRUE;
			}
			break;
	}
	return false;
}

bool MPEG_VideoWindow_OnContextMenu1(HWND hWnd, WPARAM wParam, LPARAM lParam)
{
	char lpszTempOrg[100];

	g_mySysState.iProcedureToBeContinued = VDO_ONCONTEXTMENU_2;
	g_mySysState.MPEG_MessageProcessToBeContinued.hWnd = hWnd;
	g_mySysState.MPEG_MessageProcessToBeContinued.lParam = lParam;
	g_mySysState.MPEG_MessageProcessToBeContinued.wParam = wParam;
	
	sprintf(lpszTempOrg, "%s\TempOrg.bmp", g_myFileName.GetCaptureFilePath());

	SnapStill2Bmp(1, 0, lpszTempOrg);
	
	return 1;
}
bool MPEG_VideoWindow_OnContextMenu2()
{
	HDC hMemDc, hdc;
	HBITMAP hBitmap;
	COLORREF crPointColor;
	RECT rect;
	WORD xPos, yPos;
	WORD wGrayValue, r, g, b;
	float fBlackness;
	char lpszMessage[100];
	char lpszTempOrg[100], lpszTemp320[100];
	static HCURSOR hCursor;
	POINT pt;
	HWND hWnd = g_mySysState.MPEG_MessageProcessToBeContinued.hWnd;
	WPARAM wParam = g_mySysState.MPEG_MessageProcessToBeContinued.wParam;
	LPARAM lParam = g_mySysState.MPEG_MessageProcessToBeContinued.lParam;

	pt.x = LOWORD(lParam); 
	pt.y = HIWORD(lParam); 
	ScreenToClient(hWnd, &pt);
	xPos = pt.x;
	yPos = pt.y;

	sprintf(lpszTempOrg, "%s\TempOrg.bmp", g_myFileName.GetCaptureFilePath());
	sprintf(lpszTemp320, "%s\Temp320.bmp", g_myFileName.GetCaptureFilePath());
	
	MPEG_CvtBmpTo320(lpszTempOrg, lpszTemp320);

	hdc = GetDC(g_hwndMainWindow);
	g_myDIB2.LoadDIB(lpszTemp320);
	
	hMemDc = CreateCompatibleDC(hdc);
	hBitmap = CreateCompatibleBitmap(hdc, 320, 240);
	SelectObject(hMemDc, hBitmap);

	rect.left = 0;
	rect.top = 0;
	rect.right = 320;
	rect.bottom = 240;
	g_myDIB2.ShowDIB(hMemDc, rect);
	
	crPointColor = GetPixel(hMemDc, xPos / 2, yPos / 2);
	
	DeleteDC(hMemDc);
	DeleteObject(hBitmap);
	g_myDIB2.CloseDIBFile();
	ReleaseDC(g_hwndMainWindow, hdc);

	r = LOWORD(crPointColor) & 0x00ff;
	g = (LOWORD(crPointColor) >> 8) & 0x00ff;
	b = HIWORD(crPointColor) & 0x00ff;
	wGrayValue = (r + g + b) / 3;
	wGrayValue = 255 - wGrayValue;
	fBlackness = (float)wGrayValue / 51;
	fBlackness = fBlackness * g_myCamera.m_iIllumination/100;
	sprintf(lpszMessage, "%3.1f", fBlackness);

	SetWindowText(g_hwndEditBlackness, lpszMessage); // 0431-5702169
	if (fBlackness >= g_myCamera.GetCriticalPoint()){
		if(g_mySysState.bSoundAlarm)
			MessageBeep(MB_ICONEXCLAMATION);

		MPEG_SaveDIBFileIntoDatebase(lpszTemp320, fBlackness, g_myCamera.m_iCurrentChimney, g_myCamera.m_iCurrentCamera);
	}
	g_mySysState.iProcedureToBeContinued = -1;
	return 1;
}

bool MPEG_CvtBmpTo320(LPSTR lpszSocFileName, LPSTR lpszDstFileName)
{
	HDC hdc;
	hdc = GetDC(g_hwndMainWindow);
	g_myDIB2.LoadDIB(lpszSocFileName);

	HDC hMemDc;
	HBITMAP hBitmap;
	RECT rect;
	rect.left = 0;
	rect.top = 0;
	rect.right = 352;
	rect.bottom =288;
	
	hMemDc = CreateCompatibleDC(hdc);
	hBitmap = CreateCompatibleBitmap(hdc, 352, 288);
	SelectObject(hMemDc, hBitmap);

	g_myDIB2.ShowDIB(hMemDc, rect);

	g_myDIB.SaveStretchedDIB(hMemDc, rect, lpszDstFileName);
	DeleteDC(hMemDc);
	DeleteObject(hBitmap);

	g_myDIB2.CloseDIBFile();
	ReleaseDC(g_hwndMainWindow, hdc);

	return 1;
}

bool MPEG_SaveDIBFileIntoDatebase(LPSTR lpszFileName, float fBlackness, int nObjectID, int nCameraID)
// The bmp file refered to by lpszFileName must be a 320 * 240 bmp
{
	HDC hdc;
	hdc = GetDC(g_hwndMainWindow);
	g_myDIB2.LoadDIB(lpszFileName);

	HDC hMemDc;
	HBITMAP hBitmap;
	RECT rect;
	rect.left = 0;
	rect.top = 0;
	rect.right = 320;
	rect.bottom =240;
	
	hMemDc = CreateCompatibleDC(hdc);
	hBitmap = CreateCompatibleBitmap(hdc, 320, 240);
	SelectObject(hMemDc, hBitmap);

	g_myDIB2.ShowDIB(hMemDc, rect);
	g_myDIB.SaveDIBintoDatebase(hMemDc, rect, fBlackness, nObjectID, nCameraID);

	DeleteDC(hMemDc);
	DeleteObject(hBitmap);

	g_myDIB2.CloseDIBFile();
	ReleaseDC(g_hwndMainWindow, hdc);

	
	return 1;
}

bool MPEG_CreateChimneyTemplate1()
{
	char lpszTempOrg[100];

	g_mySysState.iProcedureToBeContinued = CREATE_CHIMNEY_TEMPLATE2;

	sprintf(lpszTempOrg, "%s\TempOrg.bmp", 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -