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

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

?? okfunc.c

?? OK系列PCI圖象卡編程程序,MFC方式,壓縮形式
?? C
?? 第 1 頁 / 共 2 頁
字號:
			}
			InvalidateRect(hwnd,NULL,FALSE);
			UpdateWindow(hwnd);
			//Sleep(100);
		}
		break;
	case USERMEMORY:
		//內存
		for(no=CaptureStart;no<=CaptureEnd;no++){
			blkTg.lpBits=lpMemory+(GetFrameSize(hBoard) * (no-1));
			if( (LOWORD(bufform)==FORM_GRAY10) ||(LOWORD(bufform)==FORM_GRAY12) ) { //special  
				//way 1
				okConvertRect(hBoard,(TARGET)&blk,0,(TARGET)&blkTg,(short)no,1);
				//way 2
				//okReadRectEx(hBoard,BUFFER,(short)no,lpdib, MAKELONG(FORM_GRAY8,1)); 
														 //read only red data
			}
			else {
				//way 1
				okTransferRect(hBoard,(TARGET)&blk,0,(TARGET)&blkTg,(short)no,1);
				//way 2
				//okReadRect(hBoard,BUFFER,(short)no,lpdib);
			}
			InvalidateRect(hwnd,NULL,FALSE);
			UpdateWindow(hwnd);
			Sleep(100);
		}
		break;
	case USERFILE:
		//文件
		break;
	}
}

//to open one board as current board to operate
HANDLE	OpenCard(HWND hWnd)
{
	//RECT			rcVidRect;	
	//打開采集卡,返回采集卡句柄
//	short	typecode;
	char	string[100];
	MEMORYSTATUS Status;

	//check if pre_allocated buffer
	okGetAvailBuffer(NULL,&dwBufSize);	//檢測已分配內存
	//okGetBufferSize(hBoard,NULL,&dwBufSize);//			
	if(dwBufSize==0) 
		MessageBox(hwnd, "There are no buffer pre-allocated !","Warning",MB_OK);

	//just starting, then allocated memory for dib
	if(!lpbi) { 
		//下面為應用程序分配內存
		GlobalMemoryStatus(&Status);

		//determaine how many memory will be allocated as user memory
		dwMaxMemSize=Status.dwTotalPhys-dwBufSize-32*(1<<20); //I'd keep 32M for window system
		if(dwMaxMemSize<=0)
			dwMaxMemSize=5*(1<<20); //5M
		else if( dwMaxMemSize>Status.dwAvailPhys )
			dwMaxMemSize=Status.dwAvailPhys/2;

		if( dwMaxMemSize<5*(1<<20) ) //need 5M at least for user memory
			dwMaxMemSize=max(5*(1<<20),Status.dwAvailPhys);


		lpbi=(LPBITMAPINFOHEADER)GlobalAlloc(GPTR,dwMaxMemSize);
		if(lpbi==NULL) {
			dwMaxMemSize=4*(1<<20); //4M
			lpbi=GlobalAlloc(GPTR,dwMaxMemSize);
		}
		lpdib=(LPSTR)lpbi+5120; //keep 5k for bi
		lpMemory=(LPSTR)lpbi+2048*1024; //keep 2M for dib
		dwMaxMemSize-=2048*1024+5120;

		if(lpbi) {
			sprintf(string,"Allocated memory = %d",dwMaxMemSize);
		}else
			sprintf(string,"Allocate memory failed !");
	//	MessageBox(hwnd,string,"Message",MB_OK);

	}

	//open one specified board
	if( !(hBoard=okOpenBoard(&iCurrUsedNo)) ) {//set 
	//if( !(hBoard=okOpenImageBoard(-1)) ) //select default 
		long	error;
		error=okGetLastError();
		if(error==ERR_NOTFOUNDBOARD)
			MessageBox(hwnd, "Not found Ok series Image Board !","Warning",MB_OK);
		else if (error==ERR_NOTFOUNDVXDDRV)
			MessageBox(hwnd, "Not found VxD driver for Ok series Image Board !","Warning",MB_OK);
		else
			MessageBox(hwnd, "Open selected board failed!","Warning",MB_OK);

		return FALSE;
	}

	GetBitmapHeader(hBoard, SCREEN, lpbi); 
	//set initial size
	sampwidth=(short)lpbi->biWidth;
	sampheight=(short)lpbi->biHeight;
	//initailize screen
	okSetToWndRect(hBoard,hWnd);
	EnableItem(hWnd, IDM_FREEZE, FALSE);
	EnableItem(hWnd, IDM_BDISPLAY, FALSE);

	InvalidateRect(hWnd,NULL,FALSE);

	return hBoard;
}


