?? oksetup.c
字號(hào):
#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; //輸出目標(biāo)
extern DWORD dwMaxMemSize;
extern BOOL bDispToScreen;
extern short CaptureStart; //采集起始幀
extern short CaptureEnd; //采集結(jié)束幀
extern short iNumImage; //文件采集幀數(shù)
extern long GetFrameSize(HANDLE hBoard);
void EnabledSetupItem(HWND hDlg,BOOL Param,int i);
BOOL APIENTRY IddCSetup(HWND hDlg,unsigned message,UINT wParam,LONG lParam)
{
//采集設(shè)置
char tg[5][10]={"屏幕","緩存","帖存","內(nèi)存","文件"};
char md[4][16]={"按場(chǎng)采集","按幀采集","按場(chǎng)采隔行放","按上下場(chǎng)幀采"};
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:
//內(nèi)存
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:
//內(nèi)存
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:
//內(nèi)存
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;
}
//設(shè)置屏幕回放
if(IsDlgButtonChecked(hDlg,IDC_SHOW)) bDispToScreen=TRUE;
else bDispToScreen=FALSE;
//設(shè)置采集模式
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,"總共可采集幀數(shù):%d",i);
SetDlgItemText(hDlg,IDC_SHOWTOTAL,tstr);
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -