?? oksource.c
字號:
#include <windows.h>
#include <commdlg.h>
#include "resource.h"
#include "okapi32.h"
extern HANDLE hBoard;
void EnabledDlgItem(HWND hDlg,BOOL Param);
//demo to display current system infos
BOOL APIENTRY IddSource(HWND hDlg,unsigned message,UINT wParam,LONG lParam)
{
//視頻源對話框
static long HoriPixels,VertLines;
HWND SourhWnd;
CHAR tstr[80];
int i;
long l;
switch (message)
{
case WM_INITDIALOG:
//獲取總采集點與行數
SetScrollRange(GetDlgItem(hDlg,IDC_SCROLLBARHORI),SB_CTL,8,2048,FALSE);
SetScrollRange(GetDlgItem(hDlg,IDC_SCROLLBARVERT),SB_CTL,8,2048,FALSE);
HoriPixels=okSetCaptureParam(hBoard,CAPTURE_HORZPIXELS,-1);
wsprintf(tstr,"%d",HoriPixels);
SetDlgItemText(hDlg,IDC_HORI,tstr);
VertLines=okSetCaptureParam(hBoard,CAPTURE_VERTLINES,-1);
wsprintf(tstr,"%d",VertLines);
SetDlgItemText(hDlg,IDC_VERT,tstr);
SetScrollPos(GetDlgItem(hDlg,IDC_SCROLLBARHORI),SB_CTL,HoriPixels,TRUE);
SetScrollPos(GetDlgItem(hDlg,IDC_SCROLLBARVERT),SB_CTL,VertLines,TRUE);
//寫同步同道選項
SourhWnd=GetDlgItem(hDlg,IDC_RGBSYNC);
for(i=0;i<4;i++){
wsprintf(tstr,"VIDEO %d",4-i);
SendMessage(SourhWnd,CB_INSERTSTRING,0,(LPARAM)(LPCSTR)tstr);
}
for(i=0;i<2;i++){
wsprintf(tstr,"復合信號通道 %d",2-i);
SendMessage(SourhWnd,CB_INSERTSTRING,0,(LPARAM)(LPCSTR)tstr);
wsprintf(tstr,"蘭色信號通道 %d",2-i);
SendMessage(SourhWnd,CB_INSERTSTRING,0,(LPARAM)(LPCSTR)tstr);
wsprintf(tstr,"綠色信號通道 %d",2-i);
SendMessage(SourhWnd,CB_INSERTSTRING,0,(LPARAM)(LPCSTR)tstr);
wsprintf(tstr,"紅色信號通道 %d",2-i);
SendMessage(SourhWnd,CB_INSERTSTRING,0,(LPARAM)(LPCSTR)tstr);
}
//寫信號源選項
SourhWnd=GetDlgItem(hDlg,IDC_COMBOSTYPE);
SendMessage(SourhWnd,CB_INSERTSTRING,0,(LPARAM)"隔行");
SendMessage(SourhWnd,CB_INSERTSTRING,0,(LPARAM)"逐行");
SendMessage(SourhWnd,CB_SETCURSEL,0,0);
SourhWnd=GetDlgItem(hDlg,IDC_COMBOGAIN);
SendMessage(SourhWnd,CB_INSERTSTRING,0,(LPARAM)"同步開槽");
SendMessage(SourhWnd,CB_INSERTSTRING,0,(LPARAM)"同步不開槽");
SendMessage(SourhWnd,CB_SETCURSEL,0,0);
EnableWindow(GetDlgItem(hDlg,IDC_RGBSYNC),FALSE);
// EnabledDlgItem(hDlg,FALSE);
break;
case WM_HSCROLL:
//設置采集點數
if(GetDlgItem(hDlg,IDC_SCROLLBARHORI)==(HWND)lParam)
{
switch(LOWORD(wParam)){
case SB_PAGEDOWN:
HoriPixels+=3;
break;
case SB_LINEDOWN:
HoriPixels++;
break;
case SB_PAGEUP:
HoriPixels-=3;
break;
case SB_LINEUP:
HoriPixels--;
break ;
case SB_TOP :
HoriPixels=8;
break ;
case SB_BOTTOM:
HoriPixels=2048;
break;
case SB_THUMBPOSITION:
case SB_THUMBTRACK:
HoriPixels=HIWORD(wParam);
break;
default:
return FALSE;
}
if(HoriPixels<8) HoriPixels=8;
if(HoriPixels>2048) HoriPixels=2048;
SetScrollPos(GetDlgItem(hDlg,IDC_SCROLLBARHORI),SB_CTL,HoriPixels,TRUE);
wsprintf(tstr,"%d",HoriPixels);
SetDlgItemText(hDlg,IDC_HORI,tstr);
}
else
{
switch(LOWORD(wParam)){
case SB_PAGEDOWN:
VertLines+=3;
break;
case SB_LINEDOWN:
VertLines++;
break;
case SB_PAGEUP:
VertLines-=3;
break;
case SB_LINEUP:
VertLines--;
break ;
case SB_TOP :
VertLines=8;
break ;
case SB_BOTTOM:
VertLines=2048;
break;
case SB_THUMBPOSITION:
case SB_THUMBTRACK:
VertLines=HIWORD(wParam);
break;
default:
return FALSE;
}
if(VertLines<8) VertLines=8;
if(VertLines>2048) VertLines=2048;
SetScrollPos(GetDlgItem(hDlg,IDC_SCROLLBARVERT),SB_CTL,VertLines,TRUE);
wsprintf(tstr,"%d",VertLines);
SetDlgItemText(hDlg,IDC_VERT,tstr);
}
break;
case WM_COMMAND:
switch(LOWORD(wParam)){
case IDC_RADIOVIDEO:
//VIDEO視頻輸入
CheckRadioButton(hDlg, IDC_RADIOVIDEO, IDC_RADIORGB, IDC_RADIOVIDEO);
SendDlgItemMessage(hDlg,IDC_SOURCENUMBER,CB_RESETCONTENT,0,0);
EnableWindow(GetDlgItem(hDlg,IDC_RGBSYNC),FALSE);
SourhWnd=GetDlgItem(hDlg,IDC_SOURCENUMBER);
for(i=0;i<8;i++){
wsprintf(tstr,"VIDEO %d",8-i);
SendMessage(SourhWnd,CB_INSERTSTRING,0,(LPARAM)(LPCSTR)tstr);
}
break;
case IDC_RADIOSVIDEO:
//S-VIDEO輸入
CheckRadioButton(hDlg, IDC_RADIOVIDEO, IDC_RADIORGB, IDC_RADIOSVIDEO);
SendDlgItemMessage(hDlg,IDC_SOURCENUMBER,CB_RESETCONTENT,0,0);
EnableWindow(GetDlgItem(hDlg,IDC_RGBSYNC),FALSE);
SourhWnd=GetDlgItem(hDlg,IDC_SOURCENUMBER);
for(i=0;i<4;i++){
wsprintf(tstr,"S-VIDEO %d",4-i);
SendMessage(SourhWnd,CB_INSERTSTRING,0,(LPARAM)(LPCSTR)tstr);
}
break;
case IDC_RADIORGB:
//RGB輸入
CheckRadioButton(hDlg, IDC_RADIOVIDEO, IDC_RADIORGB, IDC_RADIORGB);
SendDlgItemMessage(hDlg,IDC_SOURCENUMBER,CB_RESETCONTENT,0,0);
EnableWindow(GetDlgItem(hDlg,IDC_RGBSYNC),TRUE);
SourhWnd=GetDlgItem(hDlg,IDC_SOURCENUMBER);
for(i=0;i<4;i++){
wsprintf(tstr,"R,G,B %d",4-i);
SendMessage(SourhWnd,CB_INSERTSTRING,0,(LPARAM)(LPCSTR)tstr);
}
break;
case IDC_RADIOPAL:
//PAL信號源
CheckRadioButton(hDlg, IDC_RADIOPAL, IDC_RADIONSTD, IDC_RADIOPAL);
EnabledDlgItem(hDlg,FALSE);
break;
case IDC_RADIONTSC:
//NTSC信號源
CheckRadioButton(hDlg, IDC_RADIOPAL, IDC_RADIONSTD, IDC_RADIONTSC);
EnabledDlgItem(hDlg,FALSE);
break;
case IDC_RADIONSTD:
//非標準信號源
CheckRadioButton(hDlg, IDC_RADIOPAL, IDC_RADIONSTD, IDC_RADIONSTD);
EnabledDlgItem(hDlg,TRUE);
break;
case IDC_RADIOLOW:
//低段
CheckRadioButton(hDlg, IDC_RADIOLOW, IDC_RADIOHIGH, IDC_RADIOLOW);
break;
case IDC_RADIOMID:
//中段
CheckRadioButton(hDlg, IDC_RADIOLOW, IDC_RADIOHIGH, IDC_RADIOMID);
break;
case IDC_RADIOHIGH:
//高段
CheckRadioButton(hDlg, IDC_RADIOLOW, IDC_RADIOHIGH, IDC_RADIOHIGH);
break;
case IDOK:
//信號源
if(IsDlgButtonChecked(hDlg,IDC_RADIOVIDEO)) l=0;
else if(IsDlgButtonChecked(hDlg,IDC_RADIOSVIDEO)) l=1;
else if(IsDlgButtonChecked(hDlg,IDC_RADIORGB)) l=2;
else l=-1;
switch (l){
case 0:
//復合視頻
l=SendDlgItemMessage(hDlg,IDC_SOURCENUMBER,CB_GETCURSEL,0,0);
if (l!=-1)
okSetVideoParam(hBoard,VIDEO_SOURCECHAN,l);
break;
case 1:
//S-VIDEO
l=SendDlgItemMessage(hDlg,IDC_SOURCENUMBER,CB_GETCURSEL,0,0);
if (l!=-1)
okSetVideoParam(hBoard,VIDEO_SOURCECHAN,0x100+l);
break;
case 2:
//R,G,B
{
long d;
WORD wl,wh;
l=SendDlgItemMessage(hDlg,IDC_SOURCENUMBER,CB_GETCURSEL,0,0);
d=SendDlgItemMessage(hDlg,IDC_RGBSYNC,CB_GETCURSEL,0,0);
if ((l==-1) || (d==-1)) break;
okSetVideoParam(hBoard,VIDEO_SOURCECHAN,0x200+l);
if (d<8)
{
//RGB同步信號
wh=d/4;
wl=d-(d/4)*4;
}
else
{
//VIDEO同步信號
wh=0x100+(d-8);
}
d=MAKELONG(wl,wh);
okSetVideoParam(hBoard,VIDEO_SYNCSIGCHAN,d);
break;
}
default:
break;
}
//信號源類型
{
WORD wl,wh;
wl=(WORD)SendDlgItemMessage(hDlg,IDC_COMBOSTYPE,CB_GETCURSEL,0,0);
wh=(WORD)SendDlgItemMessage(hDlg,IDC_COMBOGAIN,CB_GETCURSEL,0,0);
okSetVideoParam(hBoard,VIDEO_SIGNALTYPE,MAKELONG(wl,wh));
}
if(IsDlgButtonChecked(hDlg,IDC_RADIOPAL)) l=0;
else if(IsDlgButtonChecked(hDlg,IDC_RADIONTSC)) l=1;
else if(IsDlgButtonChecked(hDlg,IDC_RADIONSTD)) l=2;
else l=-1;
switch (l){
case 0:
//PAL制信號
case 1:
//NTSC制信號
okSetVideoParam(hBoard,VIDEO_TVSTANDARD,l);
break;
case 2:
//非標準信號
okSetVideoParam(hBoard,VIDEO_TVSTANDARD,l);
//采集頻段
if(IsDlgButtonChecked(hDlg,IDC_RADIOLOW)) l=0;
else if(IsDlgButtonChecked(hDlg,IDC_RADIOMID)) l=1;
else if(IsDlgButtonChecked(hDlg,IDC_RADIOHIGH)) l=2;
else l=-1;
switch(l){
case 0:
//低段
case 1:
//中段
case 2:
//高段
okSetVideoParam(hBoard,VIDEO_FREQSEG,l);
break;
default:
break;
}
//采集點數
okSetCaptureParam(hBoard,CAPTURE_HORZPIXELS,HoriPixels);
okSetCaptureParam(hBoard,CAPTURE_VERTLINES,VertLines);
break;
default:
break;
}
EndDialog(hDlg,TRUE);
return (TRUE);
case IDCANCEL:
EndDialog(hDlg, TRUE);
return (TRUE);
default:
break;
}
break;
default:
break;
}
return FALSE;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -