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

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

?? camtooldlg.cpp

?? CAM-TOOL 是高效率高質量的模具制造的最好CAM解決方案。在當今的 Windows 操作環(huán)境里
?? CPP
?? 第 1 頁 / 共 3 頁
字號:

    // Resize the video preview window to match owner window size
    if (g_pVW)
        g_pVW->SetWindowPosition(0, 0, rc.right, rc.bottom);
}


HRESULT CCamToolDlg::ChangePreviewState(int nShow)
{
    HRESULT hr;
    
    // If the media control interface isn't ready, don't call it
    if (!g_pMC)
        return S_OK;
    
    if (nShow)
    {
        if (g_psCurrent != Running)
        {
            // Start previewing video data
            hr = g_pMC->Run();
            g_psCurrent = Running;
        }
    }
    else
    {
        // Stop previewing video data
        hr = g_pMC->StopWhenReady();
        g_psCurrent = Stopped;
    }

    return hr;
}

HRESULT CCamToolDlg::SetupVideoWindow()
{
    HRESULT hr;

    // Set the video window to be a child of the main window
    hr = g_pVW->put_Owner((long)PreviewHwnd);
    if (FAILED(hr))
        return hr;
    
    // Set video window style
    hr = g_pVW->put_WindowStyle(WS_CHILD | WS_CLIPCHILDREN);
    if (FAILED(hr))
        return hr;

    // Use helper function to position video window in client rect 
    // of main application window
    ResizeVideoWindow();

    // Make the video window visible, now that it is properly positioned
    hr = g_pVW->put_Visible(OATRUE);
    if (FAILED(hr))
        return hr;

    return hr;
}

HRESULT CCamToolDlg::FindCaptureDevice(IBaseFilter ** ppSrcFilter)
{
    HRESULT hr;
    IBaseFilter * pSrc = NULL;
    CComPtr <IMoniker> pMoniker =NULL;
    ULONG cFetched;
   
    // Create the system device enumerator
    CComPtr <ICreateDevEnum> pDevEnum =NULL;

    hr = CoCreateInstance (CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC,
        IID_ICreateDevEnum, (void ** ) &pDevEnum);
    if (FAILED(hr))
    {
        Msg(TEXT("Couldn't create system enumerator!  hr=0x%x"), hr);
        return hr;
    }

    // Create an enumerator for the video capture devices
    CComPtr <IEnumMoniker> pClassEnum = NULL;

    hr = pDevEnum->CreateClassEnumerator (CLSID_VideoInputDeviceCategory, &pClassEnum, 0);
    if (FAILED(hr))
    {
        Msg(TEXT("Couldn't create class enumerator!  hr=0x%x"), hr);
        return hr;
    }

    // If there are no enumerators for the requested type, then 
    // CreateClassEnumerator will succeed, but pClassEnum will be NULL.
    if (pClassEnum == NULL)
    {
        ::MessageBox(PreviewHwnd,TEXT("No video capture device was detected.\r\n\r\n")
                   TEXT("This sample requires a video capture device, such as a USB WebCam,\r\n")
                   TEXT("to be installed and working properly.  The sample will now close."),
                   TEXT("No Video Capture Hardware"), MB_OK | MB_ICONINFORMATION);
        return E_FAIL;
    }

    // Use the first video capture device on the device list.
    // Note that if the Next() call succeeds but there are no monikers,
    // it will return S_FALSE (which is not a failure).  Therefore, we
    // check that the return code is S_OK instead of using SUCCEEDED() macro.
    if (S_OK == (pClassEnum->Next (1, &pMoniker, &cFetched)))
    {
        // Bind Moniker to a filter object
        hr = pMoniker->BindToObject(0,0,IID_IBaseFilter, (void**)&pSrc);
        if (FAILED(hr))
        {
            Msg(TEXT("Couldn't bind moniker to filter object!  hr=0x%x"), hr);
            return hr;
        }
    }
    else
    {
        Msg(TEXT("Unable to access video capture device!"));   
        return E_FAIL;
    }

    // Copy the found filter pointer to the output parameter.
    // Do NOT Release() the reference, since it will still be used
    // by the calling function.
    *ppSrcFilter = pSrc;

    return hr;
}

