亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? multicard.cpp

?? 基于SDK的圖像采集程序
?? CPP
字號:
// Multicard.cpp : Defines the class behaviors for the application.
//

#include "stdafx.h"
#include "Multicard.h"

#include "MainFrm.h"
#include "ChildFrm.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

//======== Add for ver5.2, begin =================
typedef struct tagSAVEDATA
{
	VideoStandard	standard;
	int				source;
	long			brightness;
	long			contrast;
	long			hue;
	long			saturation;
	VideoSubType	subtype;
	LONG			width;
	LONG			height;
} SAVEDATA;

//將卡的屬性設置成上次退出時的狀態
bool ResetParame(int iCardID)
{
	SAVEDATA SaveData;
	HRESULT hr;
	BOOL bConnectOk;
	VIDEOSTREAMINFO vsi;
	FILE * fp;
	char szFileName[20];

	hr = DSStream_IsConnected(iCardID, &bConnectOk);
	if(FAILED(hr) || !bConnectOk)
		return false;

	//從文件讀入數據
	sprintf(szFileName, "c:\\SaveData.%02d", iCardID);
	fp = fopen(szFileName, "rb");
	if(!fp)
		return false;
	fread(&SaveData, sizeof(SAVEDATA), 1, fp);
	fclose(fp);

	//設置視頻制式
	DSStream_SetVideoStandard(iCardID, SaveData.standard);

	//設置視頻源
	DSStream_RouteInPinToOutPin(iCardID, SaveData.source, 0);

	//設置視頻屬性:亮度、對比度、色度、飽和度
	DSStream_SetVideoPropertyValue(iCardID, VideoProperty_Brightness, SaveData.brightness);
	DSStream_SetVideoPropertyValue(iCardID, VideoProperty_Contrast, SaveData.contrast);
	DSStream_SetVideoPropertyValue(iCardID, VideoProperty_Hue, SaveData.hue);
	DSStream_SetVideoPropertyValue(iCardID, VideoProperty_Saturation, SaveData.saturation);

	//設置視頻格式:視頻格式、寬、高
	DSStream_GetVideoInfo(iCardID, &vsi, PREVIEW);
	vsi.subtype = SaveData.subtype;
	vsi.bmiHeader.biWidth = SaveData.width;
	vsi.bmiHeader.biHeight= SaveData.height;
	DSStream_DisconnectPin(iCardID, PREVIEW);
	DSStream_SetVideoInfo(iCardID, vsi, PREVIEW);
	DSStream_ConnectPin(iCardID, PREVIEW);

	return true;
}

//保存卡的當前屬性,以備下次連接時重新設回
bool SaveParame(int iCardID)
{
	SAVEDATA SaveData;
	HRESULT hr;
	BOOL bConnectOk;
	VIDEOSTREAMINFO vsi;
	VIDEOPROPERTYRANGE vpr;
	FILE * fp;
	char szFileName[20];

	hr = DSStream_IsConnected(iCardID, &bConnectOk);
	if(FAILED(hr) || !bConnectOk)
		return false;

	//保存視頻格式:視頻格式、寬、高
	DSStream_GetVideoInfo(iCardID, &vsi, PREVIEW);
	SaveData.subtype = vsi.subtype;
	SaveData.width = vsi.bmiHeader.biWidth;
	SaveData.height = vsi.bmiHeader.biHeight;

	//保存視頻制式
	DSStream_GetVideoStandard(iCardID, &SaveData.standard, NULL);

	//保存視頻源
	DSStream_WhatInPinRouteToOutPin(iCardID, 0, (long*)&SaveData.source);

	//保存亮度
	DSStream_GetVideoPropertyValue(iCardID, VideoProperty_Brightness, &vpr);
	SaveData.brightness = vpr.lValue;

	//保存對比度
	DSStream_GetVideoPropertyValue(iCardID, VideoProperty_Contrast, &vpr);
	SaveData.contrast = vpr.lValue;

	//保存色度
	DSStream_GetVideoPropertyValue(iCardID, VideoProperty_Hue, &vpr);
	SaveData.hue = vpr.lValue;

	//保存飽和度
	DSStream_GetVideoPropertyValue(iCardID, VideoProperty_Saturation, &vpr);
	SaveData.saturation = vpr.lValue;

	//保存參數到文件
	sprintf(szFileName, "c:\\SaveData.%02d", iCardID);
	fp = fopen(szFileName, "wb");
	if(!fp)
		return false;
	fwrite(&SaveData, sizeof(SAVEDATA), 1, fp);
	fclose(fp);

	return true;
}
//======== Add for ver5.2, end ===================

