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

📄 videoclass.h

📁 电子监控的网络编程实例
💻 H
字号:
// VideoClass.h: interface for the CVideoClass class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_VIDEOCLASS_H__808CC65A_2E8F_4854_A492_94F48088610D__INCLUDED_)
#define AFX_VIDEOCLASS_H__808CC65A_2E8F_4854_A492_94F48088610D__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <vfw.h>
#include "imageload.h"

#define IS_WIN30_DIB(lpbi)  ((*(LPDWORD)(lpbi)) == sizeof(BITMAPINFOHEADER))
#define WM_STOP_AVI WM_USER+100


CString SaveBMP(CString DataPath, CString FileName, HDIB hDib);
CString SaveJPG(CString DataPath, CString FileName, HDIB hDib, int nQulity);
void DibAddText(HDIB &hDib,CString text, CString text2="");
HDIB DDBToDIB( CBitmap& bitmap, DWORD dwCompression, CPalette* pPal );
HBITMAP DIBtoDDB(HDIB hDib);
typedef struct tagMCB{
	BOOL IsIdentify;
	int rate,gray;
	int xPos1,yPos1,xPos2,yPos2;
}MCB;
void DrawDIB(HDC m_hDC,HDIB hDib,int left,int top,int width=0,int height=0);


class CVideoClass : public CObject  
{
public:
	
	typedef struct CaptOptionsStruc_tag
	{
		char fileName[MAX_PATH];//all modes
		short dateIn;//all modes
		short messIn;//all modes
		short pos;//all modes
		short fps;//AVI
		short limit;//AVI
		long mb;//AVI
		AVICOMPRESSOPTIONS aviCompressOpts;//AVI
		short addFileName;//AVI
	}CaptOptionsStruc;
	CaptOptionsStruc* m_pCapOptions;

	//AVI  Save  struct
	PAVIFILE m_pAVIFile;
	PAVISTREAM m_pAVIStream;
	PAVISTREAM m_pCompressedAVIStream;
	PAVISTREAM m_pWorkingStream;
	//	HGLOBAL m_hDIB;
	long m_SizeAVI;
	long m_nFrame;
	BOOL m_StopBySpace;
	//
	MCB mCB;
	CString DataPath;
	long lWidth,lHeight;
	HDIB m_hDib,m_hOldDib;
public:
	bool IsRecording();
	void ShowVideo( HDC hDC, int iLeft, int iTop, int iWidth, int iHeight);
	int InitVC(HDC hDC,HWND hWnd,CString Path=".\\BmpData\\bmp\\",BOOL FastMode=FALSE);//初始化
	int * Capture(PBYTE pImage,int iChanel=0,bool bFull=false,int CaptureDelay=-1, char* text="");//抓拍图片
	CString StartAVI(DWORD dwSize,DWORD nChanel=1);	
	void StopAVI();
	int DrawImage(PBYTE hImg,HDC hDC, int iLeft,int iTop,int iWidth,int iHeight);
	
	CVideoClass();
	virtual ~CVideoClass();
private:	
	long OpenAVIFile(CaptOptionsStruc *pCapOptions);
	long WriteDIB2AVIFile();
	long CloseAVIFile(CaptOptionsStruc *pCapOptions);
	void WriteLog(CString info);
private:
	BOOL m_IsCapture;  //是否正在保存成AVI
	CRect rect;    
	HDC m_hDC;
	HWND m_hWnd;
	BOOL IsInterlaced;   //是否隔行扫描
	DWORD m_nChanel;
			

};

#endif // !defined(AFX_VIDEOCLASS_H__808CC65A_2E8F_4854_A492_94F48088610D__INCLUDED_)

⌨️ 快捷键说明

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