HRESULT CCamToolDlg::GetInterfaces()
{
    HRESULT hr;

    // Create the filter graph
    hr = CoCreateInstance (CLSID_FilterGraph, NULL, CLSCTX_INPROC,
        IID_IGraphBuilder, (void **) &g_pGraph);
    if (FAILED(hr))
        return hr;

    // Create the capture graph builder
    hr = CoCreateInstance (CLSID_CaptureGraphBuilder2 , NULL, CLSCTX_INPROC,
        IID_ICaptureGraphBuilder2, (void **) &g_pCapture);
    if (FAILED(hr))
        return hr;
    
    // Obtain interfaces for media control and Video Window
    hr = g_pGraph->QueryInterface(IID_IMediaControl,(LPVOID *) &g_pMC);
    if (FAILED(hr))
        return hr;

    hr = g_pGraph->QueryInterface(IID_IVideoWindow, (LPVOID *) &g_pVW);
    if (FAILED(hr))
        return hr;

    hr = g_pGraph->QueryInterface(IID_IMediaEvent, (LPVOID *) &g_pME);
    if (FAILED(hr))
        return hr;

    // Set the window handle used to process graph events
    hr = g_pME->SetNotifyWindow((OAHWND)/*PreviewHwnd*/AppHwnd, WM_GRAPHNOTIFY, 0);

    return hr;
}

HRESULT CCamToolDlg::HandleGraphEvent()
{
    LONG evCode, evParam1, evParam2;
    HRESULT hr=S_OK;

    while(SUCCEEDED(g_pME->GetEvent(&evCode, &evParam1, &evParam2, 0)))
    {
        //
        // Free event parameters to prevent memory leaks associated with
        // event parameter data.  While this application is not interested
        // in the received events, applications should always process them.
        //
		// EC_ACTIVATE A video window is being activated or deactivated. 
		// EC_BUFFERING_DATA The graph is buffering data, or has stopped buffering data. 
		// EC_CLOCK_CHANGED The reference clock has changed. 
		// EC_COMPLETE All data from a particular stream has been rendered. 
		// EC_DEVICE_LOST A Plug and Play device was removed or has become available again. 
		// EC_DISPLAY_CHANGED The display mode has changed. 
		// EC_END_OF_SEGMENT The end of a segment has been reached. 
		// EC_ERROR_STILLPLAYING An asynchronous command to run the graph has failed. 
		// EC_ERRORABORT An operation was aborted because of an error. 
		// EC_FULLSCREEN_LOST The video renderer is switching out of full-screen mode. 
		// EC_GRAPH_CHANGED The filter graph has changed. 
		// EC_NEED_RESTART A filter is requesting that the graph be restarted. 
		// EC_NOTIFY_WINDOW Notifies a filter of the video renderer's window. 
		// EC_OLE_EVENT A filter is passing a text string to the application. 
		// EC_OPENING_FILE The graph is opening a file, or has finished opening a file. 
		// EC_PALETTE_CHANGED The video palette has changed. 
		// EC_PAUSED A pause request has completed. 
		// EC_QUALITY_CHANGE The graph is dropping samples, for quality control. 
		// EC_REPAINT A video renderer requires a repaint. 
		// EC_SEGMENT_STARTED A new segment has started. 
		// EC_SHUTTING_DOWN The filter graph is shutting down, prior to being destroyed. 
		// EC_SNDDEV_IN_ERROR An audio device error has occurred on an input pin. 
		// EC_SNDDEV_OUT_ERROR An audio device error has occurred on an output pin. 
		// EC_STARVATION A filter is not receiving enough data. 
		// EC_STEP_COMPLETE A filter performing frame stepping has stepped the specified number of frames. 
		// EC_STREAM_CONTROL_STARTED A stream-control start command has taken effect. 
		// EC_STREAM_CONTROL_STOPPED A stream-control start command has taken effect. 
		// EC_STREAM_ERROR_STILLPLAYING An error has occurred in a stream. The stream is still playing. 
		// EC_STREAM_ERROR_STOPPED A stream has stopped because of an error. 
		// EC_USERABORT The user has terminated playback. 
		// EC_VIDEO_SIZE_CHANGED The native video size has changed. 
		// EC_WINDOW_DESTROYED The video renderer was destroyed or removed from the graph. 

        hr = g_pME->FreeEventParams(evCode, evParam1, evParam2);
        
        // Insert event processing code here, if desired

		if (evCode == EC_DEVICE_LOST)
		{
			// Check if we have lost a capture filter being used.
			// lParam2 of EC_DEVICE_LOST event == 1 indicates device added
			//								   == 0 indicates device removed
			if (evParam2 == 0)
			{
				m_connect->EnableWindow(FALSE);
				EnableAllUI(FALSE);
				m_exit->EnableWindow(TRUE);

				Error( TEXT("Device Removed or No Connect!!!\r\n\r\n")
				   TEXT("Please connect the camera to PC, and execute\r\n")
				   TEXT("the CamTool again.") );
			}
		}

	}

    return hr;
}

