?? okparam.c
字號:
#include <windows.h>
#include <commdlg.h>
#include "resource.h"
#include "okapi32.h"
extern HANDLE hBoard;
extern void SingleCapture(void);
//demo to display current system infos
BOOL APIENTRY IddVideoParam(HWND hDlg,unsigned message,UINT wParam,LONG lParam)
{
//采集參數對話框
static long newValue[4],orgValue[4];
static long newRgb[3][2],orgRgb[3][2];
char tstr[80];
long l;
int i;
HWND hWnd;
switch (message)
{
case WM_INITDIALOG:
//初始化
hWnd=GetDlgItem(hDlg,IDC_STYPE);
SendMessage(hWnd,CB_INSERTSTRING,0,(LPARAM)"RGB輸入");
SendMessage(hWnd,CB_INSERTSTRING,0,(LPARAM)"非RGB輸入");
SendMessage(hWnd,CB_SETCURSEL,0,0);
hWnd=GetDlgItem(hDlg,IDC_OBJECT);
SendMessage(hWnd,CB_INSERTSTRING,0,(LPARAM)"蘭色通道");
SendMessage(hWnd,CB_INSERTSTRING,0,(LPARAM)"綠色通道");
SendMessage(hWnd,CB_INSERTSTRING,0,(LPARAM)"紅色通道");
SendMessage(hWnd,CB_SETCURSEL,0,0);
for(i=0;i<4;i++){
SetScrollRange(GetDlgItem(hDlg,IDC_SCROLLBARBRIGHTNESS+i),SB_CTL,0,255,FALSE);
orgValue[i]=okSetVideoParam(hBoard,VIDEO_BRIGHTNESS+i,-1);
newValue[i]=orgValue[i];
if(i<2){
orgRgb[0][i]=(long)LOBYTE(LOWORD(orgValue[i]));
orgRgb[1][i]=(long)HIBYTE(HIWORD(orgValue[i]));
orgRgb[2][i]=(long)HIWORD(orgValue[i]);
}
SetScrollPos(GetDlgItem(hDlg,IDC_SCROLLBARBRIGHTNESS+i),SB_CTL,newValue[i],TRUE);
wsprintf(tstr,"%d",newValue[i]);
SetDlgItemText(hDlg,IDC_BRIGHTNESS+i,tstr);
if(newValue[i]==-1) EnableWindow(GetDlgItem(hDlg,IDC_SCROLLBARBRIGHTNESS+i),FALSE);
}
return TRUE;
case WM_HSCROLL:
{
int n,dx;
if(GetDlgItem(hDlg,IDC_SCROLLBARBRIGHTNESS)==(HWND)lParam) n=0; //亮度
else if(GetDlgItem(hDlg,IDC_SCROLLBARCONTRAST)==(HWND)lParam) n=1; //對比度
else if(GetDlgItem(hDlg,IDC_SCROLLBARCOLORHUE)==(HWND)lParam) n=2; //色度
else if(GetDlgItem(hDlg,IDC_SCROLLBARSATURATION)==(HWND)lParam) n=3; //飽和度
else n=-1;
switch(LOWORD(wParam)){
case SB_PAGEDOWN:
dx=3;
break;
case SB_LINEDOWN:
dx=1;
break;
case SB_PAGEUP:
dx=-3;
break;
case SB_LINEUP:
dx=-1;
break ;
case SB_TOP :
dx=-255;
break ;
case SB_BOTTOM:
dx=255;
break;
case SB_THUMBPOSITION:
case SB_THUMBTRACK:
switch (n+VIDEO_BRIGHTNESS){
case VIDEO_BRIGHTNESS:
case VIDEO_CONTRAST:
if(SendMessage(GetDlgItem(hDlg,IDC_STYPE),CB_GETCURSEL,0,0)){
//RGB輸入
i=SendMessage(GetDlgItem(hDlg,IDC_OBJECT),CB_GETCURSEL,0,0);
switch(i){
case 0:
//紅色通道
case 1:
//綠色通道
case 2:
//蘭色通道
newRgb[i][n]=HIWORD(wParam);
if(newRgb[i][n]<0) newRgb[i][n]=0;
if(newRgb[i][n]>255) newRgb[i][n]=255;
SetScrollPos(GetDlgItem(hDlg,IDC_SCROLLBARBRIGHTNESS+n),SB_CTL,newRgb[i][n],TRUE);
wsprintf(tstr,"%d",newRgb[i][n]);
SetDlgItemText(hDlg,IDC_BRIGHTNESS+n,tstr);
break;
default:
break;
}
}
else{
//非RGB輸入
newValue[n]=HIWORD(wParam);
if(newValue[n]<0) newValue[n]=0;
if(newValue[n]>255) newValue[n]=255;
SetScrollPos(GetDlgItem(hDlg,IDC_SCROLLBARBRIGHTNESS+n),SB_CTL,newValue[n],TRUE);
wsprintf(tstr,"%d",newValue[n]);
SetDlgItemText(hDlg,IDC_BRIGHTNESS+n,tstr);
}
break;
case VIDEO_COLORHUE:
case VIDEO_SATURATION:
newValue[n]=HIWORD(wParam);
SetScrollPos(GetDlgItem(hDlg,IDC_SCROLLBARCOLORHUE+n),SB_CTL,newValue[n],TRUE);
wsprintf(tstr,"%d",newValue[n]);
SetDlgItemText(hDlg,IDC_COLORHUE+n,tstr);
break;
default:
return FALSE;
}
dx=0;
break;
default:
return FALSE;
}
switch(n+VIDEO_BRIGHTNESS){
case VIDEO_BRIGHTNESS:
//亮度
case VIDEO_CONTRAST:
//對比度
if(SendMessage(GetDlgItem(hDlg,IDC_STYPE),CB_GETCURSEL,0,0)){
//RGB輸入
i=SendMessage(GetDlgItem(hDlg,IDC_OBJECT),CB_GETCURSEL,0,0);
switch(i){
case 0:
//紅色通道
case 1:
//綠色通道
case 2:
//蘭色通道
newRgb[i][n]+=dx;
if(newRgb[i][n]<0) newRgb[i][n]=0;
if(newRgb[i][n]>255) newRgb[i][n]=255;
SetScrollPos(GetDlgItem(hDlg,IDC_SCROLLBARBRIGHTNESS+n),SB_CTL,newRgb[i][n],TRUE);
wsprintf(tstr,"%d",newRgb[i][n]);
SetDlgItemText(hDlg,IDC_BRIGHTNESS+n,tstr);
break;
default:
break;
}
}
else{
//非RGB輸入
newValue[n]+=dx;
if(newValue[n]<0) newValue[n]=0;
if(newValue[n]>255) newValue[n]=255;
SetScrollPos(GetDlgItem(hDlg,IDC_SCROLLBARBRIGHTNESS+n),SB_CTL,newValue[n],TRUE);
wsprintf(tstr,"%d",newValue[n]);
SetDlgItemText(hDlg,IDC_BRIGHTNESS+n,tstr);
}
break;;
case VIDEO_COLORHUE:
//色度
case VIDEO_SATURATION:
//飽和度
newValue[n]+=dx;
if(newValue[n]<0) newValue[n]=0;
if(newValue[n]>255) newValue[n]=255;
SetScrollPos(GetDlgItem(hDlg,IDC_SCROLLBARBRIGHTNESS+n),SB_CTL,newValue[n],TRUE);
wsprintf(tstr,"%d",newValue[n]);
SetDlgItemText(hDlg,IDC_BRIGHTNESS+n,tstr);
break;
default:
return FALSE;
}
if(SendMessage(GetDlgItem(hDlg,IDC_STYPE),CB_GETCURSEL,0,0)){
//RGB輸入信號源
WORD wl,wh;
for(i=0;i<2;i++){
wl=(WORD)newRgb[0][i];wh=0;
okSetVideoParam(hBoard,VIDEO_BRIGHTNESS,MAKELONG(wl,wh));
wl=(WORD)newRgb[1][i];wh=1;
okSetVideoParam(hBoard,VIDEO_BRIGHTNESS,MAKELONG(wl,wh));
wl=(WORD)newRgb[2][i];wh=2;
okSetVideoParam(hBoard,VIDEO_BRIGHTNESS,MAKELONG(wl,wh));
}
}
else{
//非RGB輸入信號源
for(i=0;i<4;i++){
okSetVideoParam(hBoard,VIDEO_BRIGHTNESS+i,newValue[i]);
}
}
SingleCapture();
return TRUE;
}
case WM_COMMAND:
switch(LOWORD(wParam)){
case IDC_STYPE:
//視頻源類型
if(SendMessage(GetDlgItem(hDlg,IDC_STYPE),CB_GETCURSEL,0,0)){
//RGB輸入信號源
for(i=0;i<2;i++){
l=okSetVideoParam(hBoard,VIDEO_BRIGHTNESS+i,-1);
newRgb[0][i]=LOBYTE(LOWORD(l));
newRgb[1][i]=HIBYTE(HIWORD(l));
newRgb[2][i]=HIWORD(l);
}
l=SendMessage(GetDlgItem(hDlg,IDC_OBJECT),CB_SETCURSEL,0,0);
switch(l){
case 0:
//紅色通道
case 1:
//綠色通道
case 2:
//蘭色通道
for(i=0;i<2;i++){
SetScrollPos(GetDlgItem(hDlg,IDC_SCROLLBARBRIGHTNESS+i),SB_CTL,newRgb[l][i],TRUE);
wsprintf(tstr,"%d",newRgb[l][i]);
SetDlgItemText(hDlg,IDC_BRIGHTNESS+i,tstr);
}
break;
default:
break;
}
}
else{
//非RGB輸入信號源
for(i=0;i<4;i++){
newValue[i]=okSetVideoParam(hBoard,VIDEO_BRIGHTNESS+i,-1);
SetScrollPos(GetDlgItem(hDlg,IDC_SCROLLBARBRIGHTNESS+i),SB_CTL,newValue[i],TRUE);
wsprintf(tstr,"%d",newValue[i]);
SetDlgItemText(hDlg,IDC_BRIGHTNESS+i,tstr);
if(newValue[i]==-1) EnableWindow(GetDlgItem(hDlg,IDC_SCROLLBARBRIGHTNESS+i),FALSE);
else EnableWindow(GetDlgItem(hDlg,IDC_SCROLLBARBRIGHTNESS+i),TRUE);
}
}
break;
case IDOK:
//確認
EndDialog(hDlg, TRUE);
return (TRUE);
case IDCANCEL:
//取消
if(SendMessage(GetDlgItem(hDlg,IDC_STYPE),CB_GETCURSEL,0,0)){
//RGB輸入信號源
WORD wl,wh;
for(i=0;i<2;i++){
wl=(WORD)orgRgb[0][i];wh=0;
okSetVideoParam(hBoard,VIDEO_BRIGHTNESS,MAKELONG(wl,wh));
wl=(WORD)orgRgb[1][i];wh=1;
okSetVideoParam(hBoard,VIDEO_BRIGHTNESS,MAKELONG(wl,wh));
wl=(WORD)orgRgb[2][i];wh=2;
okSetVideoParam(hBoard,VIDEO_BRIGHTNESS,MAKELONG(wl,wh));
}
}
else{
//非RGB輸入信號源
for(i=0;i<4;i++){
okSetVideoParam(hBoard,VIDEO_BRIGHTNESS+i,orgValue[i]);
}
}
EndDialog(hDlg, TRUE);
return (TRUE);
default:
break;
}
break;
}
return (FALSE);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -