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

📄 oksetup.c

📁 OK系列PCI图象卡编程程序,MFC方式,压缩形式
💻 C
字号:
#include <windows.h>
#include <commdlg.h>

#include "resource.h"

#include "okapi32.h"

extern	HANDLE		hBoard;
extern	long		dwBufSize;
extern	TARGET		CaptureTarget;
extern	TARGET		OutTarget=SCREEN;		//输出目标
extern	DWORD		dwMaxMemSize;
extern	BOOL		bDispToScreen;
extern	short		CaptureStart;			//采集起始帧
extern	short		CaptureEnd;				//采集结束帧
extern	short		iNumImage;				//文件采集帧数

extern	long GetFrameSize(HANDLE hBoard);
void EnabledSetupItem(HWND hDlg,BOOL Param,int i);

BOOL APIENTRY IddCSetup(HWND hDlg,unsigned message,UINT wParam,LONG lParam)
{
	//采集设置
	char tg[5][10]={"屏幕","缓存","帖存","内存","文件"};
	char md[4][16]={"按场采集","按帧采集","按场采隔行放","按上下场帧采"};
	int i;
	HWND shWnd;
	static	long	bufbits,bufsize;
	static	MaxFrame=1;

    switch (message)
    {
	case WM_INITDIALOG:
		bufbits=HIWORD(okSetCaptureParam(hBoard,CAPTURE_BUFRGBFORMAT,GETCURRPARAM)); //-1
		bufsize=okSetCaptureParam(hBoard,CAPTURE_BUFBLOCKSIZE,GETCURRPARAM); //-1
		shWnd=GetDlgItem(hDlg,IDC_CAPTURETARGET);
		for(i=0;i<5;i++){
			SendMessage(shWnd,CB_INSERTSTRING,0,(LPARAM)(LPCSTR)tg[5-i-1]);
		}

		shWnd=GetDlgItem(hDlg,IDC_CAPTUREMODE);
		for(i=0;i<4;i++){
			SendMessage(shWnd,CB_INSERTSTRING,0,(LPARAM)(LPCSTR)md[4-i-1]);
		}
		SendMessage(shWnd,CB_SETCURSEL,okSetCaptureParam(hBoard,CAPTURE_SAMPLEFIELD,-1),0);

		MaxFrame=dwBufSize/LOWORD(bufsize)/HIWORD(bufsize)*8/bufbits;
		SetDlgItemInt(hDlg,IDC_EDITSTART,CaptureStart,TRUE);
		SetDlgItemInt(hDlg,IDC_EDITEND,MaxFrame,TRUE);
		switch(CaptureTarget){
		case SCREEN:
			//屏幕
			SendMessage(GetDlgItem(hDlg,IDC_CAPTURETARGET),CB_SETCURSEL,0,0);
			EnabledSetupItem(hDlg,FALSE,1);
			break;
		case BUFFER:
			//缓存
			EnabledSetupItem(hDlg,TRUE,dwBufSize/LOWORD(bufsize)/HIWORD(bufsize)*8/bufbits);
			SendMessage(GetDlgItem(hDlg,IDC_CAPTURETARGET),CB_SETCURSEL,1,0);
			break;
		case FRAME:
			//帧存
			SendMessage(GetDlgItem(hDlg,IDC_CAPTURETARGET),CB_SETCURSEL,2,0);
			EnabledSetupItem(hDlg,FALSE,1);
			break;
		case USERMEMORY:
			//内存
			EnabledSetupItem(hDlg,TRUE,dwMaxMemSize/GetFrameSize(hBoard));
			SendMessage(GetDlgItem(hDlg,IDC_CAPTURETARGET),CB_SETCURSEL,3,0);
			break;
		case USERFILE:
			//文件
			EnabledSetupItem(hDlg,TRUE,iNumImage);
			EnableWindow(GetDlgItem(hDlg,IDC_EDITSTART),FALSE);
			SendMessage(GetDlgItem(hDlg,IDC_CAPTURETARGET),CB_SETCURSEL,4,0);
			break;
		}
		break;
	case WM_COMMAND:
		switch(LOWORD(wParam)){
		case IDC_CAPTURETARGET:
			switch(SendMessage(GetDlgItem(hDlg,IDC_CAPTURETARGET),CB_GETCURSEL,0,0)){
			case 0:
				//屏幕
			case 2:
				//帖存
				EnabledSetupItem(hDlg,FALSE,1);
				break;
			case 1:
				//缓存
				MaxFrame=dwBufSize/LOWORD(bufsize)/HIWORD(bufsize)*8/bufbits;
				EnabledSetupItem(hDlg,TRUE,MaxFrame);
				break;
			case 3:
				//内存
				MaxFrame=dwMaxMemSize/GetFrameSize(hBoard);
				EnabledSetupItem(hDlg,TRUE,MaxFrame);
				break;
			case 4:
				//文件
				EnabledSetupItem(hDlg,TRUE,1);
				EnableWindow(GetDlgItem(hDlg,IDC_EDITSTART),FALSE);
				break;
			default:
				break;
			}
			break;
		case IDOK:
			switch(SendMessage(GetDlgItem(hDlg,IDC_CAPTURETARGET),CB_GETCURSEL,0,0)){
			case 0:
				//屏幕
				CaptureTarget=SCREEN;
				break;
			case 2:
				//帖存
				CaptureTarget=FRAME;
				break;
			case 1:
				//缓存
				CaptureTarget=BUFFER;
				CaptureStart=GetDlgItemInt(hDlg,IDC_EDITSTART,NULL,TRUE);
				CaptureEnd=GetDlgItemInt(hDlg,IDC_EDITEND,NULL,TRUE);
				if(CaptureStart<1) CaptureStart=1;
				if(CaptureStart>MaxFrame) CaptureStart=MaxFrame;
				if(CaptureEnd>dwBufSize/LOWORD(bufsize)/HIWORD(bufsize)*8/bufbits)
					CaptureEnd=(short)(dwBufSize/LOWORD(bufsize)/HIWORD(bufsize)*8/bufbits);
				if(CaptureEnd<CaptureStart) CaptureEnd=CaptureStart;
				break;
			case 3:
				//内存
				CaptureTarget=USERMEMORY;
				CaptureStart=GetDlgItemInt(hDlg,IDC_EDITSTART,NULL,TRUE);
				CaptureEnd=GetDlgItemInt(hDlg,IDC_EDITEND,NULL,TRUE);
				if(CaptureStart<1) CaptureStart=1;
				if(CaptureStart>MaxFrame) CaptureStart=MaxFrame;
				if(CaptureEnd>(short)(dwMaxMemSize/GetFrameSize(hBoard)))
					CaptureEnd=(short)(dwMaxMemSize/GetFrameSize(hBoard));
				if(CaptureEnd<CaptureStart) CaptureEnd=CaptureStart;
				break;
			case 4:
				//文件
				CaptureTarget=USERFILE;
				CaptureEnd=GetDlgItemInt(hDlg,IDC_EDITEND,NULL,TRUE);
				if(CaptureEnd<1) CaptureEnd=1;
				iNumImage=CaptureEnd;
				break;
			default:
				break;
			}

			//设置屏幕回放
			if(IsDlgButtonChecked(hDlg,IDC_SHOW)) bDispToScreen=TRUE;
			else bDispToScreen=FALSE;

			//设置采集模式
			okSetCaptureParam(hBoard,CAPTURE_SAMPLEFIELD,SendMessage(GetDlgItem(hDlg,IDC_CAPTUREMODE),CB_GETCURSEL,0,0));
			EndDialog(hDlg,TRUE);

			return (TRUE);
		case IDCANCEL:
            EndDialog(hDlg, TRUE);
            return (TRUE);
		default:
			break;
		}
        break;
	default:
		break;
	}
	return (FALSE);
}

void EnabledSetupItem(HWND hDlg,BOOL Param,int i)
{
	char tstr[80];

	EnableWindow(GetDlgItem(hDlg,IDC_EDITSTART),Param);
	EnableWindow(GetDlgItem(hDlg,IDC_EDITEND),Param);
	EnableWindow(GetDlgItem(hDlg,IDC_SHOW),Param);
	wsprintf(tstr,"总共可采集帧数:%d",i);
	SetDlgItemText(hDlg,IDC_SHOWTOTAL,tstr);
}

⌨️ 快捷键说明

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