HRESULT CCamToolDlg::CaptureVideo()
{
    HRESULT hr;
    IBaseFilter *pSrcFilter=NULL;

    // Get DirectShow interfaces
    hr = GetInterfaces();
    if (FAILED(hr))
    {
        Msg(TEXT("Failed to get video interfaces!  hr=0x%x"), hr);
        return hr;
    }

    // Attach the filter graph to the capture graph
    hr = g_pCapture->SetFiltergraph(g_pGraph);
    if (FAILED(hr))
    {
        Msg(TEXT("Failed to set capture filter graph!  hr=0x%x"), hr);
        return hr;
    }

    // Use the system device enumerator and class enumerator to find
    // a video capture/preview device, such as a desktop USB video camera.
    hr = FindCaptureDevice(&pSrcFilter);
    if (FAILED(hr))
    {
        // Don't display a message because FindCaptureDevice will handle it
        return hr;
    }
   
    // Add Capture filter to our graph.
    hr = g_pGraph->AddFilter(pSrcFilter, L"Video Capture");
    if (FAILED(hr))
    {
        Msg(TEXT("Couldn't add capture filter to graph!  hr=0x%x"), hr);
        pSrcFilter->Release();
        return hr;
    }

    // Render the preview pin on the video capture filter
    // Use this instead of g_pGraph->RenderFile
    hr = g_pCapture->RenderStream (&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video,
                                 pSrcFilter, NULL, NULL);
    if (FAILED(hr))
    {
        Msg(TEXT("Couldn't render capture stream.  "
                 "The device may already be in use.\r\n\r\nhr=0x%x"), hr);
        pSrcFilter->Release();
        return hr;
    }

    // Now that the filter has been added to the graph and we have
    // rendered its stream, we can release this reference to the filter.
    pSrcFilter->Release();

    // Set video window style and position
    hr = SetupVideoWindow();
    if (FAILED(hr))
    {
        Msg(TEXT("Couldn't initialize video window!  hr=0x%x"), hr);
        return hr;
    }

    // Start previewing video data
    hr = g_pMC->Run();
    if (FAILED(hr))
    {
        Msg(TEXT("Couldn't run the graph!  hr=0x%x"), hr);
        return hr;
    }

    // Remember current state
    g_psCurrent = Running;

        
    return S_OK;
}

void CCamToolDlg::CloseGraphInterface()
{
    // Stop previewing data
    if (g_pMC)
        g_pMC->StopWhenReady();

    g_psCurrent = Stopped;

    // Stop receiving events
    if (g_pME)
        g_pME->SetNotifyWindow(NULL, WM_GRAPHNOTIFY, 0);

    // Relinquish ownership (IMPORTANT!) of the video window.
    // Failing to call put_Owner can lead to assert failures within
    // the video renderer, as it still assumes that it has a valid
    // parent window.
    if(g_pVW)
    {
        g_pVW->put_Visible(OAFALSE);
        g_pVW->put_Owner(NULL);
    }

    // Release DirectShow interfaces
    SAFE_RELEASE(g_pMC);
    SAFE_RELEASE(g_pME);
    SAFE_RELEASE(g_pVW);
    SAFE_RELEASE(g_pGraph);
    SAFE_RELEASE(g_pCapture);
}

