|
|
/*
* Copyright (c) 1996 1997, 1998 Philips CE I&C * * FILE PRPPAGE1.CPP * DATE 7-1-97 * VERSION 1.00 * AUTHOR M.J. Verberne * DESCRIPTION Property page 1 * HISTORY */ #include <windows.h>
#include <winioctl.h>
#include <ks.h>
#include <ksmedia.h>
#include <commctrl.h>
#include "resource.h"
#include "prpcom.h"
#include "debug.h"
#include "phvcmext.h"
#include "prpctrl.h"
#include "prppage1.h"
/*======================== LOCAL DATA ====================================*/ static BOOL bInitialized = FALSE; static BOOL bWB_Freeze = TRUE; static BOOL bAE_Freeze = TRUE;
static VFWEXT_INFO VfWExtInfo; static char *Shutter_Speed_Strings[11] = { "1/10000", "1/5000", "1/2500", "1/1500", "1/1000", "1/500", "1/250", "1/100", "1/50", "1/33", "1/25", };
static PRPCTRL WB_Red_Gain_Ctrl = { PRPCTRL_TYPE_SLIDER, IDS_WB_RED_GAIN, IDE_WB_RED_GAIN, IDT_WB_RED_GAIN, STATIC_PROPSETID_PHILIPS_CUSTOM_PROP, KSPROPERTY_PHILIPS_CUSTOM_PROP_WB_RED_GAIN, FALSE, NULL, 0, 0 }; static PRPCTRL WB_Blue_Gain_Ctrl = { PRPCTRL_TYPE_SLIDER, IDS_WB_BLUE_GAIN, IDE_WB_BLUE_GAIN, IDT_WB_BLUE_GAIN, STATIC_PROPSETID_PHILIPS_CUSTOM_PROP, KSPROPERTY_PHILIPS_CUSTOM_PROP_WB_BLUE_GAIN, FALSE, NULL, 0, 0 }; static PRPCTRL WB_Speed_Ctrl = { PRPCTRL_TYPE_SLIDER, IDS_WB_SPEED, IDE_WB_SPEED, IDT_WB_SPEED, STATIC_PROPSETID_PHILIPS_CUSTOM_PROP, KSPROPERTY_PHILIPS_CUSTOM_PROP_WB_SPEED, TRUE, NULL, 0, 0 }; static PRPCTRL AE_AGC_Ctrl = { PRPCTRL_TYPE_SLIDER, IDS_AE_AGC, IDE_AE_AGC, IDT_AE_AGC, STATIC_PROPSETID_PHILIPS_CUSTOM_PROP, KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_AGC, FALSE, NULL, 0, 0 }; static PRPCTRL AE_Shutter_Speed_Ctrl = { PRPCTRL_TYPE_SLIDER, IDS_AE_SHUTTER_SPEED, IDE_AE_SHUTTER_SPEED, IDT_AE_SHUTTER_SPEED, STATIC_PROPSETID_PHILIPS_CUSTOM_PROP, KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_SHUTTER_SPEED, TRUE, Shutter_Speed_Strings, 0, 0 }; static PRPCTRL AE_Control_Speed_Ctrl = { PRPCTRL_TYPE_SLIDER, IDS_AE_CONTROL_SPEED, IDE_AE_CONTROL_SPEED, IDT_AE_CONTROL_SPEED, STATIC_PROPSETID_PHILIPS_CUSTOM_PROP, KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_CONTROL_SPEED, TRUE, NULL, 0, 0 }; static PRPCTRL AE_FlickerlessCtrl = { PRPCTRL_TYPE_CHECKBOX, IDC_AE_FLICKERLESS, 0, 0, STATIC_PROPSETID_PHILIPS_CUSTOM_PROP, KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_FLICKERLESS, FALSE, NULL, KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_FLICKERLESS_OFF, KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_FLICKERLESS_ON };
/*======================== LOCAL FUNCTION DEFINITIONS ====================*/ static INT_PTR CALLBACK PRPPAGE1_PageDlgProc( HWND hDlg, UINT uMessage, WPARAM wParam, LPARAM lParam); static UINT _stdcall PRPPAGE1_PageCallback( HWND hwnd, UINT uMsg, LPPROPSHEETPAGE ppsp); static BOOL PRPPAGE1_ExtSetActive( HWND hDlg, WPARAM wParam, LPARAM lParam); static BOOL PRPPAGE1_PageDlgProc_DoCommand( HWND hDlg, WPARAM wParam, LPARAM lParam); static BOOL PRPPAGE1_Init_WB( HWND hDlg, WPARAM wParam, LPARAM lParam); static BOOL PRPPAGE1_Init_AE( HWND hDlg, WPARAM wParam, LPARAM lParam); static BOOL PRPPAGE1_Handle_WB_Mode( HWND hDlg, WPARAM wParam, LPARAM lParam); static BOOL PRPPAGE1_Handle_AE_Mode( HWND hDlg, WPARAM wParam, LPARAM lParam); static BOOL PRPPAGE1_Handle_Slider( HWND hDlg, WPARAM wParam, LPARAM lParam); static BOOL PRPPAGE1_Handle_AE_Flickerless( HWND hDlg, WPARAM wParam, LPARAM lParam); static void PRPPAGE1_EnableControls( HWND hDlg, BOOL bEnable); static void PRPPAGE1_Handle_Err_Comm( HWND hDlg); static void PRPPAGE1_Handle_Err_Dev_Chg( HWND hDlg);
/*======================== EXPORTED FUNCTIONS =============================*/
/*-------------------------------------------------------------------------*/ HPROPSHEETPAGE PRPPAGE1_CreatePage( LPFNEXTDEVIO pfnDeviceIoControl, LPARAM lParam, HINSTANCE hInst) /*-------------------------------------------------------------------------*/ { PROPSHEETPAGE psPage; HPROPSHEETPAGE hPage;
// save device info
VfWExtInfo.pfnDeviceIoControl = pfnDeviceIoControl; VfWExtInfo.lParam = lParam;
// create page
psPage.dwSize = sizeof(psPage); psPage.dwFlags = PSP_USEREFPARENT | PSP_USECALLBACK; psPage.hInstance = hInst; psPage.pszTemplate = MAKEINTRESOURCE(IDD_VCM_NALA1); psPage.pszIcon = NULL; psPage.pfnDlgProc = PRPPAGE1_PageDlgProc; psPage.pcRefParent = 0; psPage.pfnCallback = (LPFNPSPCALLBACK) PRPPAGE1_PageCallback; psPage.lParam = (LPARAM) &VfWExtInfo;
hPage = CreatePropertySheetPage(&psPage);
return hPage; }
/*======================== LOCAL FUNCTIONS ================================*/
/*-------------------------------------------------------------------------*/ static INT_PTR CALLBACK PRPPAGE1_PageDlgProc( HWND hDlg, UINT uMessage, WPARAM wParam, LPARAM lParam) /*-------------------------------------------------------------------------*/ { switch (uMessage) { case WM_INITDIALOG: SetWindowLongPtr(hDlg,DWLP_USER, (LPARAM) &VfWExtInfo); return TRUE; case WM_COMMAND: return PRPPAGE1_PageDlgProc_DoCommand(hDlg, wParam, lParam); case WM_NOTIFY: if (((NMHDR FAR *)lParam)->code == PSN_SETACTIVE) return PRPPAGE1_ExtSetActive(hDlg, wParam, lParam); break; case WM_HSCROLL: PRPPAGE1_Handle_Slider(hDlg, wParam, lParam); return TRUE; } return FALSE; // default processing
}
/*-------------------------------------------------------------------------*/ static UINT _stdcall PRPPAGE1_PageCallback( HWND hwnd, UINT uMsg, LPPROPSHEETPAGE ppsp) /*-------------------------------------------------------------------------*/ { switch(uMsg) { case PSPCB_CREATE: return 1; case PSPCB_RELEASE: return 0; } return 0; }
/*-------------------------------------------------------------------------*/ static BOOL PRPPAGE1_ExtSetActive( HWND hDlg, WPARAM wParam, LPARAM lParam) /*-------------------------------------------------------------------------*/ { PVFWEXT_INFO pVfWExtInfo = (PVFWEXT_INFO) GetWindowLongPtr(hDlg, DWLP_USER); BOOL bResult;
// Open the device and initialize the controls
if (PRPCOM_HasDeviceChanged( pVfWExtInfo->pfnDeviceIoControl, pVfWExtInfo->lParam)) { // Oops, device is not the same anymore
goto PRPPAGE1_ExtSetActive_Err_Dev_Chg; }
// enable all controls
PRPPAGE1_EnableControls(hDlg, TRUE);
// initialize WB
bResult = PRPPAGE1_Init_WB(hDlg, wParam, lParam); if (!bResult) goto PRPPAGE1_ExtSetActive_Err_Comm;
// initialize AE
bResult &= PRPPAGE1_Init_AE(hDlg, wParam, lParam); if (!bResult) goto PRPPAGE1_ExtSetActive_Err_Comm;
// All ok
bInitialized = TRUE;
return TRUE;
PRPPAGE1_ExtSetActive_Err_Dev_Chg:
PRPPAGE1_Handle_Err_Dev_Chg(hDlg);
return FALSE;
PRPPAGE1_ExtSetActive_Err_Comm:
PRPPAGE1_Handle_Err_Comm(hDlg);
return FALSE;
}
/*-------------------------------------------------------------------------*/ static BOOL PRPPAGE1_PageDlgProc_DoCommand( HWND hDlg, WPARAM wParam, LPARAM lParam) /*-------------------------------------------------------------------------*/ { BOOL bResult;
switch(LOWORD(wParam)) { case IDR_WB_MODE_AUTO: case IDR_WB_MODE_FIXED: case IDR_WB_MODE_MANUAL: bResult = PRPPAGE1_Handle_WB_Mode(hDlg, wParam, lParam); if (!bResult) goto PRPPAGE1_PageDlgProc_DoCommand_Err_Comm; break; case IDR_AE_MODE_AUTO: case IDR_AE_MODE_FIXED: case IDR_AE_MODE_MANUAL: bResult = PRPPAGE1_Handle_AE_Mode(hDlg, wParam, lParam); if (!bResult) goto PRPPAGE1_PageDlgProc_DoCommand_Err_Comm; break; case IDC_AE_FLICKERLESS: bResult = PRPPAGE1_Handle_AE_Flickerless(hDlg, wParam, lParam); if (!bResult) goto PRPPAGE1_PageDlgProc_DoCommand_Err_Comm; break; default: return FALSE; // default processing
}
return TRUE; // message processed
PRPPAGE1_PageDlgProc_DoCommand_Err_Comm:
PRPPAGE1_Handle_Err_Comm(hDlg); return TRUE; // message processed
}
/*-------------------------------------------------------------------------*/ static BOOL PRPPAGE1_Init_WB( HWND hDlg, WPARAM wParam, LPARAM lParam) /*-------------------------------------------------------------------------*/ { PVFWEXT_INFO pVfWExtInfo = (PVFWEXT_INFO) GetWindowLongPtr(hDlg, DWLP_USER); LONG lWB_Mode; BOOL bResult, bAuto, bFreeze, bManual;
// Get white balance mode from camera
bResult = PRPCOM_Get_Value( PROPSETID_PHILIPS_CUSTOM_PROP, KSPROPERTY_PHILIPS_CUSTOM_PROP_WB_MODE, pVfWExtInfo->pfnDeviceIoControl, pVfWExtInfo->lParam, &lWB_Mode); if (!bResult) return FALSE;
// check whitebalance mode
switch(lWB_Mode) { case KSPROPERTY_PHILIPS_CUSTOM_PROP_WB_MODE_INDOOR: case KSPROPERTY_PHILIPS_CUSTOM_PROP_WB_MODE_OUTDOOR: case KSPROPERTY_PHILIPS_CUSTOM_PROP_WB_MODE_TL: case KSPROPERTY_PHILIPS_CUSTOM_PROP_WB_MODE_AUTO: case KSPROPERTY_PHILIPS_CUSTOM_PROP_WB_MODE_MANUAL: break; default: return FALSE; }
// switch to freeze mode if indoor, outdoor or tl
// (these are not supported by the ui)
if (lWB_Mode != KSPROPERTY_PHILIPS_CUSTOM_PROP_WB_MODE_AUTO && lWB_Mode != KSPROPERTY_PHILIPS_CUSTOM_PROP_WB_MODE_MANUAL) {
lWB_Mode = KSPROPERTY_PHILIPS_CUSTOM_PROP_WB_MODE_MANUAL;
// Set new WhiteBalance mode
bResult = PRPCOM_Set_Value( PROPSETID_PHILIPS_CUSTOM_PROP, KSPROPERTY_PHILIPS_CUSTOM_PROP_WB_MODE, pVfWExtInfo->pfnDeviceIoControl, pVfWExtInfo->lParam, lWB_Mode); if (!bResult) return FALSE; }
// set radio buttons
bAuto = lWB_Mode == KSPROPERTY_PHILIPS_CUSTOM_PROP_WB_MODE_AUTO; if (bInitialized) { bFreeze = !bAuto && bWB_Freeze; bManual = !bAuto && !bWB_Freeze; } else { // if not initialized assume fixed mode when not auto
bFreeze = !bAuto; bManual = FALSE; } bWB_Freeze = bFreeze;
SendMessage(GetDlgItem(hDlg, IDR_WB_MODE_AUTO), BM_SETCHECK, bAuto, 0); SendMessage(GetDlgItem(hDlg, IDR_WB_MODE_FIXED), BM_SETCHECK, bFreeze, 0); SendMessage(GetDlgItem(hDlg, IDR_WB_MODE_MANUAL), BM_SETCHECK, bManual, 0);
// update controls
bResult = PRPCTRL_Init(hDlg, &WB_Red_Gain_Ctrl, bManual); if (!bResult) return FALSE; bResult = PRPCTRL_Init(hDlg, &WB_Blue_Gain_Ctrl, bManual); if (!bResult) return FALSE; bResult = PRPCTRL_Init(hDlg, &WB_Speed_Ctrl, bAuto); if (!bResult) return FALSE;
return TRUE; }
/*-------------------------------------------------------------------------*/ static BOOL PRPPAGE1_Init_AE( HWND hDlg, WPARAM wParam, LPARAM lParam) /*-------------------------------------------------------------------------*/ { PVFWEXT_INFO pVfWExtInfo = (PVFWEXT_INFO) GetWindowLongPtr(hDlg, DWLP_USER); LONG lAE_Shutter_Mode, lAE_AGC_Mode; BOOL bResult, bAuto, bFreeze, bManual;;
// Get Shutter Mode from camera
bResult = PRPCOM_Get_Value( PROPSETID_PHILIPS_CUSTOM_PROP, KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_SHUTTER_MODE, pVfWExtInfo->pfnDeviceIoControl, pVfWExtInfo->lParam, &lAE_Shutter_Mode); if (!bResult) return FALSE;
// check Shutter Mode
switch(lAE_Shutter_Mode) { case KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_SHUTTER_MODE_AUTO: case KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_SHUTTER_MODE_FIXED: break; default: return FALSE; }
// Get AGC Mode from camera
bResult = PRPCOM_Get_Value( PROPSETID_PHILIPS_CUSTOM_PROP, KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_AGC_MODE, pVfWExtInfo->pfnDeviceIoControl, pVfWExtInfo->lParam, &lAE_AGC_Mode); if (!bResult) return FALSE;
// check AGC Mode
switch(lAE_AGC_Mode) { case KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_AGC_MODE_AUTO: case KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_AGC_MODE_FIXED: break; default: return FALSE; }
// Situation where Shutter Mode = Auto and AGC Mode = Fixed or vice versa
// not supported. In those cases, switch to fixed
if (lAE_Shutter_Mode == KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_SHUTTER_MODE_AUTO && lAE_AGC_Mode == KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_AGC_MODE_FIXED) { // Set Shutter Mode to Fixed
bResult = PRPCOM_Set_Value( PROPSETID_PHILIPS_CUSTOM_PROP, KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_SHUTTER_MODE, pVfWExtInfo->pfnDeviceIoControl, pVfWExtInfo->lParam, KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_SHUTTER_MODE_FIXED); if (!bResult) return FALSE; lAE_Shutter_Mode = KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_SHUTTER_MODE_FIXED; } else if (lAE_Shutter_Mode == KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_SHUTTER_MODE_FIXED && lAE_AGC_Mode == KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_AGC_MODE_AUTO) { // Set AGC Mode to Fixed
bResult = PRPCOM_Set_Value( PROPSETID_PHILIPS_CUSTOM_PROP, KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_AGC_MODE, pVfWExtInfo->pfnDeviceIoControl, pVfWExtInfo->lParam, KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_AGC_MODE_FIXED); if (!bResult) return FALSE; lAE_AGC_Mode = KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_AGC_MODE_FIXED; }
// set radio buttons
bAuto = lAE_Shutter_Mode == KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_SHUTTER_MODE_AUTO; if (bInitialized) { bFreeze = !bAuto && bAE_Freeze; bManual = !bAuto && !bAE_Freeze; } else { // if not initialized assume fixed mode when not auto
bFreeze = !bAuto; bManual = FALSE; } bAE_Freeze = bFreeze;
SendMessage(GetDlgItem(hDlg, IDR_AE_MODE_AUTO), BM_SETCHECK, bAuto, 0); SendMessage(GetDlgItem(hDlg, IDR_AE_MODE_FIXED), BM_SETCHECK, bFreeze, 0); SendMessage(GetDlgItem(hDlg, IDR_AE_MODE_MANUAL), BM_SETCHECK, bManual, 0);
// update controls
bResult = PRPCTRL_Init(hDlg, &AE_AGC_Ctrl, bManual); if (!bResult) return FALSE; bResult = PRPCTRL_Init(hDlg, &AE_Shutter_Speed_Ctrl, bManual); if (!bResult) return FALSE; bResult = PRPCTRL_Init(hDlg, &AE_Control_Speed_Ctrl, bAuto); if (!bResult) return FALSE; bResult = PRPCTRL_Init(hDlg, &AE_FlickerlessCtrl, bAuto); if (!bResult) return FALSE;
return TRUE; }
/*-------------------------------------------------------------------------*/ static BOOL PRPPAGE1_Handle_WB_Mode( HWND hDlg, WPARAM wParam, LPARAM lParam) /*-------------------------------------------------------------------------*/ { BOOL bResult = TRUE; LONG lWB_Mode; PVFWEXT_INFO pVfWExtInfo = (PVFWEXT_INFO) GetWindowLongPtr(hDlg, DWLP_USER);
// Only process checked events for these radio buttons
if (SendMessage((HWND)lParam, BM_GETCHECK, 0, 0) != BST_CHECKED) return TRUE; // get new mode
switch(LOWORD(wParam)) { case IDR_WB_MODE_AUTO: lWB_Mode = KSPROPERTY_PHILIPS_CUSTOM_PROP_WB_MODE_AUTO; bWB_Freeze = FALSE; break; case IDR_WB_MODE_FIXED: lWB_Mode = KSPROPERTY_PHILIPS_CUSTOM_PROP_WB_MODE_MANUAL; bWB_Freeze = TRUE; break; case IDR_WB_MODE_MANUAL: lWB_Mode = KSPROPERTY_PHILIPS_CUSTOM_PROP_WB_MODE_MANUAL; bWB_Freeze = FALSE; break; default: return FALSE; }
// Set new WhiteBalance mode
bResult = PRPCOM_Set_Value( PROPSETID_PHILIPS_CUSTOM_PROP, KSPROPERTY_PHILIPS_CUSTOM_PROP_WB_MODE, pVfWExtInfo->pfnDeviceIoControl, pVfWExtInfo->lParam, lWB_Mode); if (!bResult) return FALSE;
// update controls
bResult = PRPCTRL_Enable(hDlg, &WB_Red_Gain_Ctrl, LOWORD(wParam) == IDR_WB_MODE_MANUAL); if (!bResult) return FALSE; bResult = PRPCTRL_Enable(hDlg, &WB_Blue_Gain_Ctrl, LOWORD(wParam) == IDR_WB_MODE_MANUAL); if (!bResult) return FALSE; bResult = PRPCTRL_Enable(hDlg, &WB_Speed_Ctrl, LOWORD(wParam) == IDR_WB_MODE_AUTO); if (!bResult) return FALSE;
return TRUE; }
/*-------------------------------------------------------------------------*/ static BOOL PRPPAGE1_Handle_AE_Mode( HWND hDlg, WPARAM wParam, LPARAM lParam) /*-------------------------------------------------------------------------*/ { BOOL bResult = TRUE; LONG lAE_Shutter_Mode, lAE_AGC_Mode, lAE_Shutter_Speed; PVFWEXT_INFO pVfWExtInfo = (PVFWEXT_INFO) GetWindowLongPtr(hDlg, DWLP_USER);
// Only process checked events for these radio buttons
if (SendMessage((HWND)lParam, BM_GETCHECK, 0, 0) != BST_CHECKED) return TRUE; // get new mode
switch(LOWORD(wParam)) { case IDR_AE_MODE_AUTO: lAE_Shutter_Mode = KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_SHUTTER_MODE_AUTO; lAE_AGC_Mode = KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_AGC_MODE_AUTO; bAE_Freeze = FALSE; break; case IDR_AE_MODE_FIXED: lAE_Shutter_Mode = KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_SHUTTER_MODE_FIXED; lAE_AGC_Mode = KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_AGC_MODE_FIXED; bAE_Freeze = TRUE; break; case IDR_AE_MODE_MANUAL: lAE_Shutter_Mode = KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_SHUTTER_MODE_FIXED; lAE_AGC_Mode = KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_AGC_MODE_FIXED; bAE_Freeze = FALSE; break; default: return FALSE; }
// Set new shutter mode
bResult = PRPCOM_Set_Value( PROPSETID_PHILIPS_CUSTOM_PROP, KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_SHUTTER_MODE, pVfWExtInfo->pfnDeviceIoControl, pVfWExtInfo->lParam, lAE_Shutter_Mode); if (!bResult) return FALSE;
// Set new AGC Mode
bResult = PRPCOM_Set_Value( PROPSETID_PHILIPS_CUSTOM_PROP, KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_AGC_MODE, pVfWExtInfo->pfnDeviceIoControl, pVfWExtInfo->lParam, lAE_AGC_Mode); if (!bResult) return FALSE;
// pitfall for shutter speed: if switched to manual
// we must set the value to one of the 11 discrete
// values available
if (LOWORD(wParam) == IDR_AE_MODE_MANUAL) { // Get shutterspeed
bResult = PRPCOM_Get_Value( PROPSETID_PHILIPS_CUSTOM_PROP, KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_SHUTTER_SPEED, pVfWExtInfo->pfnDeviceIoControl, pVfWExtInfo->lParam, &lAE_Shutter_Speed); if (!bResult) return FALSE;
// Set shutterspeed
bResult = PRPCOM_Set_Value( PROPSETID_PHILIPS_CUSTOM_PROP, KSPROPERTY_PHILIPS_CUSTOM_PROP_AE_SHUTTER_SPEED, pVfWExtInfo->pfnDeviceIoControl, pVfWExtInfo->lParam, lAE_Shutter_Speed); if (!bResult) return FALSE; }
// update controls
bResult = PRPCTRL_Enable(hDlg, &AE_AGC_Ctrl, LOWORD(wParam) == IDR_AE_MODE_MANUAL); if (!bResult) return FALSE; bResult = PRPCTRL_Enable(hDlg, &AE_Shutter_Speed_Ctrl, LOWORD(wParam) == IDR_AE_MODE_MANUAL); if (!bResult) return FALSE; bResult = PRPCTRL_Enable(hDlg, &AE_Control_Speed_Ctrl, LOWORD(wParam) == IDR_AE_MODE_AUTO); if (!bResult) return FALSE; bResult = PRPCTRL_Enable(hDlg, &AE_FlickerlessCtrl, LOWORD(wParam) == IDR_AE_MODE_AUTO); if (!bResult) return FALSE;
return TRUE; }
/*-------------------------------------------------------------------------*/ static BOOL PRPPAGE1_Handle_Slider( HWND hDlg, WPARAM wParam, LPARAM lParam) /*-------------------------------------------------------------------------*/ { PRPCTRL_INFO *pCtrl; WORD Ctrl; BOOL bResult = TRUE;
// only process when scrolling is done
if (LOWORD(wParam) != SB_ENDSCROLL && LOWORD(wParam) != SB_THUMBTRACK) return TRUE;
// get control id
Ctrl = (WORD)GetWindowLong((HWND)lParam, GWL_ID);
// get control object
switch(Ctrl) { case IDS_WB_RED_GAIN: pCtrl = &WB_Red_Gain_Ctrl; break; case IDS_WB_BLUE_GAIN: pCtrl = &WB_Blue_Gain_Ctrl; break; case IDS_WB_SPEED: pCtrl = &WB_Speed_Ctrl; break; case IDS_AE_CONTROL_SPEED: pCtrl = &AE_Control_Speed_Ctrl; break; case IDS_AE_SHUTTER_SPEED: pCtrl = &AE_Shutter_Speed_Ctrl; break; case IDS_AE_AGC: pCtrl = &AE_AGC_Ctrl; break; default: return FALSE; }
// process the message
bResult = PRPCTRL_Handle_Msg(hDlg, pCtrl); if (!bResult) goto PRPPAGE1_Handle_Slider_Err_Comm;
return TRUE;
PRPPAGE1_Handle_Slider_Err_Comm:
PRPPAGE1_Handle_Err_Comm(hDlg); return TRUE; // message processed
}
/*-------------------------------------------------------------------------*/ static BOOL PRPPAGE1_Handle_AE_Flickerless( HWND hDlg, WPARAM wParam, LPARAM lParam) /*-------------------------------------------------------------------------*/ { PRPCTRL_INFO *pCtrl; BOOL bResult;
// get control object
pCtrl = &AE_FlickerlessCtrl;
// process the message
bResult = PRPCTRL_Handle_Msg(hDlg, pCtrl); if (!bResult) return FALSE;
return TRUE; }
/*-------------------------------------------------------------------------*/ static void PRPPAGE1_EnableControls( HWND hDlg, BOOL bEnable) /*-------------------------------------------------------------------------*/ { static WORD Controls[] = { IDR_WB_MODE_AUTO, IDR_WB_MODE_FIXED, IDR_WB_MODE_MANUAL, IDR_AE_MODE_AUTO, IDR_AE_MODE_FIXED, IDR_AE_MODE_MANUAL,
IDS_WB_SPEED, IDS_WB_RED_GAIN, IDS_WB_BLUE_GAIN, IDS_AE_AGC, IDS_AE_SHUTTER_SPEED, IDS_AE_CONTROL_SPEED,
IDE_WB_SPEED, IDE_WB_RED_GAIN, IDE_WB_BLUE_GAIN, IDE_AE_AGC, IDE_AE_SHUTTER_SPEED, IDE_AE_CONTROL_SPEED,
IDC_AE_FLICKERLESS,
IDT_WB_MODE, IDT_WB_SPEED, IDT_WB_RED_GAIN, IDT_WB_BLUE_GAIN, IDT_WB, IDT_AE_MODE, IDT_AE_AGC, IDT_AE_SHUTTER_SPEED, IDT_AE, IDT_AE_CONTROL_SPEED,
0 }; int i = 0;
while(Controls[i] != 0) EnableWindow(GetDlgItem(hDlg, Controls[i++]), bEnable); }
/*-------------------------------------------------------------------------*/ static void PRPPAGE1_Handle_Err_Comm( HWND hDlg) /*-------------------------------------------------------------------------*/ { char Msg_Err_Comm[132] = "";
// disable everything
PRPPAGE1_EnableControls(hDlg, FALSE);
// load the message text from resource
LoadString(hInst, IDS_MSG_ERR_COMM, Msg_Err_Comm, 132);
// notify the user
MessageBox(hDlg, Msg_Err_Comm,"Error", MB_OK | MB_ICONERROR); }
/*-------------------------------------------------------------------------*/ static void PRPPAGE1_Handle_Err_Dev_Chg( HWND hDlg) /*-------------------------------------------------------------------------*/ { char Msg_Err_Dev_Chg[132] = "";
// disable everything
PRPPAGE1_EnableControls(hDlg, FALSE);
// load the message text from resource
LoadString(hInst, IDS_MSG_ERR_DEV_CHG, Msg_Err_Dev_Chg, 132);
// notify the user
MessageBox(hDlg, Msg_Err_Dev_Chg,"Warning", MB_OK); }
|