BOOL GetBitmapHeader(HANDLE hBoard, TARGET src, LPBITMAPINFOHEADER lpbi)
{
	short		width,height;
	long		form;

	form=GetTargetSize(hBoard, src, &width, &height);

	//here take form as screen forever 
	form=okSetCaptureParam(hBoard,CAPTURE_SCRRGBFORMAT,GETCURRPARAM); //-1

	SetBitmapHeader(lpbi, width, height, HIWORD(form), LOWORD(form) );

	return LOWORD(form);
}

//set bitmap header and bitmap info if need
long SetBitmapHeader(LPBITMAPINFOHEADER lpbi,short width,short height, short bits, short form)
{
	long	wbytes;

	if(!lpbi)
		return FALSE;

	lpbi->biWidth=width;
	lpbi->biHeight=height;

	lpbi->biSize=sizeof(BITMAPINFOHEADER);
	lpbi->biPlanes=1;

	lpbi->biBitCount=bits;
	wbytes=((((lpbi->biWidth*bits)+31)&~31)>>3);//bmp need 4 align
	lpbi->biSizeImage=wbytes*lpbi->biHeight;

	lpbi->biClrUsed=0;
	//special format for 555,565 & 32 
	if(form==FORM_RGB555 || form==FORM_RGB565 || form==FORM_RGB8888 ) 
		lpbi->biCompression=BI_BITFIELDS;
	else
		lpbi->biCompression=0;
	if(lpbi->biCompression==BI_BITFIELDS) {//
		DWORD	*lpmask;
		lpmask=(DWORD *)((LPSTR)lpbi+lpbi->biSize);

		if(form==FORM_RGB555) {
			lpmask[2]=0x001f; //blue
			lpmask[1]=0x03e0;
			lpmask[0]=0x7c00;
		}
		else if(form==FORM_RGB565) {
			lpmask[2]=0x001f; //blue
			lpmask[1]=0x07e0;
			lpmask[0]=0xf800;
		}
		else if(bits==32) {
			lpmask[2]=0x0000ff;
			lpmask[1]=0x00ff00;
			lpmask[0]=0xff0000;
		}
	}
	else if(bits<=12) { // 8,10,12
		int		i;
		RGBQUAD	*lpRGB=(RGBQUAD *)((LPSTR)lpbi+lpbi->biSize);

		lpbi->biClrUsed=(1<<bits);
		for(i=0; i<(short)lpbi->biClrUsed;i++) {
			lpRGB[i].rgbBlue=i;
			lpRGB[i].rgbGreen=i;
			lpRGB[i].rgbRed=i;
			lpRGB[i].rgbReserved=0;
		}
	} 
	lpbi->biClrImportant=lpbi->biClrUsed;

	return lpbi->biClrUsed;
}

//get size 
long GetTargetSize(HANDLE hBoard, TARGET tgt, short *width, short *height)
{
	RECT	rect;
	long	form;


	if( (tgt==SCREEN ) ||(tgt==BUFFER) ) {
		rect.right=-1;
		okSetTargetRect(hBoard,tgt,&rect); //get current rect
		*width=(short)(rect.right-rect.left);
		*height=(short)(rect.bottom-rect.top);

		if(tgt==SCREEN ) {
			form=okSetCaptureParam(hBoard,CAPTURE_SCRRGBFORMAT,GETCURRPARAM); //-1
			//limit to video rect
			rect.right=-1; //max. captured rect
			okSetTargetRect(hBoard,VIDEO,&rect); //get video rect
			*width=(short)min(*width,rect.right-rect.left);
			*height=(short)min(*height,rect.bottom-rect.top);
		}
		else if(tgt==BUFFER) 
			form=okSetCaptureParam(hBoard,CAPTURE_BUFRGBFORMAT,GETCURRPARAM); //-1

	} else if(tgt>BUFFER) { //from blkinfo
		LPBLOCKINFO	lpblk;
		lpblk=(LPBLOCKINFO)tgt;

		*width=lpblk->iWidth;
		*height=abs(lpblk->iHeight);
		form=MAKELONG(lpblk->iFormType,lpblk->iBitCount);
	}


	return form;
}