//Load JPEG file by file name, and transfer YUV into RGB
void CCamToolDlg::LoadJPG(CString fileName)
{
      if (m_buf!=NULL) {
		delete [] m_buf;
		m_buf=NULL;
	}

	// read to buffer tmp
	m_buf = JpegFile::JpegFileToRGB(fileName, &m_width, &m_height);

	//////////////////////
	// set up for display

	// do this before DWORD-alignment!!!
	// this works on packed (not DWORD-aligned) buffers
	// swap red and blue for display
	JpegFile::BGRFromRGB(m_buf, m_width, m_height);

	// vertical flip for display
	JpegFile::VertFlipBuf(m_buf, m_width * 3, m_height);

}

void  CCamToolDlg::DrawPics(unsigned char redraw)//, unsigned char action)
{
	if (m_buf==NULL) return  ;

	CWnd *pWnd = GetDlgItem(IDC_DISPLAY);
	CDC *theDC = pWnd->GetDC();
	UINT col, row;
	UINT x,y;
	unsigned short DivX, DivY;

	if (theDC!=NULL) {

		CRect clientRect;
		pWnd->GetClientRect(&clientRect);
		if(redraw) {
			pWnd->Invalidate();
			pWnd->UpdateWindow();
		}

		// Center It
		int left = clientRect.left;
		int top = clientRect.top;

		DivX = m_width / 320;
		DivY = m_height / 240;

		x = 320;//m_width/REF_DIV;
		y = 240;//m_height/REF_DIV;

		for (row = 0; row < y; row++) {
			for (col = 0; col < x; col++) {
				*(bmp+ (row * x + col)*3) = *(m_buf + (row* m_width * DivY + col*DivX)*3);
				*(bmp+ (row * x + col)*3 + 1) = *(m_buf + (row* m_width * DivY + col*DivX)*3 +1);
				*(bmp+ (row * x + col)*3 + 2) = *(m_buf + (row* m_width * DivY + col*DivX)*3 + 2);
			}
		}

		tmp= JpegFile::MakeDwordAlignedBuf(bmp,
										 x,
										 y,
										 &m_widthDW);

 

		// set up a DIB 
		BITMAPINFOHEADER bmiHeader;
		bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
		bmiHeader.biWidth = x;
		bmiHeader.biHeight = y;
		bmiHeader.biPlanes = 1;
		bmiHeader.biBitCount = 24;
		bmiHeader.biCompression = BI_RGB;
		bmiHeader.biSizeImage = x*y*3;
		bmiHeader.biXPelsPerMeter = 0;
		bmiHeader.biYPelsPerMeter = 0;
		bmiHeader.biClrUsed = 0;
		bmiHeader.biClrImportant = 0;

		int lines = StretchDIBits(theDC->m_hDC,
									left, top,
									x,
									y,
									0,0,
									x,
									y,
									tmp,
									(LPBITMAPINFO)&bmiHeader,
									DIB_RGB_COLORS,
									SRCCOPY);

		ReleaseDC(theDC);
	}

}

