|
|
/*****************************************************************************
* * (C) COPYRIGHT MICROSOFT CORPORATION, 2000 * * TITLE: WiaVideoTest.cpp * * VERSION: 1.0 * * DATE: 2000/11/14 * * DESCRIPTION: Creates the dialog used by the app * *****************************************************************************/ #include <stdafx.h>
#define INCL_APP_GVAR_OWNERSHIP
#include "WiaVideoTest.h"
///////////////////////////////
// Constants
//
const UINT WM_CUSTOM_INIT = WM_USER + 100;
/****************************Local Function Prototypes********************/
INT_PTR CALLBACK MainDlgProc(HWND hDlg, UINT uiMessage, WPARAM wParam, LPARAM lParam);
INT_PTR ProcessWMCommand(HWND hWnd, UINT uiMessage, WPARAM wParam, LPARAM lParam);
INT_PTR ProcessWMNotify(HWND hWnd, UINT uiMessage, WPARAM wParam, LPARAM lParam);
BOOL InitApp(HINSTANCE hInstance); void TermApp(void); BOOL InitInstance(HINSTANCE hInstance, int nCmdShow);
void InitDlg(HWND hwndDlg); void TermDlg(HWND hwndDlg);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
///////////////////////////////
// WinMain
//
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MSG msg; BOOL bSuccess = TRUE; TCHAR *pszBaseDir = NULL; INITCOMMONCONTROLSEX CommonControls = {0};
lpCmdLine = lpCmdLine; hPrevInstance = hPrevInstance;
CoInitializeEx(NULL, COINIT_MULTITHREADED); CommonControls.dwSize = sizeof(CommonControls); CommonControls.dwICC = ICC_WIN95_CLASSES;
bSuccess = InitCommonControlsEx(&CommonControls);
if (bSuccess) { bSuccess =InitApp(hInstance); }
if (bSuccess) { // create the window
bSuccess = InitInstance(hInstance, nCmdShow); }
if (bSuccess) { while (GetMessage(&msg, NULL, 0, 0)) { if ((APP_GVAR.hwndMainDlg == NULL) || (!IsDialogMessage(APP_GVAR.hwndMainDlg, &msg))) { TranslateMessage(&msg); DispatchMessage(&msg); } } }
// Terminate the application.
TermApp();
CoUninitialize();
return 0; }
///////////////////////////////
// InitApp(HANDLE)
//
// Initializes window data and
// registers window class
//
BOOL InitApp(HINSTANCE hInstance) { BOOL bSuccess = TRUE; HWND hPrevWnd = NULL; WNDCLASSEX wc;
if (bSuccess) { // Fill in window class structure with parameters that describe
// the main window.
wc.style = 0; wc.cbSize = sizeof(wc); wc.lpfnWndProc = (WNDPROC)MainDlgProc; wc.cbClsExtra = 0; wc.cbWndExtra = DLGWINDOWEXTRA; wc.hInstance = hInstance; wc.hIcon = NULL; wc.hIconSm = NULL; wc.hCursor = 0; wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wc.lpszMenuName = 0; wc.lpszClassName = TEXT("WIAVIDEOTEST"); }
if (bSuccess) { RegisterClassEx(&wc); }
return bSuccess; }
///////////////////////////////
// InitInstance(HANDLE, int)
//
// Saves instance handle and
// creates main window
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { BOOL bSuccess = TRUE; HWND hwnd = NULL;
// create the window and all its controls.
if (bSuccess) { // create a modeless dialog box.
hwnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_MAIN_DLG), HWND_DESKTOP, NULL);
if (!hwnd) { bSuccess = FALSE; } }
if (bSuccess) { APP_GVAR.hwndMainDlg = hwnd;
ShowWindow(hwnd, nCmdShow); }
return bSuccess; }
///////////////////////////////
// InitDlg(HWND)
//
// Initializes the main dlg
//
void InitDlg(HWND hwndDlg) { SetCursor( LoadCursor(NULL, IDC_WAIT));
SetDlgItemInt(APP_GVAR.hwndMainDlg, IDC_EDIT_NUM_STRESS_THREADS, 0, FALSE);
SetDlgItemInt(APP_GVAR.hwndMainDlg, IDC_EDIT_NUM_PICTURES_TAKEN, 0, FALSE);
//
// Set the WIA Device List Radio box to checked and the DShow
// Device List Radio box to unchecked.
//
SendDlgItemMessage(APP_GVAR.hwndMainDlg, IDC_RADIO_WIA_DEVICE_LIST, BM_SETCHECK, BST_CHECKED, 0);
SendDlgItemMessage(APP_GVAR.hwndMainDlg, IDC_RADIO_DSHOW_DEVICE_LIST, BM_SETCHECK, BST_UNCHECKED, 0);
EnableWindow(GetDlgItem(APP_GVAR.hwndMainDlg, IDC_BUTTON_CREATE_VIDEO_WIA), TRUE); EnableWindow(GetDlgItem(APP_GVAR.hwndMainDlg, IDC_BUTTON_CREATE_VIDEO_ENUM_POS), FALSE); EnableWindow(GetDlgItem(APP_GVAR.hwndMainDlg, IDC_BUTTON_CREATE_VIDEO_FRIENDLY_NAME), FALSE);
//
// initialize WiaProc_Init because by default we are in WIA Device List
// Mode.
//
APP_GVAR.bWiaDeviceListMode = TRUE;
WiaProc_Init(); VideoProc_Init();
SetCursor( LoadCursor(NULL, IDC_ARROW));
return; }
///////////////////////////////
// TermDlg(HWND)
//
void TermDlg(HWND hwndDlg) { SetCursor( LoadCursor(NULL, IDC_WAIT));
VideoProc_Term(); WiaProc_Term();
SetCursor( LoadCursor(NULL, IDC_ARROW)); }
///////////////////////////////
// TermApp
//
void TermApp(void) { }
//////////////////////////////////////////////////////////////////////
// MainDlgProc
//
INT_PTR CALLBACK MainDlgProc(HWND hDlg, UINT uiMessage, WPARAM wParam, LPARAM lParam) { INT_PTR iReturn = 0;
switch (uiMessage) { case WM_CREATE: PostMessage(hDlg, WM_CUSTOM_INIT, 0, 0); return 0; break;
case WM_CUSTOM_INIT: InitDlg(hDlg); break;
//
// Defined in WiaProc.h
//
case WM_CUSTOM_ADD_IMAGE: ImageLst_AddImageToList((BSTR)lParam); break; case WM_CLOSE: // terminate the dialog subsystems
TermDlg(hDlg);
DestroyWindow(hDlg); break; case WM_DESTROY: // terminate the application
PostQuitMessage(0); break; case WM_COMMAND: iReturn = ProcessWMCommand(hDlg, uiMessage, wParam, lParam); break; case WM_NOTIFY: iReturn = ProcessWMNotify(hDlg, uiMessage, wParam, lParam); break;
default: iReturn = DefDlgProc(hDlg, uiMessage, wParam, lParam); break; }
return iReturn; }
///////////////////////////////
// ProcessWMCommand
//
//
INT_PTR ProcessWMCommand(HWND hWnd, UINT uiMessage, WPARAM wParam, LPARAM lParam) { int iId; int iEvent; INT_PTR iReturn = 0;
iId = LOWORD(wParam); iEvent = HIWORD(wParam);
//Parse the menu selections:
switch (iId) { case IDC_BUTTON_CREATE_VIDEO_WIA: case IDC_BUTTON_CREATE_VIDEO_ENUM_POS: case IDC_BUTTON_CREATE_VIDEO_FRIENDLY_NAME: case IDC_BUTTON_DESTROY_VIDEO: case IDC_BUTTON_PLAY: case IDC_BUTTON_PAUSE: case IDC_BUTTON_TAKE_PICTURE: case IDC_BUTTON_TAKE_PICTURE_DRIVER: case IDC_BUTTON_SHOW_VIDEO_TOGGLE: case IDC_BUTTON_RESIZE_TOGGLE: case IDC_BUTTON_TAKE_PICTURE_STRESS: case IDC_BUTTON_TAKE_PICTURE_MULTIPLE:
VideoProc_ProcessMsg(iId);
break;
case IDC_RADIO_WIA_DEVICE_LIST:
EnableWindow(GetDlgItem(APP_GVAR.hwndMainDlg, IDC_BUTTON_CREATE_VIDEO_WIA), TRUE); EnableWindow(GetDlgItem(APP_GVAR.hwndMainDlg, IDC_BUTTON_CREATE_VIDEO_ENUM_POS), FALSE); EnableWindow(GetDlgItem(APP_GVAR.hwndMainDlg, IDC_BUTTON_CREATE_VIDEO_FRIENDLY_NAME), FALSE);
SendDlgItemMessage(APP_GVAR.hwndMainDlg, IDC_RADIO_WIA_DEVICE_LIST, BM_SETCHECK, BST_CHECKED, 0);
SendDlgItemMessage(APP_GVAR.hwndMainDlg, IDC_RADIO_DSHOW_DEVICE_LIST, BM_SETCHECK, BST_UNCHECKED, 0);
APP_GVAR.bWiaDeviceListMode = TRUE; VideoProc_DShowListTerm(); WiaProc_Init(); break;
case IDC_RADIO_DSHOW_DEVICE_LIST:
EnableWindow(GetDlgItem(APP_GVAR.hwndMainDlg, IDC_BUTTON_CREATE_VIDEO_WIA), FALSE); EnableWindow(GetDlgItem(APP_GVAR.hwndMainDlg, IDC_BUTTON_CREATE_VIDEO_ENUM_POS), TRUE); EnableWindow(GetDlgItem(APP_GVAR.hwndMainDlg, IDC_BUTTON_CREATE_VIDEO_FRIENDLY_NAME), TRUE);
SendDlgItemMessage(APP_GVAR.hwndMainDlg, IDC_RADIO_WIA_DEVICE_LIST, BM_SETCHECK, BST_UNCHECKED, 0);
SendDlgItemMessage(APP_GVAR.hwndMainDlg, IDC_RADIO_DSHOW_DEVICE_LIST, BM_SETCHECK, BST_CHECKED, 0);
APP_GVAR.bWiaDeviceListMode = FALSE; WiaProc_Term(); VideoProc_DShowListInit(); break;
default: break; }
UNREFERENCED_PARAMETER(hWnd); UNREFERENCED_PARAMETER(uiMessage); UNREFERENCED_PARAMETER(lParam);
return iReturn; }
///////////////////////////////
// ProcessWMNotify
//
INT_PTR ProcessWMNotify(HWND hWnd, UINT uiMessage, WPARAM wParam, LPARAM lParam) { INT_PTR iReturn = 0; NMHDR *pNotifyHdr = NULL; UINT uiNotifyCode = 0; int iIDCtrl = 0;
// iIDCtrl = wParam;
//
// pNotifyHdr = (LPNMHDR) lParam;
// uiNotifyCode = pNotifyHdr->code;
// switch (uiNotifyCode)
// {
// default:
// break;
// }
UNREFERENCED_PARAMETER(hWnd); UNREFERENCED_PARAMETER(uiMessage);
return iReturn; }
|