//switch menu freeze/active
void EnableItem(HWND hWnd, int iMenuID, BOOL bEnable)
{
	HMENU	hMenu;

	hMenu=GetMenu(hWnd);
	//ModifyMenu(hMenu,IDM_FREEZE,MF_BYCOMMAND|MF_STRING,IDM_ACTIVE,"&Active");
	if(bEnable) 
		EnableMenuItem(hMenu,iMenuID,MF_BYCOMMAND|MF_ENABLED);
	else
		EnableMenuItem(hMenu,iMenuID,MF_BYCOMMAND|MF_GRAYED);

	DrawMenuBar(hWnd);

}

//display current dib info
void DisplayDIBInfo(HWND hwnd)
{

	char	string[200];
	LPSTR	lpstr;	

	GetWindowText(hwnd,string,120);
	lpstr=strchr(string,'-');
	if(!lpstr)
		lpstr=string+strlen(string);
	sprintf(lpstr,"- %d x %d x %d",lpbi->biWidth,lpbi->biHeight,lpbi->biBitCount);
	if(lpbi->biWidth)
		SetWindowText(hwnd,string);

}

//set data to dib 
long SetDataToDIB(TARGET src, short start, LPBITMAPINFOHEADER lpbi, LPBYTE lpdib)
{
	BLOCKINFO	blk;

	//get image to app buffer from tgt
	blk.lpBits=lpdib;			
	blk.iWidth=(short)lpbi->biWidth;
	blk.iHeight=-(short)lpbi->biHeight; //to invert y
	blk.iBitCount=lpbi->biBitCount;
	if(lpbi->biCompression==BI_BITFIELDS) {//
		DWORD	*lpMask;
		lpMask=(DWORD *)((LPSTR)lpbi+lpbi->biSize);
		if(lpMask[1]==0x03e0) //555
			blk.iFormType=FORM_RGB555;
	}

	return okConvertRect(hBoard,(TARGET)&blk,0,src,start,1);
}

//---you must set gray logic palette when VGA is 256 color mode
void SetPaletteToWnd(HDC hDC)
{
	static	HPALETTE	hPalette;
	long	form;
	short	bits;

	//get current screen(VGA) format 
	form=okSetCaptureParam(hBoard,CAPTURE_SCRRGBFORMAT,GETCURRPARAM); //-1
	bits=HIWORD(form); //take HIWORD
	form=LOWORD(form);

	if(bits==8 || bits==10) { //gray
		if(!hPalette)  
			hPalette=MakeLogPalette(bits,(short)form);

		SelectPalette(hDC,hPalette,0);
		RealizePalette(hDC);     // GDI Bug
	}
}

//----demo to make a gray logic palette
HPALETTE MakeLogPalette(short iBits, short rgbForm)
{
    HPALETTE    hLogPal; 
    NPLOGPALETTE npPal;
    WORD        nNumColors;
    short		i;

	nNumColors=(WORD)(1<<iBits);
	npPal = (NPLOGPALETTE)LocalAlloc(LMEM_FIXED, sizeof(LOGPALETTE) + 
				    nNumColors * sizeof(PALETTEENTRY));
    if (!npPal)
		return(FALSE);
	
	npPal->palVersion = 0x300;
    npPal->palNumEntries = nNumColors;
	//set palette
	if(rgbForm==FORM_RGB332) { //rgb 332
		BYTE	red=0, green=0, blue=0;
			
		for (i = 0; i < nNumColors; i++ ) {
			npPal->palPalEntry[i].peBlue = blue;
			npPal->palPalEntry[i].peGreen = green;
			npPal->palPalEntry[i].peRed = red;
			npPal->palPalEntry[i].peFlags = 0;
			if (!(red += 32))
				if (!(green += 32))
			    	blue += 64;			
		}
	}
	else { //gray 256 or 1024
		for (i = 0; i < nNumColors; i++ ) {
			npPal->palPalEntry[i].peRed = (BYTE)i;
			npPal->palPalEntry[i].peGreen = (BYTE)i;
			npPal->palPalEntry[i].peBlue = (BYTE)i;
			npPal->palPalEntry[i].peFlags = 0;
		}
	}

	hLogPal = CreatePalette((LPLOGPALETTE)npPal);
	LocalFree((HANDLE)npPal);

	return(hLogPal);
}