/////////////////////////////////////////////////////////////////////////////
// CMulticardApp

BEGIN_MESSAGE_MAP(CMulticardApp, CWinApp)
	//{{AFX_MSG_MAP(CMulticardApp)
	ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
		// NOTE - the ClassWizard will add and remove mapping macros here.
		//    DO NOT EDIT what you see in these blocks of generated code!
	ON_COMMAND(ID_FILE_NEW, OnFileNew)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMulticardApp construction

CMulticardApp::CMulticardApp()
{
	// TODO: add construction code here,
	// Place all significant initialization in InitInstance
}

/////////////////////////////////////////////////////////////////////////////
// The one and only CMulticardApp object

CMulticardApp theApp;

/////////////////////////////////////////////////////////////////////////////
// CMulticardApp initialization

BOOL CMulticardApp::InitInstance()
{
	HRESULT hr;
	int iCardNumber;

	//初始化SDK
	DSStream_Initialize();
	hr = DSStream_GetCardNumber(&iCardNumber);
	if(FAILED(hr) || iCardNumber<=0)
	{
		AfxMessageBox("SDK初始化失敗 或 無可用的卡", MB_OK|MB_ICONSTOP, 0);
		ExitInstance();
		return FALSE;
	}

	// Standard initialization
	// If you are not using these features and wish to reduce the size
	//  of your final executable, you should remove from the following
	//  the specific initialization routines you do not need.

#ifdef _AFXDLL
	Enable3dControls();			// Call this when using MFC in a shared DLL
#else
	Enable3dControlsStatic();	// Call this when linking to MFC statically
#endif

	// Change the registry key under which our settings are stored.
	// TODO: You should modify this string to be something appropriate
	// such as the name of your company or organization.
	SetRegistryKey(_T("Local AppWizard-Generated Applications"));

	// To create the main window, this code creates a new frame window
	// object and then sets it as the application's main window object.

	CMDIFrameWnd* pFrame = new CMainFrame;
	m_pMainWnd = pFrame;

	// create main MDI frame window
	if (!pFrame->LoadFrame(IDR_MAINFRAME))
		return FALSE;

	// try to load shared MDI menus and accelerator table
	//TODO: add additional member variables and load calls for
	//	additional menu types your application may need. 

	HINSTANCE hInst = AfxGetResourceHandle();
	m_hMDIMenu  = ::LoadMenu(hInst, MAKEINTRESOURCE(IDR_MULTICTYPE));
	m_hMDIAccel = ::LoadAccelerators(hInst, MAKEINTRESOURCE(IDR_MULTICTYPE));

	// The main window has been initialized, so show and update it.
	m_nCmdShow = SW_SHOWMAXIMIZED;
	pFrame->SetWindowText("10Moons SDK2000 & 4Video(Plus) 開發包 VC++ Sample [ver 5.2]");
	pFrame->ShowWindow(m_nCmdShow);
	pFrame->UpdateWindow();

	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////
// CMulticardApp message handlers

int CMulticardApp::ExitInstance() 
{
	//釋放SDK資源
	DSStream_Uninitialize();

	//TODO: handle additional resources you may have added
	if (m_hMDIMenu != NULL)
		FreeResource(m_hMDIMenu);
	if (m_hMDIAccel != NULL)
		FreeResource(m_hMDIAccel);

	return CWinApp::ExitInstance();
}

void CMulticardApp::OnFileNew() 
{
	CChildFrame * pChildFrame;
	HRESULT hr;
	int id;
	BOOL bIsConnected = TRUE;

	int iCardNumber;
	char szDeviceName[MAX_DEVICE_NUM][MAX_DEVICE_NAME_LEN];
	const char sz10Moons[] = {"10Moons"};

	//尋找可用的卡,剔除非10Moons卡
	hr = DSStream_EnumVideoCaptureDev(szDeviceName, &iCardNumber);
	if(FAILED(hr))
	{
		AfxMessageBox("枚舉失敗", MB_OK, 0);
		return;
	}
	for(id=0; id<iCardNumber; id++)
	{
		szDeviceName[id][7] = '\0';
		hr = DSStream_IsConnected(id, &bIsConnected);
		if(FAILED(hr))
		{
			bIsConnected = TRUE;
			break;
		}
		if(_stricmp(szDeviceName[id], sz10Moons) != 0)
		{
			bIsConnected = TRUE;
			continue;
		}
		if(!bIsConnected)
			break;
	}

	//無可用的卡
	if(bIsConnected || id>=iCardNumber)
	{
		AfxMessageBox("無可用的卡", MB_OK, 0);
		return;
	}

	//連接卡:默認使用 Preview 模式
	const BOOL bOverlay = FALSE;
	hr = DSStream_ConnectDevice(id, bOverlay);
	if(FAILED(hr))
	{
		AfxMessageBox("連接視頻卡失敗!", MB_OK, 0);
		return;
	}

	// create a new MDI child window
	CMainFrame* pFrame = STATIC_DOWNCAST(CMainFrame, m_pMainWnd);
	pChildFrame = (CChildFrame *) pFrame->CreateNewChild(
		RUNTIME_CLASS(CChildFrame), IDR_MULTICTYPE, m_hMDIMenu, m_hMDIAccel);

	//將卡號傳給 CChildFrame 類的成員變量 m_iCardID
	if(pChildFrame && IsWindow(pChildFrame->m_hWnd))
	{
		pChildFrame->m_iCardID = id;
		pChildFrame->m_bOverlay = bOverlay;

		DSStream_SetOwnerWnd(id, pChildFrame->m_hWnd);
		DSStream_SetMessageDrain(id, pChildFrame->m_hWnd);
		DSStream_SetNotifyWindow(id, pChildFrame->m_hWnd, UM_VIDEO_ERROR_NOTIFY);

//======== Add for ver5.2, begin =================
		//將卡的屬性設置成上次退出時的狀態
		ResetParame(id);
//======== Add for ver5.2, end ===================

		pChildFrame->SendMessage(WM_COMMAND, ID_NORMALSIZE);

		char szCaption[10];
		sprintf(szCaption, "%d號卡", id);
		pChildFrame->SetWindowText(szCaption);
	}
}



/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
		// No message handlers
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
		// No message handlers
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

// App command to run the dialog
void CMulticardApp::OnAppAbout()
{
	CAboutDlg aboutDlg;
	aboutDlg.DoModal();
}

/////////////////////////////////////////////////////////////////////////////
// CMulticardApp message handlers

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产一区二区三区不卡 | 欧美一卡2卡三卡4卡5免费| 尤物av一区二区| 色综合中文字幕国产 | 国产在线国偷精品产拍免费yy| 4hu四虎永久在线影院成人| 日本欧美一区二区在线观看| 精品少妇一区二区三区视频免付费| 精品一区二区三区影院在线午夜| 久久久久久9999| 成人黄色电影在线| 一级日本不卡的影视| 欧美老肥妇做.爰bbww视频| 麻豆成人综合网| 国产欧美一区二区三区在线老狼| 91在线一区二区| 亚洲午夜影视影院在线观看| 日韩欧美一区二区三区在线| 成人免费黄色在线| 亚洲成人自拍偷拍| 国产精品亚洲成人| 亚洲va国产va欧美va观看| 日韩欧美色电影| 国产成人在线视频播放| 怡红院av一区二区三区| 欧美一级二级三级蜜桃| 成人爱爱电影网址| 亚洲成av人综合在线观看| 久久女同精品一区二区| 色噜噜狠狠色综合欧洲selulu| 日本aⅴ精品一区二区三区 | 久久精品夜色噜噜亚洲a∨| 99久久伊人网影院| 蜜臀av性久久久久蜜臀aⅴ四虎| 中文在线一区二区| 日韩欧美中文一区二区| 99v久久综合狠狠综合久久| 久久国产乱子精品免费女| 一区二区成人在线观看| 久久久久国产精品麻豆ai换脸| 欧美日韩一区在线观看| 欧美视频一区二区三区四区| 一区二区久久久久久| 精品国产在天天线2019| 欧美视频一区二区三区四区| 国产老肥熟一区二区三区| 天天影视色香欲综合网老头| 欧美经典一区二区三区| 日韩三级av在线播放| 欧美综合久久久| 韩国女主播成人在线观看| 午夜视频一区二区| 成人欧美一区二区三区黑人麻豆| 精品久久久网站| 日韩一区二区在线观看| 欧美中文字幕亚洲一区二区va在线| 国产v日产∨综合v精品视频| 奇米精品一区二区三区在线观看一| 中文字幕在线不卡国产视频| 日韩三级av在线播放| 欧美日韩国产在线观看| 欧美在线不卡视频| 一本一道综合狠狠老| av电影天堂一区二区在线| 精品福利在线导航| 欧美一区二区三区男人的天堂| jlzzjlzz欧美大全| av电影在线观看一区| 成人一二三区视频| 国产.欧美.日韩| 国产91综合一区在线观看| 国内外精品视频| 国内精品久久久久影院色| 日韩精品一区第一页| 婷婷久久综合九色综合绿巨人| 亚洲精品乱码久久久久久日本蜜臀| 国产精品美女久久福利网站| 久久精品亚洲乱码伦伦中文 | av激情成人网| 91丨porny丨国产入口| 成人高清视频免费观看| 成人午夜伦理影院| 99久久久国产精品| 色婷婷久久久亚洲一区二区三区 | 久久久国产精品麻豆| 精品日韩欧美一区二区| 2021中文字幕一区亚洲| 国产人妖乱国产精品人妖| 国产精品免费人成网站| 亚洲人成网站精品片在线观看| 一区二区三区在线视频观看58| 亚洲午夜电影网| 视频精品一区二区| 国产一区二区影院| a美女胸又www黄视频久久| 色狠狠一区二区| 欧美日韩国产影片| 精品成a人在线观看| 中日韩av电影| 亚洲一线二线三线久久久| 日韩精品欧美精品| 国产精品77777| 91麻豆蜜桃一区二区三区| 欧美日韩国产小视频在线观看| 日韩三级视频在线看| 中文天堂在线一区| 亚洲电影你懂得| 美国十次了思思久久精品导航| 国产传媒一区在线| 91成人免费电影| 欧美v亚洲v综合ⅴ国产v| 中文字幕一区av| 日韩成人午夜电影| 成人av电影免费在线播放| 欧美日韩电影在线| 国产清纯白嫩初高生在线观看91| 亚洲综合一二三区| 国产一级精品在线| 欧美日韩精品系列| 亚洲国产精品ⅴa在线观看| 亚洲午夜免费福利视频| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 成人免费看黄yyy456| 欧美精品日韩精品| 中文字幕一区二区在线观看| 日本欧美一区二区| 色综合久久中文字幕| 精品欧美黑人一区二区三区| 依依成人精品视频| 国产成人高清在线| 欧美一区二区二区| 亚洲柠檬福利资源导航| 国内精品久久久久影院薰衣草| 91精彩视频在线| 国产色综合久久| 日日摸夜夜添夜夜添亚洲女人| 波多野结衣在线aⅴ中文字幕不卡 波多野结衣在线一区 | 日韩美女一区二区三区四区| 亚洲六月丁香色婷婷综合久久 | 日日骚欧美日韩| 91玉足脚交白嫩脚丫在线播放| 日韩欧美中文字幕精品| 亚洲成av人片| 日本福利一区二区| 国产精品色眯眯| 国产酒店精品激情| 精品美女一区二区| 日韩av一级片| 欧美日韩精品三区| 亚洲国产欧美在线人成| 色综合中文综合网| 日本不卡一区二区三区高清视频| 91免费版在线| 国产精品免费视频观看| 国产成人在线视频网站| 久久久亚洲国产美女国产盗摄 | 麻豆国产精品777777在线| 欧美亚洲愉拍一区二区| 亚洲男人的天堂在线aⅴ视频 | 色偷偷88欧美精品久久久| 国产精品毛片无遮挡高清| 国产成人在线视频播放| 久久精品综合网| 国产成人一区二区精品非洲| 亚洲精品一区二区在线观看| 老色鬼精品视频在线观看播放| 欧美一区永久视频免费观看| 亚洲mv大片欧洲mv大片精品| 欧美亚洲动漫制服丝袜| 一区二区在线看| 欧美日韩一区二区欧美激情| 亚洲福利一区二区三区| 欧美日韩国产免费一区二区 | 亚洲精品一区二区三区影院| 久久国产综合精品| 久久久久久久久蜜桃| 国产成人精品影院| 国产精品国产三级国产aⅴ中文 | 成人av资源下载| 中文字幕乱码日本亚洲一区二区| 五月婷婷激情综合网| a4yy欧美一区二区三区| 亚洲九九爱视频| 国产精品资源在线看| 久久亚洲私人国产精品va媚药| 国产高清不卡二三区| 欧美精品粉嫩高潮一区二区| 免费看欧美女人艹b| 2020国产精品| 91天堂素人约啪| 夜夜精品视频一区二区| 欧美一区二区三区在线视频| 国产精品亚洲一区二区三区在线| 欧美激情一区二区三区蜜桃视频| www.av亚洲| 日韩国产成人精品| 国产亚洲美州欧州综合国| 91日韩在线专区| 日本亚洲欧美天堂免费| 欧美国产乱子伦|