BOOL CCamToolDlg::ReadDefaultFromIniFile()
{
	int	cFlength;
	char drive[_MAX_DRIVE], szOurPath[_MAX_PATH];
	char dir[_MAX_DIR];
	char fname[_MAX_FNAME];
	char ext[_MAX_EXT];
	char szProfileName[_MAX_PATH];   
	CFile cf;

	HINSTANCE hInstance;
    hInstance=AfxGetInstanceHandle();

	if( GetModuleFileName( hInstance,  szOurPath,   _MAX_PATH ) == 0 )
	{
//		SetWindowText( "GetModuelfile error!" );
		return 1;
	}
	_splitpath(szOurPath, drive, dir, fname, ext);
	_makepath(szProfileName, drive, dir, fname, "ini" );   // make profile filename

	if( cf.Open( "KD3310Z.ini", CFile::modeRead ) ) {
		cFlength = cf.GetLength();
		cf.Close();
		_makepath(szProfileName, drive, dir, "KD3310Z", "ini" );   // make profile filename
	}else {
//		SetWindowText( "file 'KD3310Z.ini' not find" );
		return 1;
	}
	RRatio = GetPrivateProfileInt("Init Value","RRatio" , 913, szProfileName);
	GRatio = GetPrivateProfileInt("Init Value","GRatio" , 985, szProfileName);
	BRatio = GetPrivateProfileInt("Init Value","BRatio" , 807, szProfileName);

	SharpnessValue = GetPrivateProfileInt("Init Value","Sharpness" , 2, szProfileName);
	OBValue = GetPrivateProfileInt("Init Value","OB" , 0, szProfileName);
	SaturaionValue = GetPrivateProfileInt("Init Value","Saturation" , 1, szProfileName);
//	char str[80];
//	sprintf(str,"%d,%d,%d,%d,%d,%d",RRatio,GRatio,BRatio,SharpnessValue,OBValue,SaturaionValue);
//	SetWindowText(str);

	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产欧美一区二区| 三级亚洲高清视频| 韩国女主播一区| 欧美精选午夜久久久乱码6080| 国产精品传媒视频| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美精品tushy高清| 亚洲激情av在线| 97精品超碰一区二区三区| 国产精品久久久久久久久动漫 | 欧美色图激情小说| 亚洲一区二区3| 欧美午夜精品理论片a级按摩| 亚洲视频免费看| 91久久奴性调教| 亚瑟在线精品视频| 欧美视频你懂的| ...xxx性欧美| 在线免费观看一区| 五月天国产精品| 日韩一区二区三区观看| 日本不卡的三区四区五区| 日韩女优视频免费观看| 久久99精品国产91久久来源| 日韩免费一区二区三区在线播放| 一级精品视频在线观看宜春院| 欧美午夜宅男影院| 秋霞国产午夜精品免费视频| 欧美一级理论性理论a| 精品一二线国产| 国产精品欧美一区喷水| 91天堂素人约啪| 水野朝阳av一区二区三区| 国产欧美日韩精品在线| 7777精品伊人久久久大香线蕉经典版下载| 狠狠色狠狠色综合| 亚洲一区二区三区在线看| 久久亚洲一级片| 7777精品伊人久久久大香线蕉的| 国产91精品一区二区麻豆网站| 亚洲成人高清在线| 中文字幕在线视频一区| 日韩三级免费观看| 成a人片国产精品| 舔着乳尖日韩一区| 亚洲国产精品精华液2区45| 欧美性一区二区| 国产乱码字幕精品高清av| 亚洲自拍另类综合| 久久久久久99久久久精品网站| 成人av在线播放网址| 日韩电影在线观看网站| 国产三级久久久| 欧美日韩电影在线| 91玉足脚交白嫩脚丫在线播放| 婷婷一区二区三区| 国产精品灌醉下药二区| 3d动漫精品啪啪| 欧美日韩亚洲综合一区| www.亚洲在线| 成人免费视频视频| 午夜精品久久久久久久久久久| 久久亚洲一区二区三区四区| 欧美浪妇xxxx高跟鞋交| 99热这里都是精品| 国产真实乱子伦精品视频| 亚洲精品视频一区二区| **性色生活片久久毛片| 中文字幕一区二区5566日韩| 国产偷国产偷精品高清尤物| 欧美精品一区二区久久久 | 欧美丰满高潮xxxx喷水动漫| 91社区在线播放| 91丨九色丨尤物| 91在线视频播放| 94-欧美-setu| 在线视频综合导航| 在线欧美小视频| 欧美日韩国产美| 欧美一三区三区四区免费在线看| 精品视频一区三区九区| 欧美日本视频在线| 欧美日韩大陆一区二区| 欧美日韩国产精选| 日韩美女在线视频| 久久这里只精品最新地址| 国产清纯在线一区二区www| 国产精品亲子伦对白| 亚洲视频一区二区免费在线观看| 国产精品久久99| 亚洲亚洲精品在线观看| 日韩av一区二区三区| 精品亚洲国内自在自线福利| 国产一区二区三区不卡在线观看| 成人性色生活片免费看爆迷你毛片| 国产99久久久国产精品潘金 | 日韩欧美成人一区| 久久久久国产精品厨房| 日本一区二区三区视频视频| 中文字幕永久在线不卡| 怡红院av一区二区三区| 日韩福利视频网| 国产一区二区91| 91麻豆精东视频| 制服.丝袜.亚洲.另类.中文| 精品少妇一区二区三区在线播放| 国产欧美日韩另类一区| 亚洲一二三区在线观看| 国产自产视频一区二区三区| 96av麻豆蜜桃一区二区| 久久免费偷拍视频| 国产精品久线观看视频| 亚洲成人你懂的| 国精品**一区二区三区在线蜜桃| 成人免费精品视频| 欧美区一区二区三区| 国产亚洲午夜高清国产拍精品| 亚洲日本va午夜在线影院| 日本美女一区二区| 波多野结衣精品在线| 91精品福利在线一区二区三区| 日本一区免费视频| 天堂一区二区在线| 成人av在线网站| 精品久久人人做人人爱| 亚洲色图在线看| 国产自产v一区二区三区c| 欧美综合在线视频| 精品日韩av一区二区| 亚洲国产综合人成综合网站| 国产成人精品免费在线| 91精品国产欧美一区二区 | 亚洲成国产人片在线观看| 国产精品中文有码| 欧美一区2区视频在线观看| 国产精品日日摸夜夜摸av| 蜜臀精品久久久久久蜜臀| 99久久久国产精品| 国产日韩一级二级三级| 日韩和欧美一区二区三区| 一本大道久久a久久精二百| 久久亚洲精精品中文字幕早川悠里| 亚洲国产精品久久不卡毛片| 成人av电影在线| 欧美极品美女视频| 国产一区二区三区高清播放| 欧美日韩久久一区二区| 亚洲激情自拍视频| 白白色亚洲国产精品| 日本一区二区电影| 国产精品18久久久久| 日韩美女天天操| 奇米亚洲午夜久久精品| 欧美日韩精品一区二区天天拍小说| 亚洲色图19p| av一二三不卡影片| 国产精品嫩草久久久久| 国产成人免费高清| 精品久久久影院| 日韩电影网1区2区| 777久久久精品| 日韩高清不卡在线| 欧美一级淫片007| 视频一区欧美日韩| 欧美撒尿777hd撒尿| 亚洲国产美国国产综合一区二区| 99精品视频一区二区三区| 国产精品传媒在线| 色94色欧美sute亚洲线路一久| 国产精品美女久久久久久久久 | 91精品1区2区| 亚洲综合色自拍一区| 在线中文字幕一区二区| 亚洲午夜电影网| 欧美精品在欧美一区二区少妇 | 国产一区二区福利| 国产免费观看久久| 91视频免费播放| 樱花影视一区二区| 在线成人高清不卡| 蜜臀av一区二区在线免费观看| 欧美xxxxxxxxx| 国产盗摄女厕一区二区三区 | 欧美日韩成人综合| 日本亚洲一区二区| 国产亚洲一区二区三区| 成人做爰69片免费看网站| 中文字幕一区二区三区在线播放| 91视频免费观看| 日韩国产欧美在线观看| 欧美大片日本大片免费观看| 国产精品99久久久久久似苏梦涵| 国产精品国产自产拍在线| 欧美亚洲愉拍一区二区| 青青草原综合久久大伊人精品 | **欧美大码日韩| 欧美日韩在线三级| 久久99精品视频| 国产精品久久久久aaaa樱花| 欧美亚洲精品一区|