//------------callback runtines----------
long		elapsed;
long		numframe;
char		string[256];
long		bufform;
BLOCKINFO	blk;

BOOL CALLBACK BeginCapture(HANDLE hBoard)
{
	short		width,height;
	long		blkform;

	if(bDispToScreen) {
		bufform=GetTargetSize(hBoard, BUFFER, &width, &height);
		if( (LOWORD(bufform)==FORM_GRAY10) || (LOWORD(bufform)==FORM_GRAY12) ) { //special  
			//blkform=okSetCaptureParam(hBoard,CAPTURE_SCRRGBFORMAT,GETCURRPARAM); //-1
			blkform=MAKELONG(FORM_GRAY8,8);
		}
		else //take same bits as buffer
			blkform=bufform;
		SetBitmapHeader(lpbi, width, height, HIWORD(blkform), LOWORD(blkform) );
	}

	blk.lpBits=lpdib;
	blk.iBitCount=lpbi->biBitCount;
	blk.iWidth=(short)lpbi->biWidth;

	if( okSetCaptureParam(hBoard,CAPTURE_SAMPLEFIELD,-1)==0 ) //sample in field by field
		if( LOWORD(okSetVideoParam(hBoard,VIDEO_SIGNALTYPE,-1))==1 ) //interlace video
			lpbi->biHeight*=2; //double size for ht

	blk.iHeight=-(short)lpbi->biHeight; //note: minus is for invert dib in y by ConvertRect	

	elapsed=GetTickCount();
	numframe=0;

	return 1;
}


BOOL CALLBACK BackDisplay(HANDLE hBoard,long no)
{		
	//return 1;

	numframe++;
	//sprintf(string,"captured frames = %d ",no);
	sprintf(string,"Total frames = %d; Current = %d ",numframe, no);
	SetWindowText(hwnd,string);

	if(bDispToScreen) {
		if( (LOWORD(bufform)==FORM_GRAY10) ||(LOWORD(bufform)==FORM_GRAY12) ) { //special  
			//way 1
			okConvertRect(hBoard,(TARGET)&blk,0,BUFFER,(short)no,1);
			//way 2
			//okReadRectEx(hBoard,BUFFER,(short)no,lpdib, MAKELONG(FORM_GRAY8,1)); 
														 //read only red data
		}
		else {
			//way 1
			okTransferRect(hBoard,(TARGET)&blk,0,BUFFER,(short)no,1);
			//way 2
			//okReadRect(hBoard,BUFFER,(short)no,lpdib);
		}
		InvalidateRect(hwnd,NULL,FALSE);
	}

	return 1;
}


BOOL CALLBACK SetToScreen(HANDLE hBoard,long no)
{		
	//numframe++;
	//sprintf(string,"captured frames = %d ",no);
	//SetWindowText(hwnd,string);

	if( (LOWORD(bufform)==FORM_GRAY10) || (LOWORD(bufform)==FORM_GRAY12) ) { //special  
		//way 1
		okConvertRect(hBoard,(TARGET)&blk,0,BUFFER,(short)no,1);

		//way 2
		//okReadRectEx(hBoard,BUFFER,(short)no,lpdib);
		//ConvertBitmap(lpbi,lpdib);
	}
	else {
		okTransferRect(hBoard,(TARGET)&blk,0,BUFFER,(short)no,1);	
		//way 2
		//okReadRect(hBoard,BUFFER,(short)no,lpdib);
		//ConvertBitmap(lpbi,lpdib);
	}

	InvalidateRect(hwnd,NULL,FALSE);
	UpdateWindow(hwnd);

	return 1;
}

BOOL CALLBACK EndCapture(HANDLE hBoard)
{
	
	elapsed=GetTickCount()-elapsed;								

	sprintf(string,"Total frames = %d;  elapsed time= %d ms",numframe,elapsed);
	SetWindowText(hwnd,string);

	//clear callback
	okSetSeqCallback(hBoard,NULL,NULL,NULL);

	return 1;
}

long GetFrameSize(HANDLE hBoard)
{
	long	bits,size;

	size=okSetCaptureParam(hBoard,CAPTURE_BUFBLOCKSIZE,-1);
	bits=okSetCaptureParam(hBoard,CAPTURE_BUFRGBFORMAT,-1);
	size=(HIWORD(bits))/8*LOWORD(size)*HIWORD(size);

	return size;
}

void SingleCapture(void)
{
	okCaptureTo(hBoard,BUFFER,0,1);//single
	okGetCaptureStatus(hBoard,1);
	Sleep(20); //do waiting here
	//buf->scr
	GetBitmapHeader(hBoard, BUFFER, lpbi); 
	SetDataToDIB(BUFFER, 0, lpbi, lpdib);
	//okStopCapture(hBoard);
	InvalidateRect(hwnd,NULL,TRUE);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合精品国产一区二区三区 | 国产视频在线观看一区二区三区| 日韩精品福利网| 日韩欧美国产综合在线一区二区三区 | 国产欧美久久久精品影院| 国产精品1区2区| 中文字幕成人网| 日本乱人伦aⅴ精品| 亚洲高清在线精品| 欧美sm美女调教| 国产不卡一区视频| 亚洲欧美日韩久久| 在线91免费看| 国产99久久久精品| 亚洲欧美激情一区二区| 欧美一级黄色大片| 国产精品12区| 一区二区三区久久久| 欧美成人一区二区三区片免费 | 国产成人欧美日韩在线电影| 亚洲欧洲日韩女同| 欧美日韩精品一区二区在线播放| 精一区二区三区| 中文字幕一区在线观看| 91精品国产综合久久国产大片| 国产综合色产在线精品| 亚洲欧美日韩久久精品| 日韩免费在线观看| 99re在线精品| 精品一区二区三区视频在线观看| 国产精品的网站| 欧美成人a视频| 91免费精品国自产拍在线不卡| 日韩精品一级中文字幕精品视频免费观看 | 久久99久久精品| ...中文天堂在线一区| 91精品国产91久久综合桃花 | 毛片不卡一区二区| 自拍av一区二区三区| 精品少妇一区二区三区在线视频| 99精品久久只有精品| 久久精品国产一区二区三区免费看| 国产精品久久午夜夜伦鲁鲁| 欧美大片免费久久精品三p | 波多野结衣亚洲| 美国十次了思思久久精品导航| 亚洲欧美日韩精品久久久久| 国产三区在线成人av| 5566中文字幕一区二区电影| 97久久人人超碰| 国产在线国偷精品产拍免费yy| 一区二区三区四区国产精品| 国产精品三级在线观看| 久久综合色8888| 欧美高清激情brazzers| 色噜噜久久综合| 成人免费av在线| 国产传媒一区在线| 麻豆传媒一区二区三区| 日韩精品国产精品| 亚洲国产你懂的| 亚洲综合久久久| 亚洲人成亚洲人成在线观看图片| 国产欧美综合在线观看第十页 | 国产精品麻豆一区二区| 久久久不卡网国产精品二区 | 久久久久久久久99精品| 精品日韩一区二区三区| 欧美一级在线免费| 欧美丰满一区二区免费视频| 欧美亚洲综合网| 在线观看亚洲a| 91福利精品第一导航| 91美女视频网站| 色综合网色综合| 91麻豆精品秘密| 一本一本久久a久久精品综合麻豆| 成人av资源下载| 99热在这里有精品免费| 97精品视频在线观看自产线路二 | 精品视频在线免费观看| 在线观看免费亚洲| 欧美日韩国产一级| 欧美精品粉嫩高潮一区二区| 欧美一区中文字幕| 精品国产欧美一区二区| 久久人人爽爽爽人久久久| 久久久久久97三级| 国产嫩草影院久久久久| 亚洲欧洲一区二区三区| 一个色综合av| 日本美女一区二区| 国产精品一区二区久激情瑜伽| 国产a久久麻豆| www.日本不卡| 在线亚洲一区观看| 欧美二区三区91| 337p粉嫩大胆噜噜噜噜噜91av | 欧美亚洲一区二区在线观看| 69堂精品视频| 久久久亚洲综合| 国产精品国产三级国产aⅴ原创 | 宅男噜噜噜66一区二区66| 日韩欧美一级在线播放| 国产色91在线| 亚洲高清不卡在线| 国产真实乱偷精品视频免| 成人激情小说网站| 欧美色欧美亚洲另类二区| 日韩免费成人网| 国产精品三级电影| 亚洲大型综合色站| 国产剧情在线观看一区二区| 色综合久久久久网| 日韩视频123| 国产精品二区一区二区aⅴ污介绍| 亚洲一区二区三区四区中文字幕| 精品一区二区三区欧美| 色婷婷久久久综合中文字幕| 欧美va日韩va| 亚洲国产一区二区视频| 激情国产一区二区| 91黄视频在线| 26uuu色噜噜精品一区| 一区二区三区视频在线观看| 精东粉嫩av免费一区二区三区| 不卡av在线网| 精品理论电影在线观看| 亚洲伦理在线精品| 久草精品在线观看| 欧洲激情一区二区| 欧美极品美女视频| 经典一区二区三区| 欧美高清激情brazzers| 亚洲欧美日韩在线播放| 国产精品白丝av| 日韩三级中文字幕| 一区二区三区在线视频观看58 | 精品久久国产97色综合| 亚洲国产成人av好男人在线观看| 成人网页在线观看| 久久综合狠狠综合久久激情 | 亚洲午夜久久久| www.欧美日韩| 欧美国产精品中文字幕| 韩国av一区二区三区四区| 欧美日韩不卡在线| 亚洲一区二区影院| 日本韩国一区二区三区视频| 国产精品国产三级国产a| 国产精品69毛片高清亚洲| 欧美电视剧免费全集观看| 日韩福利视频导航| 欧美日韩精品综合在线| 亚洲国产精品天堂| 色天天综合久久久久综合片| 成人欧美一区二区三区视频网页| 国产一区不卡在线| 亚洲精品在线电影| 极品销魂美女一区二区三区| 欧美日韩一区 二区 三区 久久精品| 中文字幕在线不卡一区二区三区| 国产成人精品免费一区二区| 国产日韩精品一区二区三区| 国产一区在线看| 国产午夜亚洲精品羞羞网站| 国产在线精品视频| 久久久精品人体av艺术| 国产精品中文欧美| 久久九九影视网| 成人免费的视频| 亚洲人成网站精品片在线观看| 91麻豆蜜桃一区二区三区| 一区二区三区日韩在线观看| 欧美日韩久久不卡| 美女视频一区二区| 精品国产伦一区二区三区免费| 国产在线视视频有精品| 国产精品欧美精品| 日本高清成人免费播放| 亚洲一区二区不卡免费| 91麻豆精品国产91久久久久| 青青草原综合久久大伊人精品优势| 日韩精品专区在线| 国产精品一区二区免费不卡| 成人免费在线视频| 欧美日韩中字一区| 久久国产精品无码网站| 国产欧美日韩亚州综合| 日本道色综合久久| 日韩av中文在线观看| 久久久噜噜噜久噜久久综合| 91在线视频网址| 日韩精品亚洲一区| 久久嫩草精品久久久久| 成人黄色电影在线 | 日韩成人精品在线观看| 欧美精品一区二区三| 99久久综合国产精品| 偷拍日韩校园综合在线|