home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
wpentk.zip
/
WBPENTK1.DSK
/
WRTSMDLG.C
< prev
Wrap
C/C++ Source or Header
|
1994-10-06
|
137KB
|
2,898 lines
/******************************************************************************
* *
* File Name : WRTSMDLG.C *
* *
* Description : Dialog functions for the WRTSAMPL.exe *
* *
* Function: This file has all the dialog procedures for the wrtsampl.exe *
* *
* Copyright (C) 1993 IBM Corporation *
* *
* DISCLAIMER OF WARRANTIES. The following [enclosed] code is *
* sample code created by IBM Corporation. This sample code is not *
* part of any standard or IBM product and is provided to you solely *
* for the purpose of assisting you in the development of your *
* applications. The code is provided "AS IS", without *
* warranty of any kind. IBM shall not be liable for any damages *
* arising out of your use of the sample code, even if they have been *
* advised of the possibility of such damages. *
* *
*******************************************************************************/
#define INCL_DOS
#define INCL_PM
#define INCL_GPI
#define INCL_DOSMEMMGR
#define INCL_WINLOAD
#define INCL_DOSPROCESS
#define INCL_DOSSEMAPHORES
#include <os2.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <penpm.h>
#include "wrtsampl.h"
ULONG ulNumDevices;
CHAR aDeviceName[10][32];
SHORT index1, index2, index3;
HWND hwndCombo1, hwndCombo2, hwndCombo3;
LONG startvalue;
SHORT index;
/******************************************************************************/
/* Display Dialogs */
/******************************************************************************/
/*******************************************************************************
* *
* Function Name: QInpDevDlgProc *
* *
* Description : *
* *
* Displays the Query Input Device variable Pen for OS/2 *
* *
* Input: *
* *
* Output: Display the Query Input variable. *
* *
*******************************************************************************/
MRESULT EXPENTRY QInpDevDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
HWND hwnd_temp;
switch(msg)
{
case WM_INITDLG:
init_invar ( hwnd, 1 );
return(FALSE);
case WM_COMMAND:
switch ( SHORT1FROMMP ( mp1 ) )
{
case EXIT:
WinDismissDlg ( hwnd, EXIT );
break;
} /* endswitch */
return ( FALSE );
case WM_CONTROL:
switch ( SHORT2FROMMP ( mp1 ) )
{
case CBN_ENTER:
hwnd_temp = HWNDFROMMP ( mp2 );
updatecntrl ( hwnd, 1, hwnd_temp );
break;
} /* endswitch */
return ( FALSE );
} /* endswitch */
return(WinDefDlgProc(hwnd, msg, mp1, mp2));
}
/*******************************************************************************
* *
* Function Name: QInDevNDlgProc *
* *
* Description : *
* *
* Displays the Device names supported by each driver *
* *
* Input: *
* *
* Output: Display the Device names supported by each driver. *
* *
*******************************************************************************/
MRESULT EXPENTRY QInDevNDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
APIRET irc;
CHAR cbuffer[MAXCBUFFER];
ULONG aDeviceType[10];
ULONG aDeviceID[10];
HWND hwnd_temp;
WNDPARAMS comboprams;
INT i;
switch(msg)
{
case WM_INITDLG:
/****************************************************************************/
/* Find out how many input driver there are */
/****************************************************************************/
ulNumDrivers = 0L;
irc = WrtEnumInputDrivers ( &ulNumDrivers, NULL );
if ( irc != WRT_NO_ERROR )
{
DisplayError ( hwnd, irc );
} else
{
if ( ulNumDrivers > 10L )
{
sprintf(cbuffer,"Too many drivers[%ld] for my ARRAY", ulNumDrivers );
WinMessageBox( HWND_DESKTOP,
hwnd,
cbuffer,
NULL, 1, MB_OK );
} else
{
if ( ulNumDrivers == 0L )
{
sprintf(cbuffer,"No drivers found" );
WinMessageBox( HWND_DESKTOP,
hwnd,
cbuffer,
NULL, 1, MB_OK );
} else
{
/**********************************************************************/
/* get array of driver names */
/**********************************************************************/
irc = WrtEnumInputDrivers ( &ulNumDrivers, szDriverName );
if ( irc != WRT_NO_ERROR )
{
DisplayError ( hwnd, irc );
} else
{
/********************************************************************/
/* initialize the entries in the Drivers list box */
/********************************************************************/
hwndCombo1 = WinWindowFromID ( hwnd , wrtelc01 );
for ( i= 0; i < ulNumDrivers ; i++ )
{
index1 = (SHORT) WinSendMsg ( hwndCombo1, LM_INSERTITEM,
MPFROMSHORT ( LIT_END ),
MPFROMP ( szDriverName[i] ) );
} /* endfor */
/********************************************************************/
/* Set the first item on the list at the top. */
/********************************************************************/
index1 = 0; /* intialize the index to zeror */
WinSendMsg ( hwndCombo1, LM_SETTOPINDEX, MPFROMSHORT ( index1 ), 0 );
comboprams.fsStatus = WPM_TEXT; /* change window text */
comboprams.cchText = sizeof ( szDriverName[index1] ); /* text size */
comboprams.pszText = szDriverName[index1]; /*text to display*/
WinSendMsg ( hwndCombo1, WM_SETWINDOWPARAMS,
&comboprams, 0 );
/********************************************************************/
/* Find out how many input device there are */
/********************************************************************/
ulNumDevices = 0L;
irc = WrtQueryInputDeviceNames ( szDriverName[index1], &ulNumDevices,
NULL, NULL, NULL );
if ( irc != WRT_NO_ERROR )
{
DisplayError ( hwnd, irc );
} else
{
if ( ulNumDevices > 10L )
{
sprintf(cbuffer,"Too many devices[%ld] Driver[%s] for my ARRAY",
ulNumDevices, szDriverName[index1] );
WinMessageBox( HWND_DESKTOP,
hwnd,
cbuffer,
NULL, 1, MB_OK );
} else
{
/****************************************************************/
/* Get array of device names */
/****************************************************************/
irc = WrtQueryInputDeviceNames ( szDriverName[index1],
&ulNumDevices, aDeviceName,
aDeviceType, aDeviceID );
if ( irc != WRT_NO_ERROR )
{
DisplayError ( hwnd, irc );
} else
{
/**************************************************************/
/* initialize the entries in the list box */
/**************************************************************/
hwndCombo2 = WinWindowFromID ( hwnd , wrtelc02 );
for ( i= 0; i < ulNumDevices ; i++ )
{
index2 = (SHORT) WinSendMsg ( hwndCombo2, LM_INSERTITEM,
MPFROMSHORT ( LIT_END ),
MPFROMP ( aDeviceName[i] ) );
} /* endfor */
/**************************************************************/
/* Set the first item on the list at the top. */
/**************************************************************/
index2 = 0; /* intialize the index to zeror */
WinSendMsg ( hwndCombo2, LM_SETTOPINDEX,
MPFROMSHORT ( index2 ), 0 );
comboprams.fsStatus = WPM_TEXT; /* change window text */
comboprams.cchText = sizeof( aDeviceName[index2] );/*text size*/
comboprams.pszText = aDeviceName[index2]; /*text to display*/
WinSendMsg ( hwndCombo2, WM_SETWINDOWPARAMS,
&comboprams, 0 );
} /* endif */
} /* endif */
} /* endif */
} /* endif */
} /* endif */
} /* endif */
} /* endif */
return(FALSE);
case WM_COMMAND:
switch ( SHORT1FROMMP ( mp1 ) )
{
case EXIT:
WinDismissDlg ( hwnd, EXIT );
break;
} /* endswitch */
return ( FALSE );
case WM_CONTROL:
switch ( SHORT2FROMMP ( mp1 ) )
{
case CBN_ENTER:
hwnd_temp = HWNDFROMMP ( mp2 );
if ( hwnd_temp == hwndCombo1 )
{
/*******************************************************************/
/* Get the Driver selected and find: */
/* 1: devices supported by the driver */
/*******************************************************************/
/*******************************************************************/
/* find the index of the selected item */
/*******************************************************************/
index1 = (SHORT)WinSendMsg ( hwndCombo1, LM_QUERYSELECTION, 0L, 0L );
if ( index1 != LIT_NONE )
{
/*****************************************************************/
/* get the name of the driver choosen. */
/*****************************************************************/
WinSendMsg ( hwndCombo1, LM_QUERYITEMTEXT,
MPFROM2SHORT ( index1, 32 ),
MPFROMP ( szDriverName[index1] ) );
/*****************************************************************/
/* Clear out the Devices list box and get the devices for the */
/* driver. */
/*****************************************************************/
WinSendMsg ( hwndCombo2, LM_DELETEALL,
0L,
0L );
/*****************************************************************/
/* Find out how many input device there are */
/*****************************************************************/
ulNumDevices = 0L;
irc = WrtQueryInputDeviceNames ( szDriverName[index1],
&ulNumDevices,
NULL, NULL, NULL );
if ( irc != WRT_NO_ERROR )
{
sprintf(cbuffer,"FAIL getting # Device Name Driver[%s] RET= %#x",
szDriverName[index1], irc );
WinMessageBox( HWND_DESKTOP,
hwnd,
cbuffer,
NULL, 1, MB_OK );
} else
{
if ( ulNumDevices > 10L )
{
sprintf(cbuffer,"Too many devices[%ld] Driver[%s] for my ARRAY",
ulNumDevices, szDriverName[index1] );
WinMessageBox( HWND_DESKTOP,
hwnd,
cbuffer,
NULL, 1, MB_OK );
} else
{
/*************************************************************/
/* Get array of device names */
/*************************************************************/
irc = WrtQueryInputDeviceNames ( szDriverName[index1],
&ulNumDevices, aDeviceName,
aDeviceType, aDeviceID );
if ( irc != WRT_NO_ERROR )
{
sprintf(cbuffer,"FAIL Device Name Driver[%s] RET= %#x",
szDriverName[i], irc );
WinMessageBox( HWND_DESKTOP,
hwnd,
cbuffer,
NULL, 1, MB_OK );
} else
{
/***********************************************************/
/* initialize the entries in the list box */
/***********************************************************/
hwndCombo2 = WinWindowFromID ( hwnd , wrtelc02 );
for ( i= 0; i < ulNumDevices ; i++ )
{
index2 = (SHORT) WinSendMsg ( hwndCombo2, LM_INSERTITEM,
MPFROMSHORT ( LIT_END ),
MPFROMP ( aDeviceName[i] ) );
} /* endfor */
/***********************************************************/
/* Set the first item on the list at the top. */
/***********************************************************/
index2 = 0; /* intialize the index to zeror */
WinSendMsg ( hwndCombo2, LM_SETTOPINDEX,
MPFROMSHORT ( index2 ), 0 );
comboprams.fsStatus = WPM_TEXT; /* change window text */
comboprams.cchText = sizeof ( aDeviceName[index2] );
/*text size*/
comboprams.pszText = aDeviceName[index2]; /*text to display*/
WinSendMsg ( hwndCombo2, WM_SETWINDOWPARAMS,
&comboprams, 0 );
} /* endif */
} /* endif */
} /* endif */
} /* endif */
} /* endif */
break;
} /* endswitch */
return ( FALSE );
} /* endswitch */
return(WinDefDlgProc(hwnd, msg, mp1, mp2));
}
/*******************************************************************************
* *
* Function Name: SInpDevDlgProc *
* *
* Description : *
* *
* Set the Input Device variable Pen for OS/2 *
* *
* Input: *
* *
* Output: Set the Input variable. *
* *
******************************************************************************/
MRESULT EXPENTRY SInpDevDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
APIRET irc;
CHAR cbuffer[MAXCBUFFER];
HWND hwnd_temp;
INT i;
INT cbox;
switch(msg)
{
case WM_INITDLG:
init_invar ( hwnd, 0 );
return(FALSE);
case WM_COMMAND:
switch ( SHORT1FROMMP ( mp1 ) )
{
case EXIT:
WinDismissDlg ( hwnd, EXIT );
break;
case SET:
if ( index1 == LIT_NONE )
{
sprintf(cbuffer,"INDEX1 == LIT_NONE can not set value");
WinMessageBox( HWND_DESKTOP,
hwnd,
cbuffer,
NULL, 1, MB_OK );
} else
{
if ( index2 == LIT_NONE )
{
sprintf(cbuffer,"INDEX2 == LIT_NONE can not set value");
WinMessageBox( HWND_DESKTOP,
hwnd,
cbuffer,
NULL, 1, MB_OK );
} else
{
if ( index3 == LIT_NONE )
{
sprintf(cbuffer,"INDEX3 == LIT_NONE can not set value");
WinMessageBox( HWND_DESKTOP,
hwnd,
cbuffer,
NULL, 1, MB_OK );
} else
{
/*********************************************************/
/*Find the ID coresponding to the index */
/*********************************************************/
cbox = -1;
for ( i= 0; i < (PPMIDSIZE - 1); i++)
{
if ( ppmid[i].active )
{
if ( ++cbox == index3 )
{
break;
} /* endif */
} /* endif */
} /* endfor */
/*********************************************************/
/* Query the value of the spin button and put it in */
/* ppmid[].value */
/*********************************************************/
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc04 )
,SPBM_QUERYVALUE
,MPFROMLONG ( &ppmid[i].value )
,MPFROM2SHORT ( NULL, SPBQ_DONOTUPDATE )
);
/*********************************************************/
/* Write the Device ID value in to memory */
/*********************************************************/
irc = WrtSetInputDeviceVariable ( szDriverName[index1],
aDeviceName[index2],
ppmid[i].ValueID,
ppmid[i].value,
0L,
NULL
);
if ( irc == WRT_NO_ERROR )
{
/*******************************************************/
/* Broadcast a post message to all descendants of */
/* HWND_DESKTOP notifying which device variable got */
/* changed so they can update if need be */
/*******************************************************/
WinBroadcastMsg (
HWND_DESKTOP,
WM_WRT_SYSVALUECHANGED,
(MPARAM)VT_PPMID,
(MPARAM)ppmid[i].ValueID,
BMSG_DESCENDANTS | BMSG_POST
);
} /* endif */
} /* endif */
} /* endif */
} /* endif */
break;
} /* endswitch */
return ( FALSE );
case WM_CONTROL:
switch ( SHORT2FROMMP ( mp1 ) )
{
case SPBN_UPARROW:
case SPBN_DOWNARROW:
/*********************************************************/
/*Find the ID coresponding to the index */
/*********************************************************/
cbox = -1;
for ( i= 0; i < (PPMIDSIZE - 1); i++)
{
if ( ppmid[i].active )
{
if ( ++cbox == index3 )
{
break;
} /* endif */
} /* endif */
} /* endfor */
if ( ppmid[i].disable == 1 )
{
/*********************************************************/
/* Query the value of the spin button and put it in */
/* ppmid[].value */
/*********************************************************/
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc04 )
,SPBM_QUERYVALUE
,MPFROMLONG ( &ppmid[i].value )
,MPFROM2SHORT ( NULL, SPBQ_DONOTUPDATE )
);
if ( ppmid[i].value == ppmid[i].minval ||
ppmid[i].value == ppmid[i].maxval )
{
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc04 ),
SPBM_OVERRIDESETLIMITS,
MPFROMLONG ( ppmid[i].maxval ),/* MAX*/
MPFROMLONG ( 0L ) /* MIN*/
);
} else
{
if ( ppmid[i].value < ppmid[i].minval )
{
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc04 ),
SPBM_SETCURRENTVALUE,
MPFROMLONG ( 0L ),
0L
);
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc04 ),
SPBM_OVERRIDESETLIMITS,
MPFROMLONG ( ppmid[i].maxval ),/* MAX*/
MPFROMLONG ( ppmid[i].minval ) /* MIN*/
);
} /* endif */
} /* endif */
} /* endif */
break;
case CBN_ENTER:
hwnd_temp = HWNDFROMMP ( mp2 );
updatecntrl ( hwnd, 0, hwnd_temp );
break;
} /* endswitch */
return ( FALSE );
} /* endswitch */
return(WinDefDlgProc(hwnd, msg, mp1, mp2));
}
/*******************************************************************************
* *
* Function Name: EnumDrvDlgProc *
* *
* Description : *
* *
* Displays the Enumiration of the Pen for OS/2 input drivers. *
* *
* Input: *
* *
* Output: Display the Enumiration of the Pen for OS/2 drivers. *
* *
*******************************************************************************/
MRESULT EXPENTRY EnumDrvDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
INT i;
switch(msg)
{
case WM_INITDLG:
WinSendDlgItemMsg(hwnd, /* Delete all items in the list box */
wrtelc01,
LM_DELETEALL,
0UL,
0UL);
for ( i = 0; i < ulNumDrivers; i++ )
{
WinSendDlgItemMsg(hwnd, /* put the Driver name to listbox */
wrtelc01,
LM_INSERTITEM,
MPFROM2SHORT( LIT_END, 0 ),
MPFROMP( szDriverName[i] )
);
} /* endfor */
return(FALSE);
case WM_COMMAND:
switch ( SHORT1FROMMP ( mp1 ) )
{
case EXIT:
WinDismissDlg ( hwnd, EXIT );
} /* endswitch */
return ( FALSE );
} /* endswitch */
return(WinDefDlgProc(hwnd, msg, mp1, mp2));
}
/*******************************************************************************
* *
* Function Name: RSysVlDlgProc *
* *
* Description : *
* *
* Read a System values. *
* *
* Input: *
* *
* Output: Read system values *
* *
*******************************************************************************/
MRESULT EXPENTRY RSysVlDlgProc ( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2 )
{
CHAR cbuffer[MAXCBUFFER];
APIRET irc;
switch(msg)
{
case WM_INITDLG:
init_sysval( hwnd, 1 );
return(FALSE);
case WM_CONTROL:
switch ( SHORT2FROMMP ( mp1 ) )
{
case CBN_ENTER:
enter_sysval( hwnd, 1 );
return ( FALSE );
} /* endswitch */
case WM_COMMAND:
switch ( SHORT1FROMMP ( mp1 ) )
{
case EXIT:
/***************************************************************/
/* exit the dialog with out writing any system values. */
/***************************************************************/
WinDismissDlg ( hwnd, EXIT );
break;
case READ:
/***************************************************************/
/* Read the system value from Pen for OS/2 profile set memory */
/***************************************************************/
irc = WrtReadSysValue ( HWND_DESKTOP,
qsvalue[index+1].valueid );
if ( irc == WRT_NO_ERROR )
{
/**********************************************************/
/* Broadcast a post message to all descendants of */
/* HWND_DESKTOP notifying which system value got changed */
/* so they can update if need be */
/**********************************************************/
WinBroadcastMsg (
HWND_DESKTOP,
WM_WRT_SYSVALUECHANGED,
(MPARAM)VT_PPMSV,
(MPARAM)qsvalue[index+1].valueid,
BMSG_DESCENDANTS | BMSG_POST
);
} else
{
DisplayError ( hwnd, irc );
} /* endif */
/***************************************************************/
/* get the sytem value to change */
/***************************************************************/
startvalue = WrtQuerySysValue ( HWND_DESKTOP,
qsvalue[index+1].valueid );
/***************************************************************/
/* initialize all the entry field to the system value that was */
/* query. If the query reutrn an error (WRTERR_INVALID_PARM) */
/* set the entry field to zerro. */
/***************************************************************/
if ( startvalue == WRTERR_INVALID_PARM )
{
startvalue = 0L;
} /* endif */
/***************************************************************/
/* Set the entry field value to the value that was query from */
/* the system. */
/***************************************************************/
sprintf ( cbuffer, "%li", startvalue);
WinSetDlgItemText ( hwnd, wrtelc02, cbuffer );
break;
} /* endswitch */
return ( FALSE );
} /* endswitch */
return ( WinDefDlgProc(hwnd, msg, mp1, mp2) );
}
/*******************************************************************************
* *
* Function Name: WSysVlDlgProc *
* *
* Description : *
* *
* Displays and Write System values. *
* *
* Input: *
* *
* Output: Write a system values *
* *
*******************************************************************************/
MRESULT EXPENTRY WSysVlDlgProc ( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2 )
{
APIRET irc;
switch(msg)
{
case WM_INITDLG:
init_sysval( hwnd, 0 );
return(FALSE);
case WM_CONTROL:
switch ( SHORT2FROMMP ( mp1 ) )
{
case SPBN_UPARROW:
case SPBN_DOWNARROW:
updwn_sysval ( hwnd );
break;
case CBN_ENTER:
enter_sysval( hwnd, 0 );
return ( FALSE );
} /* endswitch */
case WM_COMMAND:
switch ( SHORT1FROMMP ( mp1 ) )
{
case EXIT:
/***************************************************************/
/* exit the dialog with out writing any system values. */
/***************************************************************/
WinDismissDlg ( hwnd, EXIT );
break;
case SET:
set_sysval ( hwnd );
/***************************************************************/
/* Write the system value from memory to Pen for OS/2 profile */
/***************************************************************/
irc = WrtWriteSysValue ( HWND_DESKTOP,
qsvalue[index+1].valueid );
DisplayError ( hwnd, irc );
break;
} /* endswitch */
return ( FALSE );
} /* endswitch */
return ( WinDefDlgProc(hwnd, msg, mp1, mp2) );
}
/*******************************************************************************
* *
* Function Name: SSysVlDlgProc *
* *
* Description : *
* *
* Displays and set the System values. *
* *
* Input: *
* *
* Output: Set the system values *
* *
*******************************************************************************/
MRESULT EXPENTRY SSysVlDlgProc ( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2 )
{
switch(msg)
{
case WM_INITDLG:
init_sysval( hwnd, 0 );
return(FALSE);
case WM_CONTROL:
switch ( SHORT2FROMMP ( mp1 ) )
{
case SPBN_UPARROW:
case SPBN_DOWNARROW:
updwn_sysval ( hwnd );
break;
case CBN_ENTER:
enter_sysval( hwnd, 0 );
return ( FALSE );
} /* endswitch */
case WM_COMMAND:
switch ( SHORT1FROMMP ( mp1 ) )
{
case EXIT:
/***************************************************************/
/* exit the dialog with out writing any system values. */
/***************************************************************/
WinDismissDlg ( hwnd, EXIT );
break;
case SET:
set_sysval ( hwnd );
break;
} /* endswitch */
return ( FALSE );
} /* endswitch */
return ( WinDefDlgProc(hwnd, msg, mp1, mp2) );
}
/******************************************************************************
* *
* Function Name: SysValDlgProc *
* *
* Description : *
* *
* Displays the System Values *
* *
* Input: *
* *
* Output: Display the system values *
* *
******************************************************************************/
MRESULT EXPENTRY SysValDlgProc ( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2 )
{
CHAR cbuffer[MAXCBUFFER];
CHAR cname[30], cvalue[15];
INT i;
switch(msg)
{
case WM_INITDLG:
for (i=0; i< QSVALUESIZE ; i++)
{
qsvalue[i].value = WrtQuerySysValue ( HWND_DESKTOP,
qsvalue[i].valueid );
if ( qsvalue[i].value == WRTERR_INVALID_PARM )
{
sprintf ( cvalue, "%15s","Invalid Parm" );
} else
{
sprintf ( cvalue, "%05li", qsvalue[i].value );
} /* endif */
sprintf ( cname, "%-30s", qsvalue[i].valname );
sprintf ( cbuffer, "%-30.30s%-15.15s", cname, cvalue );
WinSendDlgItemMsg(hwnd,
wrtelc01,
LM_INSERTITEM,
MPFROM2SHORT(LIT_END, 0),
MPFROMP( cbuffer ) );
} /* endfor */
return(FALSE);
case WM_COMMAND:
switch ( SHORT1FROMMP ( mp1 ) )
{
case EXIT:
WinDismissDlg ( hwnd, EXIT );
} /* endswitch */
return ( FALSE );
}
return(WinDefDlgProc(hwnd, msg, mp1, mp2));
}
/*******************************************************************************
* *
* Function Name: ButCapDlgProc *
* *
* Description : *
* *
* Displays the capabilities of the Buttons *
* *
* Input: *
* *
* Output: Display the capabilities of the system *
* *
*******************************************************************************/
MRESULT EXPENTRY ButCapDlgProc ( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2 )
{
CHAR cbuffer[MAXCBUFFER];
WRTBUTTONDEVINFO bcInfo;
ULONG ulButtonID;
ULONG ulButTmp;
WNDPARAMS comboprams;
APIRET irc;
switch(msg)
{
case WM_INITDLG:
/********************************************************************/
/* Find out how many buttons the system has by querying the */
/* button capabilities API with ulButtonID = 0L. */
/* The API will write the number of button IDs in the system in */
/* the variable ulButtonID. */
/********************************************************************/
ulButtonID = 0L;
irc = WrtQueryButtonCaps ( &ulButtonID, NULL );
if ( irc != WRT_NO_ERROR )
{
/******************************************************************/
/* ERROR from API */
/******************************************************************/
DisplayError ( hwnd, irc );
} else
{
/******************************************************************/
/* Find out if return greater than zero buttons */
/******************************************************************/
if ( ulButtonID == 0L )
{
WinMessageBox( HWND_DESKTOP,
hwnd,
"WrtQueryButtonCaps return 0 buttons",
NULL, 1, MB_OK );
} else
{
/****************************************************************/
/* Got some locator to display */
/****************************************************************/
hwndCombo1 = WinWindowFromID ( hwnd, wrtelc05 );
for ( ulButTmp = 1L; ulButTmp <= ulButtonID; ulButTmp++ )
{
/**************************************************************/
/* The cbStructureSize variable in the WRTBUTTONDEVINFO */
/* structure must be initialize to the size of the */
/* WRTBUTTONDEVINFO structure before querying the button */
/* capabilities. */
/**************************************************************/
bcInfo.cbStructSize = sizeof ( bcInfo );
/**************************************************************/
/* ulButTmp variable has the ID of the button that you */
/* want to query */
/**************************************************************/
irc = WrtQueryButtonCaps ( &ulButTmp, &bcInfo );
if ( irc == WRT_NO_ERROR )
{
/************************************************************/
/* good return from API */
/************************************************************/
sprintf ( cbuffer, "%s %s",
bcInfo.pszDriverName, bcInfo.pszDeviceName );
index1 = (SHORT) WinSendMsg ( hwndCombo1, LM_INSERTITEM,
MPFROMSHORT ( LIT_END ),
MPFROMP ( cbuffer ) );
} else
{
/************************************************************/
/* ERROR from API */
/************************************************************/
DisplayError ( hwnd, irc );
} /* endif */
} /* endfor */
/****************************************************************/
/* Set the last item on the list at the top. */
/****************************************************************/
WinSendMsg ( hwndCombo1, LM_SETTOPINDEX,
MPFROMSHORT ( index1 ), 0 );
comboprams.fsStatus = WPM_TEXT; /* change window text */
comboprams.cchText = sizeof ( cbuffer ); /* text size */
comboprams.pszText = cbuffer ; /* text to display */
WinSendMsg ( hwndCombo1, WM_SETWINDOWPARAMS, &comboprams, 0 );
disp_butcaps ( hwnd, &bcInfo );
} /* endif */
} /* endif */
return(FALSE);
case WM_CONTROL:
switch ( SHORT2FROMMP (mp1) )
{
case CBN_ENTER:
/*****************************************************************/
/* find the index of the selected item */
/*****************************************************************/
index1 = (SHORT)WinSendMsg ( hwndCombo1, LM_QUERYSELECTION, 0L, 0L );
if ( index1 != LIT_NONE )
{
ulButTmp = (ULONG)(index1 + 1L);
bcInfo.cbStructSize = sizeof ( bcInfo );
irc = WrtQueryButtonCaps ( &ulButTmp, &bcInfo );
if ( irc == WRT_NO_ERROR )
{
disp_butcaps (hwnd, &bcInfo );
} /* endif */
} /* endif */
} /* endswitch */
return ( FALSE );
case WM_COMMAND:
switch ( SHORT1FROMMP ( mp1 ) )
{
case EXIT:
WinDismissDlg ( hwnd, EXIT );
} /* endswitch */
return ( FALSE );
}
return(WinDefDlgProc(hwnd, msg, mp1, mp2));
}
/*******************************************************************************
* *
* Function Name: LocCapDlgProc *
* *
* Description : *
* *
* Displays the capabilities of the Locaotors *
* *
* Input: *
* *
* Output: Display the capabilities of the system *
* *
*******************************************************************************/
MRESULT EXPENTRY LocCapDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
WRTLOCATORDEVINFO lcInfo;
CHAR cbuffer[MAXCBUFFER];
ULONG ulLocatorID;
ULONG ulLocTmp;
WNDPARAMS comboprams;
APIRET irc;
switch(msg)
{
case WM_INITDLG:
/******************************************************************/
/* Find out how many locators the system has by querying the */
/* locator capabilities API with ulLocatorID = 0L. */
/* The API will write the number of locator IDs in the system in */
/* the variable ulLocatorID. */
/******************************************************************/
ulLocatorID = 0L;
irc = WrtQueryLocatorCaps ( &ulLocatorID, NULL );
if ( irc != WRT_NO_ERROR )
{
/****************************************************************/
/* ERROR from API */
/****************************************************************/
DisplayError ( hwnd, irc );
} else
{
/****************************************************************/
/* Find out if locator are greater than zero */
/****************************************************************/
if ( ulLocatorID == 0L )
{
WinMessageBox( HWND_DESKTOP,
hwnd,
"WrtQueryLocatorCaps return 0 locators",
NULL, 1, MB_OK );
} else
{
/* Got some locator to display */
hwndCombo1 = WinWindowFromID ( hwnd, wrtelc23 );
/**************************************************************/
/* Display the Capabilities for all the locator in the system */
/**************************************************************/
for ( ulLocTmp = 1L ; ulLocTmp <= ulLocatorID ; ulLocTmp++ )
{
/************************************************************/
/* The cbStructureSize variable in the WRTLOCATORDEVINFO */
/* structure must be initialize to the size of the */
/* WRTLOCATORDEVINFO structure before querying the locator */
/* capabilities. */
/************************************************************/
lcInfo.cbStructSize = sizeof ( lcInfo );
/************************************************************/
/* ulLocTmp variable has the ID of the locator that you */
/* want to query */
/************************************************************/
irc = WrtQueryLocatorCaps ( &ulLocTmp, &lcInfo );
if ( irc == WRT_NO_ERROR )
{
/**********************************************************/
/* good return from API */
/**********************************************************/
sprintf ( cbuffer, "%s %s",
lcInfo.pszDriverName, lcInfo.pszDeviceName );
index1 = (SHORT) WinSendMsg ( hwndCombo1, LM_INSERTITEM,
MPFROMSHORT ( LIT_END ),
MPFROMP ( cbuffer ) );
} else
{
/**********************************************************/
/* ERROR from API */
/**********************************************************/
DisplayError ( hwnd, irc );
} /* endif */
} /* endfor */
/**************************************************************/
/* Set the last item on the list at the top. */
/**************************************************************/
WinSendMsg ( hwndCombo1, LM_SETTOPINDEX,
MPFROMSHORT ( index1 ), 0 );
comboprams.fsStatus = WPM_TEXT; /* change window text */
comboprams.cchText = sizeof ( cbuffer ); /* text size */
comboprams.pszText = cbuffer ; /* text to display */
WinSendMsg ( hwndCombo1, WM_SETWINDOWPARAMS, &comboprams, 0 );
disp_loccaps ( hwnd, &lcInfo );
} /* endif */ /* end of display locator information */
} /* endif */
/******************************************************************/
return(FALSE);
case WM_CONTROL:
switch ( SHORT2FROMMP (mp1) )
{
case CBN_ENTER:
/*****************************************************************/
/* find the index of the selected item */
/*****************************************************************/
index1 = (SHORT)WinSendMsg ( hwndCombo1, LM_QUERYSELECTION, 0L, 0L );
if ( index1 != LIT_NONE )
{
ulLocTmp = (ULONG)(index1 + 1L);
lcInfo.cbStructSize = sizeof ( lcInfo );
irc = WrtQueryLocatorCaps ( &ulLocTmp, &lcInfo );
if ( irc == WRT_NO_ERROR )
{
disp_loccaps ( hwnd, &lcInfo );
} /* endif */
} /* endif */
} /* endswitch */
return ( FALSE );
case WM_COMMAND:
switch ( SHORT1FROMMP ( mp1 ) )
{
case EXIT:
WinDismissDlg ( hwnd, EXIT );
} /* endswitch */
return ( FALSE );
}
return(WinDefDlgProc(hwnd, msg, mp1, mp2));
}
/*******************************************************************************
* *
* Function Name: DisCapDlgProc *
* *
* Description : *
* *
* Displays the capabilities of the Displays *
* *
* Input: *
* *
* Output: Display the capabilities of the system *
* *
*******************************************************************************/
MRESULT EXPENTRY DisCapDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
WRTDISPLAYDEVINFO dcInfo;
CHAR cbuffer[MAXCBUFFER];
ULONG ulDisplayID;
ULONG ulDisTmp;
WNDPARAMS comboprams;
APIRET irc;
switch(msg)
{
case WM_INITDLG:
/******************************************************************/
/* Find out how many Displays the system has by querying the */
/* Display capabilities API with ulDisplayID = 0L. */
/* The API will write the number of Display IDs in the system in */
/* the variable ulDisplayID. */
/******************************************************************/
ulDisplayID = 0L;
irc = WrtQueryDisplayCaps ( &ulDisplayID, NULL );
if ( irc != WRT_NO_ERROR )
{
/****************************************************************/
/* ERROR from API */
/****************************************************************/
DisplayError ( hwnd, irc );
} else
{
/****************************************************************/
/* Find out if there are greater than zero display. */
/****************************************************************/
if ( ulDisplayID == 0L)
{
WinMessageBox( HWND_DESKTOP,
hwnd,
"WrtQueryDisplayCaps return 0 displays",
NULL, 1, MB_OK );
} else
{
/**************************************************************/
/* Got some locator to display */
/**************************************************************/
hwndCombo1 = WinWindowFromID ( hwnd, wrtelc10 );
for ( ulDisTmp= 1L; ulDisTmp <= ulDisplayID; ulDisTmp++ )
{
/************************************************************/
/* The cbStructureSize variable in the WRTDISPLAYDEVINFO */
/* structure must be initialize to the size of the */
/* WRTDISPLAYDEVINFO structure before querying the Display */
/* capabilities. */
/************************************************************/
dcInfo.cbStructSize = sizeof ( dcInfo );
/************************************************************/
/* ulDisTmp variable has the ID of the Display that you */
/* want to query */
/************************************************************/
irc = WrtQueryDisplayCaps ( &ulDisTmp, &dcInfo );
if ( irc == WRT_NO_ERROR )
{
/**********************************************************/
/* good return from API */
/**********************************************************/
sprintf ( cbuffer, "%s %s",
dcInfo.pszDriverName, dcInfo.pszDeviceName );
index1 = (SHORT) WinSendMsg ( hwndCombo1, LM_INSERTITEM,
MPFROMSHORT ( LIT_END ),
MPFROMP ( cbuffer ) );
} else
{
/**********************************************************/
/* ERROR from API */
/**********************************************************/
DisplayError ( hwnd, irc );
} /* endif */
} /* endfor */
/**************************************************************/
/* Set the last item on the list at the top. */
/**************************************************************/
WinSendMsg ( hwndCombo1, LM_SETTOPINDEX,
MPFROMSHORT ( index1 ), 0 );
comboprams.fsStatus = WPM_TEXT; /* change window text */
comboprams.cchText = sizeof ( cbuffer ); /* text size */
comboprams.pszText = cbuffer ; /* text to display */
WinSendMsg ( hwndCombo1, WM_SETWINDOWPARAMS, &comboprams, 0 );
disp_discaps ( hwnd, &dcInfo );
} /* endif */
} /* endif */
return(FALSE);
case WM_CONTROL:
switch ( SHORT2FROMMP (mp1) )
{
case CBN_ENTER:
/*****************************************************************/
/* find the index of the selected item */
/*****************************************************************/
index1 = (SHORT)WinSendMsg ( hwndCombo1, LM_QUERYSELECTION, 0L, 0L );
if ( index1 != LIT_NONE )
{
ulDisTmp = (ULONG)(index1 + 1L);
dcInfo.cbStructSize = sizeof ( dcInfo );
irc = WrtQueryDisplayCaps ( &ulDisTmp, &dcInfo );
if ( irc == WRT_NO_ERROR )
{
disp_discaps ( hwnd, &dcInfo );
} /* endif */
} /* endif */
} /* endswitch */
return ( FALSE );
case WM_COMMAND:
switch ( SHORT1FROMMP ( mp1 ) )
{
case EXIT:
WinDismissDlg ( hwnd, EXIT );
} /* endswitch */
return ( FALSE );
}
return(WinDefDlgProc(hwnd, msg, mp1, mp2));
}
/*******************************************************************************
* *
* Function Name: SysCapDlgProc *
* *
* Description : *
* *
* Displays the capabilities of the system. *
* *
* Input: *
* *
* Output: Display the capabilities of the system *
* *
*******************************************************************************/
MRESULT EXPENTRY SysCapDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
PWRTSYSTEMINFO pscInfo;
CHAR cbuffer[MAXCBUFFER];
switch(msg)
{
case WM_INITDLG:
pscInfo = PVOIDFROMMP ( mp2 );
sprintf ( cbuffer, "%ld", pscInfo->cbStructSize );
WinSetDlgItemText ( hwnd, wrtelc01, cbuffer );
sprintf ( cbuffer, "%ld", pscInfo->ulDisplayXPels );
WinSetDlgItemText ( hwnd, wrtelc02, cbuffer );
sprintf ( cbuffer, "%ld", pscInfo->ulDisplayYPels );
WinSetDlgItemText ( hwnd, wrtelc03, cbuffer );
sprintf ( cbuffer, "%ld", pscInfo->ulDisplayXRes );
WinSetDlgItemText ( hwnd, wrtelc04, cbuffer );
sprintf ( cbuffer, "%ld", pscInfo->ulDisplayYRes );
WinSetDlgItemText ( hwnd, wrtelc05, cbuffer );
sprintf ( cbuffer, "%ld", pscInfo->ulNumDrivers );
WinSetDlgItemText ( hwnd, wrtelc06, cbuffer );
sprintf ( cbuffer, "%ld", pscInfo->ulNumLocators );
WinSetDlgItemText ( hwnd, wrtelc07, cbuffer );
sprintf ( cbuffer, "%ld", pscInfo->ulNumButtons );
WinSetDlgItemText ( hwnd, wrtelc08, cbuffer );
sprintf ( cbuffer, "%ld", pscInfo->ulNumDisplays );
WinSetDlgItemText ( hwnd, wrtelc09, cbuffer );
return(FALSE);
case WM_COMMAND:
switch ( SHORT1FROMMP ( mp1 ) )
{
case EXIT:
WinDismissDlg ( hwnd, EXIT );
} /* endswitch */
return ( FALSE );
}
return(WinDefDlgProc(hwnd, msg, mp1, mp2));
}
/*******************************************************************************
* *
* Function Name: AUXPNTDlgProc *
* *
* Description : *
* *
* Displays the AUX. Point Data. *
* *
* Input: *
* *
* Output: Display the AUX. Point Data *
* *
*******************************************************************************/
MRESULT EXPENTRY AUXPNTDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
CHAR cbuffer[MAXCBUFFER];
INT i;
switch(msg)
{
case WM_INITDLG:
sprintf ( cbuffer, "%d", apdExtra.cbStructSize );
WinSetDlgItemText ( hwnd, wrtelc01, cbuffer );
/****************************************************************/
/* The display information is being done first to test what the */
/* dirver is returning. On a real application you would not */
/* care to look at the variable if the ValidityFlags bit was */
/* off. The driver should be returning 0 on unsed variables. */
/****************************************************************/
sprintf ( cbuffer, "%ld", apdExtra.ulTimestamp );
WinSetDlgItemText ( hwnd, wrtelc02, cbuffer );
if ( !(ldiarr[ulocindx].ulValidityFlags & ADF_TIMESTAMP) )
{
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtlc02 )), FALSE );
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtelc02 )), FALSE );
} /* endif */
sprintf ( cbuffer, "%#x", apdExtra.usFlags );
WinSetDlgItemText ( hwnd, wrtelc03, cbuffer );
if ( !(ldiarr[ulocindx].ulValidityFlags & ADF_FLAGS) )
{
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtlc03 )), FALSE );
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtelc03 )), FALSE );
} /* endif */
sprintf ( cbuffer, "%d", apdExtra.usUser );
WinSetDlgItemText ( hwnd, wrtelc04, cbuffer );
if ( !(ldiarr[ulocindx].ulValidityFlags & ADF_USER) )
{
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtlc04 )), FALSE );
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtelc04 )), FALSE );
} /* endif */
sprintf ( cbuffer, "%d", apdExtra.sScrZ );
WinSetDlgItemText ( hwnd, wrtelc05, cbuffer );
if ( !(ldiarr[ulocindx].ulValidityFlags & ADF_SCREENZ) )
{
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtlc05 )), FALSE );
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtelc05 )), FALSE );
} /* endif */
sprintf ( cbuffer, "%d", apdExtra.sDevZ );
WinSetDlgItemText ( hwnd, wrtelc06, cbuffer );
if ( !(ldiarr[ulocindx].ulValidityFlags & ADF_DEVZ) )
{
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtlc06 )), FALSE );
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtelc06 )), FALSE );
} /* endif */
sprintf ( cbuffer, "%d", apdExtra.sAngle );
WinSetDlgItemText ( hwnd, wrtelc07, cbuffer );
if ( !(ldiarr[ulocindx].ulValidityFlags & ADF_ANGLE) )
{
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtlc07 )), FALSE );
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtelc07 )), FALSE );
} /* endif */
sprintf ( cbuffer, "%d", apdExtra.sRotation );
WinSetDlgItemText ( hwnd, wrtelc08, cbuffer );
if ( !(ldiarr[ulocindx].ulValidityFlags & ADF_ROTATION) )
{
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtlc08 )), FALSE );
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtelc08 )), FALSE );
} /* endif */
sprintf ( cbuffer, "%#x", apdExtra.usButton );
WinSetDlgItemText ( hwnd, wrtelc09, cbuffer );
if ( !(ldiarr[ulocindx].ulValidityFlags & ADF_BUTTON) )
{
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtlc09 )), FALSE );
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtelc09 )), FALSE );
} /* endif */
if ( ldiarr[ulocindx].ulValidityFlags & ADF_OEM )
{
/* adf_oem_count_mask is not supported in release 1 */
for ( i= 0; i < ldiarr[ulocindx].ulOEMValidityCnt; i++ )
{
sprintf ( cbuffer, "OEM[%i]= %li", i, apdExtra.OEM[i] );
WinSendDlgItemMsg(hwnd,
wrtelc10,
LM_INSERTITEM,
MPFROM2SHORT(LIT_END, 0),
MPFROMP( cbuffer ) );
} /* endfor */
} else
{
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtlc10 )), FALSE );
} /* endif */
return(FALSE);
case WM_COMMAND:
switch ( SHORT1FROMMP ( mp1 ) )
{
case EXIT:
btoggle_aux = FALSE;
WinSendDlgItemMsg (
hwndFrame
,(ULONG) FID_MENU
,(ULONG) MM_SETITEMATTR
,MPFROM2SHORT ( ID_AUX, TRUE )
,MPFROM2SHORT ( MIA_CHECKED, 0 )
);
AUXTEST = 0;
WinDismissDlg ( hwnd, EXIT );
} /* endswitch */
return ( FALSE );
}
return(WinDefDlgProc(hwnd, msg, mp1, mp2));
}
/*******************************************************************************
* *
* Function Name: EVNTDTDlgProc *
* *
* Description : *
* *
* Displays the Event Data. *
* *
* Input: *
* *
* Output: Display the Event Data *
* *
*******************************************************************************/
MRESULT EXPENTRY EVNTDTDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
CHAR cbuffer[MAXCBUFFER];
switch(msg)
{
case WM_INITDLG:
sprintf ( cbuffer, "%d", edInfo.cbStructSize );
WinSetDlgItemText ( hwnd, wrtelc01, cbuffer );
sprintf ( cbuffer, "%#x", edInfo.usKCFlags );
WinSetDlgItemText ( hwnd, wrtelc02, cbuffer );
sprintf ( cbuffer, "%#x", edInfo.usHitTest );
WinSetDlgItemText ( hwnd, wrtelc03, cbuffer );
sprintf ( cbuffer, "%#x", edInfo.flEventStatus );
WinSetDlgItemText ( hwnd, wrtelc04, cbuffer );
sprintf ( cbuffer, "%ld", edInfo.ptlDisplay.x );
WinSetDlgItemText ( hwnd, wrtelc05, cbuffer );
sprintf ( cbuffer, "%ld", edInfo.ptlDisplay.y );
WinSetDlgItemText ( hwnd, wrtelc06, cbuffer );
sprintf ( cbuffer, "%ld", edInfo.ptlSensor.x );
WinSetDlgItemText ( hwnd, wrtelc07, cbuffer );
sprintf ( cbuffer, "%ld", edInfo.ptlSensor.y );
WinSetDlgItemText ( hwnd, wrtelc08, cbuffer );
sprintf ( cbuffer, "%ld", edInfo.ptlStandard.x );
WinSetDlgItemText ( hwnd, wrtelc09, cbuffer );
sprintf ( cbuffer, "%ld", edInfo.ptlStandard.y );
WinSetDlgItemText ( hwnd, wrtelc10, cbuffer );
sprintf ( cbuffer, "%ld", edInfo.ulStrokeSeq );
WinSetDlgItemText ( hwnd, wrtelc11, cbuffer );
sprintf ( cbuffer, "%ld", edInfo.ulStrokeSize );
WinSetDlgItemText ( hwnd, wrtelc12, cbuffer );
sprintf ( cbuffer, "%ld", edInfo.ulLocatorID );
WinSetDlgItemText ( hwnd, wrtelc13, cbuffer );
sprintf ( cbuffer, "%ld", edInfo.ulLocatorType );
WinSetDlgItemText ( hwnd, wrtelc14, cbuffer );
sprintf ( cbuffer, "%#lx", edInfo.ulLocatorFlags );
WinSetDlgItemText ( hwnd, wrtelc15, cbuffer );
sprintf ( cbuffer, "%#lx", edInfo.ulValidityFlags );
WinSetDlgItemText ( hwnd, wrtelc16, cbuffer );
sprintf ( cbuffer, "%#lx", edInfo.ulButtonStatus );
WinSetDlgItemText ( hwnd, wrtelc17, cbuffer );
sprintf ( cbuffer, "%ld", edInfo.hwndUnderPtr );
WinSetDlgItemText ( hwnd, wrtelc18, cbuffer );
return(FALSE);
case WM_COMMAND:
switch ( SHORT1FROMMP ( mp1 ) )
{
case EXIT:
btoggle_event = FALSE;
WinSendDlgItemMsg (
hwndFrame
,(ULONG) FID_MENU
,(ULONG) MM_SETITEMATTR
,MPFROM2SHORT ( ID_EVENT, TRUE )
,MPFROM2SHORT ( MIA_CHECKED, 0 )
);
EVENTTEST = 0;
WinDismissDlg ( hwnd, EXIT );
} /* endswitch */
return ( FALSE );
}
return(WinDefDlgProc(hwnd, msg, mp1, mp2));
}
/*******************************************************************************
* *
* Function Name: BACKLTDlgProc *
* *
* Description : *
* *
* Let the user turn ON or OFF the backlight of a specific display. *
* *
* Input: *
* *
* Output: Let the user turn ON or OFF the backlight of a specific display. *
* *
*******************************************************************************/
MRESULT EXPENTRY BACKLTDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
CHAR cbuffer[MAXCBUFFER];
WRTDISPLAYDEVINFO dcInfo; /* Display capabilities structure */
WNDPARAMS comboprams;
INT i;
APIRET irc;
switch(msg)
{
case WM_INITDLG:
/********************************************************************/
/* There should be a valid display with a backlight support since */
/* the backlight menu option would be disable at program srart up */
/* you would not be here. */
/********************************************************************/
i = 0;
hwndCombo1 = WinWindowFromID ( hwnd , wrtelc03 );
for ( ; ulbacklight_displayID[i] != 0L; i++ )
{
dcInfo.cbStructSize = sizeof ( dcInfo );
/******************************************************************/
/* ulbacklight_displayID[i] variable has the ID of the */
/* Display that you want to query */
/******************************************************************/
irc = WrtQueryDisplayCaps ( &ulbacklight_displayID[i], &dcInfo );
if ( irc == WRT_NO_ERROR )
{
sprintf ( cbuffer, "%s %s",
dcInfo.pszDriverName, dcInfo.pszDeviceName );
/****************************************************************/
/* initialize the entries in the list box */
/****************************************************************/
index1 = (SHORT) WinSendMsg ( hwndCombo1, LM_INSERTITEM,
MPFROMSHORT ( LIT_END ),
MPFROMP ( cbuffer ) );
} /* endif */
} /* endfor */
/********************************************************************/
/* Set the last item on the list at the top. */
/********************************************************************/
WinSendMsg ( hwndCombo1, LM_SETTOPINDEX, MPFROMSHORT ( index1 ), 0 );
comboprams.fsStatus = WPM_TEXT; /* change window text */
comboprams.cchText = sizeof ( cbuffer ); /* text size */
comboprams.pszText = cbuffer ; /* text to display */
WinSendMsg ( hwndCombo1, WM_SETWINDOWPARAMS, &comboprams, 0 );
/********************************************************************/
/* Turn the backlight on and mark the ON radio button */
/********************************************************************/
WinSendMsg ( WinWindowFromID( hwnd, wrtelc01), BM_CLICK, 0L, 0L );
return ( FALSE );
case WM_CONTROL:
switch ( SHORT2FROMMP ( mp1 ) )
{
case CBN_ENTER:
/*******************************************************************/
/* find the index of the selected item */
/*******************************************************************/
index1 = (SHORT)WinSendMsg ( hwndCombo1, LM_QUERYSELECTION, 0L, 0L );
if ( index1 != LIT_NONE )
{
dcInfo.cbStructSize = sizeof ( dcInfo );
irc = WrtQueryDisplayCaps ( &ulbacklight_displayID[index1],
&dcInfo );
if ( irc == WRT_NO_ERROR )
{
WinSendMsg ( WinWindowFromID( hwnd, wrtelc01),
BM_CLICK, 0L, 0L );
} /* endif */
} /* endif */
break;
case BN_CLICKED:
switch ( SHORT1FROMMP(mp1) )
{
case wrtelc01:
irc = WrtControlDisplayBacklight ( CDB_LIGHT_ON,
ulbacklight_displayID[index1] );
if ( irc != WRT_NO_ERROR )
{
DisplayError ( hwnd, irc );
} /* endif */
break;
case wrtelc02:
irc = WrtControlDisplayBacklight ( CDB_LIGHT_OFF,
ulbacklight_displayID[index1] );
if ( irc != WRT_NO_ERROR )
{
DisplayError ( hwnd, irc );
} /* endif */
break;
} /* endswitch */
break;
} /* endswitch */
return ( FALSE );
case WM_COMMAND:
switch ( SHORT1FROMMP ( mp1 ) )
{
case EXIT:
WinDismissDlg ( hwnd, EXIT );
} /* endswitch */
return ( FALSE );
} /* endswitch */
return(WinDefDlgProc(hwnd, msg, mp1, mp2));
}
/******************************************************************************/
/* Error reporting functions */
/******************************************************************************/
VOID DisplayError ( HWND hwnd, APIRET errcode )
{
CHAR errbuff[MAXCBUFFER];
CHAR loadbuff[MAXCBUFFER];
if ( errcode != WRT_NO_ERROR )
{
switch ( errcode ) {
case WRTERR_INVALID_BUTTON_ID:
case WRTERR_INVALID_POINTER:
case WRTERR_INVALID_BUFFER:
case WRTERR_STRUCT_NOT_INIT:
case WRTERR_NOT_ACTIVE:
case WRTERR_INVALID_LOCATOR_ID:
case WRTERR_INVALID_DISPLAY_ID:
case WRTERR_INVALID_HWND:
case WRTERR_WRITE_FAILED:
case WRTERR_INVALID_PARM:
case WRTERR_INVALID_ID:
case WRTERR_PARM_OUT_OF_RANGE:
case WRTERR_MORE_NAMES_AVAIL:
case WRTERR_STROKE_INVALID:
WinLoadString (
habMain,
NULLHANDLE,
errcode,
MAXCBUFFER,
errbuff
);
break;
default:
WinLoadString (
habMain,
NULLHANDLE,
IDMSG_UNKOWN,
MAXCBUFFER,
loadbuff
);
sprintf ( errbuff, loadbuff, errcode );
break;
} /* endswitch */
WinMessageBox( HWND_DESKTOP,
hwnd,
errbuff,
NULL, 1, MB_OK );
} /* endif */
}
VOID init_sysval( HWND hwnd, INT r_sw )
{
CHAR cbuffer[MAXCBUFFER];
WNDPARAMS comboprams;
INT i;
/**********************************************************************/
/* initialize the entries in the list box */
/**********************************************************************/
hwndCombo1 = WinWindowFromID ( hwnd , wrtelc01 );
for ( i= 1; i < (QSVALUESIZE - 2); i++ )
{
index = (SHORT) WinSendMsg ( hwndCombo1, LM_INSERTITEM,
MPFROMSHORT ( LIT_END ),
MPFROMP ( qsvalue[i].valname ) );
}
/**********************************************************************/
/* Set the first item on the list at the top. */
/**********************************************************************/
index = 0; /* intialize the index to zeror */
WinSendMsg ( hwndCombo1, LM_SETTOPINDEX, MPFROMSHORT ( index ), 0 );
comboprams.fsStatus = WPM_TEXT; /* change window text */
comboprams.cchText = sizeof ( qsvalue[index+1].valname );/* text size*/
comboprams.pszText = qsvalue[index+1].valname; /* text to display */
WinSendMsg ( hwndCombo1, WM_SETWINDOWPARAMS,
&comboprams, 0 );
/**********************************************************************/
/* query the system value to set the spin box. */
/**********************************************************************/
startvalue = WrtQuerySysValue ( HWND_DESKTOP,
qsvalue[index+1].valueid );
/**********************************************************************/
/* initialize all the spin button to the system value that where */
/* query. If the query reutrn an error (WRTERR_INVALID_PARM) SET */
/* the spin button to zerro. */
/**********************************************************************/
if ( startvalue == WRTERR_INVALID_PARM )
{
startvalue = 0L;
} /* endif */
if ( r_sw )
{ /* r-sw == 1 is a read */
/**********************************************************************/
/* Set the entry field value to the value that was query from */
/* the system. */
/**********************************************************************/
sprintf ( cbuffer, "%li", startvalue);
WinSetDlgItemText ( hwnd, wrtelc02, cbuffer );
} else /* r_sw == 0is a set or write */
{
/************************************************************/
/* check to see if the value can be set to 0 (disabled) */
/************************************************************/
if ( qsvalue[index+1].disable == 1 )
{
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc02 ),
SPBM_SETLIMITS,
MPFROMLONG ( qsvalue[index+1].valuemax ),/* MAX*/
MPFROMLONG ( 0L ) /* MIN*/
);
} else
{
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc02 ),
SPBM_SETLIMITS,
MPFROMLONG ( qsvalue[index+1].valuemax ), /* MAX */
MPFROMLONG ( qsvalue[index+1].valuemin ) /* MIN */
);
} /* endif */
/**********************************************************************/
/* Set the spin button value to the value that was query from */
/* the system. */
/**********************************************************************/
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc02 ),
SPBM_SETCURRENTVALUE,
MPFROMLONG ( startvalue ),
0L
);
} /* endif */
}
VOID enter_sysval( HWND hwnd, INT r_sw )
{
CHAR cbuffer[MAXCBUFFER];
/******************************************************************/
/* find the index of the selected item */
/******************************************************************/
index = (SHORT) WinSendMsg ( hwndCombo1, LM_QUERYSELECTION, 0L, 0L );
if ( index != LIT_NONE )
{
/****************************************************************/
/* get the sytem value to change */
/****************************************************************/
startvalue = WrtQuerySysValue ( HWND_DESKTOP,
qsvalue[index+1].valueid );
/****************************************************************/
/* initialize all the spin button to the system value that where*/
/* query. If the query reutrn an error (WRTERR_INVALID_PARM) SET*/
/* the spin button to zerro. */
/****************************************************************/
if ( startvalue == WRTERR_INVALID_PARM )
{
startvalue = 0L;
} /* endif */
if ( r_sw )
{ /* if r_sw == 1 is read */
/****************************************************************/
/* Set the entry field value to the value that was query from */
/* the system. */
/****************************************************************/
sprintf ( cbuffer, "%li", startvalue);
WinSetDlgItemText ( hwnd, wrtelc02, cbuffer );
} else
{ /* if r_sw == 0 is set or write */
/************************************************************/
/* check to see if the value can be set to 0 (disabled) */
/************************************************************/
if ( qsvalue[index+1].disable == 1 )
{
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc02 ),
SPBM_SETLIMITS,
MPFROMLONG ( qsvalue[index+1].valuemax ),/* MAX */
MPFROMLONG ( 0L ) /* MIN*/
);
} else
{
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc02 ),
SPBM_SETLIMITS,
MPFROMLONG ( qsvalue[index+1].valuemax ),/* MAX */
MPFROMLONG ( qsvalue[index+1].valuemin ) /* MIN */
);
} /* endif */
/****************************************************************/
/* Set the spin button value to the value that was query from */
/* the system. */
/****************************************************************/
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc02 ),
SPBM_SETCURRENTVALUE,
MPFROMLONG ( startvalue ),
0L
);
/****************************************************************/
/* set the spin button's maximum and minimum values for the */
/* users to choose from. */
/****************************************************************/
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc02 ),
SPBM_OVERRIDESETLIMITS,
MPFROMLONG ( qsvalue[index+1].valuemax ),/* MAX */
MPFROMLONG ( qsvalue[index+1].valuemin ) /* MIN */
);
} /* endif */
} /* endif */
}
VOID updwn_sysval ( HWND hwnd )
{
if ( qsvalue[index+1].disable == 1 )
{
/*********************************************************/
/* Query the value of the spin button and put it in */
/* ppmid[].value */
/*********************************************************/
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc02 )
,SPBM_QUERYVALUE
,MPFROMLONG ( &startvalue )
,MPFROM2SHORT ( NULL, SPBQ_DONOTUPDATE )
);
if ( startvalue == qsvalue[index+1].valuemin ||
startvalue == qsvalue[index+1].valuemax )
{
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc02 ),
SPBM_OVERRIDESETLIMITS,
MPFROMLONG ( qsvalue[index+1].valuemax ),/* MAX*/
MPFROMLONG ( 0L ) /* MIN*/
);
} else
{
if ( startvalue < qsvalue[index+1].valuemin )
{
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc02 ),
SPBM_SETCURRENTVALUE,
MPFROMLONG ( 0L ),
0L
);
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc02 ),
SPBM_OVERRIDESETLIMITS,
MPFROMLONG ( qsvalue[index+1].valuemax ),/* MAX*/
MPFROMLONG ( qsvalue[index+1].valuemin ) /* MIN*/
);
} /* endif */
} /* endif */
} /* endif */
}
VOID set_sysval ( HWND hwnd )
{
LONG value;
APIRET irc;
/***************************************************************/
/* Query the value of the spin button and if the value got */
/* change set the new system value. */
/***************************************************************/
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc02 )
,SPBM_QUERYVALUE
,MPFROMLONG ( &value )
,MPFROM2SHORT ( NULL, SPBQ_DONOTUPDATE )
);
if ( startvalue != value )
{
/************************************************************/
/* value got change must set the value */
/************************************************************/
irc = WrtSetSysValue ( HWND_DESKTOP,
qsvalue[index+1].valueid, value );
if ( irc == WRT_NO_ERROR )
{
/**********************************************************/
/* Broadcast a post message to all descendants of */
/* HWND_DESKTOP notifying which system value got changed */
/* so they can update if need be */
/**********************************************************/
WinBroadcastMsg (
HWND_DESKTOP,
WM_WRT_SYSVALUECHANGED,
(MPARAM)VT_PPMSV,
(MPARAM)qsvalue[index+1].valueid,
BMSG_DESCENDANTS | BMSG_POST
);
} else
{
DisplayError ( hwnd, irc );
} /* endif */
} /* endif */
}
VOID disp_loccaps ( HWND hwnd, PWRTLOCATORDEVINFO lcInfo )
{
CHAR cbuffer[MAXCBUFFER];
sprintf ( cbuffer, "%ld", lcInfo->cbStructSize );
WinSetDlgItemText ( hwnd, wrtelc01, cbuffer );
sprintf ( cbuffer, "%ld", lcInfo->ulLocatorID );
WinSetDlgItemText ( hwnd, wrtelc02, cbuffer );
sprintf ( cbuffer, "%ld", lcInfo->ulLocatorType );
WinSetDlgItemText ( hwnd, wrtelc03, cbuffer );
sprintf ( cbuffer, "%#lx", lcInfo->ulLocatorFlags );
WinSetDlgItemText ( hwnd, wrtelc04, cbuffer );
sprintf ( cbuffer, "%#lx", lcInfo->ulValidityFlags );
WinSetDlgItemText ( hwnd, wrtelc05, cbuffer );
sprintf ( cbuffer, "%#lx", lcInfo->ulOEMValidityCnt );
WinSetDlgItemText ( hwnd, wrtelc06, cbuffer );
sprintf ( cbuffer, "%ld", lcInfo->ulSensorHeight );
WinSetDlgItemText ( hwnd, wrtelc07, cbuffer );
sprintf ( cbuffer, "%ld", lcInfo->ulSensorWidth );
WinSetDlgItemText ( hwnd, wrtelc08, cbuffer );
sprintf ( cbuffer, "%ld", lcInfo->ulNumMouButtons );
WinSetDlgItemText ( hwnd, wrtelc09, cbuffer );
sprintf ( cbuffer, "%ld", lcInfo->ulNumButtons );
WinSetDlgItemText ( hwnd, wrtelc10, cbuffer );
sprintf ( cbuffer, "%ld", lcInfo->ulButtonMask );
WinSetDlgItemText ( hwnd, wrtelc22, cbuffer );
sprintf ( cbuffer, "%ld", lcInfo->ulSensorXpts );
WinSetDlgItemText ( hwnd, wrtelc11, cbuffer );
sprintf ( cbuffer, "%ld", lcInfo->ulSensorYpts );
WinSetDlgItemText ( hwnd, wrtelc12, cbuffer );
sprintf ( cbuffer, "%ld", lcInfo->lSensorZptsP );
WinSetDlgItemText ( hwnd, wrtelc13, cbuffer );
sprintf ( cbuffer, "%ld", lcInfo->ulSensorZptsH );
WinSetDlgItemText ( hwnd, wrtelc14, cbuffer );
sprintf ( cbuffer, "%ld", lcInfo->ulSensorXres );
WinSetDlgItemText ( hwnd, wrtelc15, cbuffer );
sprintf ( cbuffer, "%ld", lcInfo->ulSensorYres );
WinSetDlgItemText ( hwnd, wrtelc16, cbuffer );
sprintf ( cbuffer, "%ld", lcInfo->ulStandardXpts );
WinSetDlgItemText ( hwnd, wrtelc17, cbuffer );
sprintf ( cbuffer, "%ld", lcInfo->ulStandardYpts );
WinSetDlgItemText ( hwnd, wrtelc18, cbuffer );
sprintf ( cbuffer, "%ld", lcInfo->ulSampleRate );
WinSetDlgItemText ( hwnd, wrtelc19, cbuffer );
sprintf ( cbuffer, "%ld", lcInfo->ulMaxSampleRate );
WinSetDlgItemText ( hwnd, wrtelc20, cbuffer );
sprintf ( cbuffer, "%ld", lcInfo->ulTimestampRes );
WinSetDlgItemText ( hwnd, wrtelc21, cbuffer );
}
VOID disp_butcaps ( HWND hwnd, PWRTBUTTONDEVINFO bcInfo )
{
CHAR cbuffer[MAXCBUFFER];
sprintf ( cbuffer, "%ld", bcInfo->cbStructSize );
WinSetDlgItemText ( hwnd, wrtelc01, cbuffer );
sprintf ( cbuffer, "%ld", bcInfo->ulButtonID );
WinSetDlgItemText ( hwnd, wrtelc02, cbuffer );
sprintf ( cbuffer, "%ld", bcInfo->ulNumButtons );
WinSetDlgItemText ( hwnd, wrtelc03, cbuffer );
sprintf ( cbuffer, "%#lx", bcInfo->ulButtonMask );
WinSetDlgItemText ( hwnd, wrtelc04, cbuffer );
}
VOID disp_discaps ( HWND hwnd, PWRTDISPLAYDEVINFO dcInfo )
{
CHAR cbuffer[MAXCBUFFER];
sprintf ( cbuffer, "%ld", dcInfo->cbStructSize );
WinSetDlgItemText ( hwnd, wrtelc01, cbuffer );
sprintf ( cbuffer, "%ld", dcInfo->ulDisplayID );
WinSetDlgItemText ( hwnd, wrtelc02, cbuffer );
sprintf ( cbuffer, "%ld", dcInfo->ulDisplayType );
WinSetDlgItemText ( hwnd, wrtelc03, cbuffer );
sprintf ( cbuffer, "%ld", dcInfo->ulDisplayXPels );
WinSetDlgItemText ( hwnd, wrtelc04, cbuffer );
sprintf ( cbuffer, "%ld", dcInfo->ulDisplayYPels );
WinSetDlgItemText ( hwnd, wrtelc05, cbuffer );
sprintf ( cbuffer, "%ld", dcInfo->ulDisplayXRes );
WinSetDlgItemText ( hwnd, wrtelc06, cbuffer );
sprintf ( cbuffer, "%ld", dcInfo->ulDisplayYRes );
WinSetDlgItemText ( hwnd, wrtelc07, cbuffer );
sprintf ( cbuffer, "%ld", dcInfo->ulDisplayHeight );
WinSetDlgItemText ( hwnd, wrtelc08, cbuffer );
sprintf ( cbuffer, "%ld", dcInfo->ulDisplayWidth );
WinSetDlgItemText ( hwnd, wrtelc09, cbuffer );
}
VOID init_invar ( HWND hwnd, INT q_s )
{
APIRET irc;
ULONG aDeviceType[10];
ULONG aDeviceID[10];
ULONG ulDatalen;
CHAR Data[512];
WNDPARAMS comboprams;
INT i;
INT cbox;
CHAR cbuffer[MAXCBUFFER];
/****************************************************************************/
/* Find out how many input driver there are * */
/****************************************************************************/
ulNumDrivers = 0L;
irc = WrtEnumInputDrivers ( &ulNumDrivers, NULL );
if ( irc != WRT_NO_ERROR )
{
DisplayError ( hwnd, irc );
} else
{
if ( ulNumDrivers > 10L )
{
sprintf(cbuffer,"Too many drivers[%ld] for my ARRAY", ulNumDrivers );
WinMessageBox( HWND_DESKTOP,
hwnd,
cbuffer,
NULL, 1, MB_OK );
} else
{
if ( ulNumDrivers == 0L )
{
sprintf(cbuffer,"No drivers found" );
WinMessageBox( HWND_DESKTOP,
hwnd,
cbuffer,
NULL, 1, MB_OK );
} else
{
/**********************************************************************/
/* get array of driver names */
/**********************************************************************/
irc = WrtEnumInputDrivers ( &ulNumDrivers, szDriverName );
if ( irc != WRT_NO_ERROR )
{
DisplayError ( hwnd, irc );
} else
{
/********************************************************************/
/* initialize the entries in the Drivers list box */
/********************************************************************/
hwndCombo1 = WinWindowFromID ( hwnd , wrtelc01 );
for ( i= 0; i < ulNumDrivers ; i++ )
{
index1 = (SHORT) WinSendMsg ( hwndCombo1, LM_INSERTITEM,
MPFROMSHORT ( LIT_END ),
MPFROMP ( szDriverName[i] ) );
} /* endfor */
/********************************************************************/
/* Set the first item on the list at the top. */
/********************************************************************/
index1 = 0; /* intialize the index to zeror */
WinSendMsg ( hwndCombo1, LM_SETTOPINDEX, MPFROMSHORT ( index1 ), 0 );
comboprams.fsStatus = WPM_TEXT; /* change window text */
comboprams.cchText = sizeof ( szDriverName[index1] ); /* text size */
comboprams.pszText = szDriverName[index1]; /*text to display*/
WinSendMsg ( hwndCombo1, WM_SETWINDOWPARAMS,
&comboprams, 0 );
/********************************************************************/
/* Find out how many input device there are */
/********************************************************************/
ulNumDevices = 0L;
irc = WrtQueryInputDeviceNames ( szDriverName[index1], &ulNumDevices,
NULL, NULL, NULL );
if ( irc != WRT_NO_ERROR )
{
DisplayError ( hwnd, irc );
} else
{
if ( ulNumDevices > 10L )
{
sprintf(cbuffer,"Too many devices[%ld] Driver[%s] for my ARRAY",
ulNumDevices, szDriverName[index1] );
WinMessageBox( HWND_DESKTOP,
hwnd,
cbuffer,
NULL, 1, MB_OK );
} else
{
/****************************************************************/
/* Get array of device names */
/****************************************************************/
irc = WrtQueryInputDeviceNames ( szDriverName[index1],
&ulNumDevices, aDeviceName,
aDeviceType, aDeviceID );
if ( irc != WRT_NO_ERROR )
{
DisplayError ( hwnd, irc );
} else
{
/**************************************************************/
/* initialize the entries in the list box */
/**************************************************************/
hwndCombo2 = WinWindowFromID ( hwnd , wrtelc02 );
for ( i= 0; i < ulNumDevices ; i++ )
{
index2 = (SHORT) WinSendMsg ( hwndCombo2, LM_INSERTITEM,
MPFROMSHORT ( LIT_END ),
MPFROMP ( aDeviceName[i] ) );
} /* endfor */
/**************************************************************/
/* Set the first item on the list at the top. */
/**************************************************************/
index2 = 0; /* intialize the index to zeror */
WinSendMsg ( hwndCombo2, LM_SETTOPINDEX,
MPFROMSHORT ( index2 ), 0 );
comboprams.fsStatus = WPM_TEXT; /* change window text */
comboprams.cchText = sizeof ( aDeviceName[index2] );/*text size*/
comboprams.pszText = aDeviceName[index2]; /*text to display*/
WinSendMsg ( hwndCombo2, WM_SETWINDOWPARAMS,
&comboprams, 0 );
/**************************************************************/
/* initialize the entries in the Value ID list box */
/**************************************************************/
hwndCombo3 = WinWindowFromID ( hwnd , wrtelc03 );
/**************************************************************/
/* initialize the value ID valid for this driver and device */
/**************************************************************/
cbox = 0;
for ( i=0; i < (PPMIDSIZE - 1); i++ )
{
irc = WrtQueryInputDeviceVariable ( szDriverName[index1],
aDeviceName[index2],
ppmid[i].ValueID,
&ppmid[i].value,
NULL,
NULL
);
if ( irc == WRT_NO_ERROR )
{
/**********************************************************/
/* Mark the input device variable as suported. */
/**********************************************************/
ppmid[i].active = 1;
cbox++;
/**********************************************************/
/*Set the input device variable in the list to choose from*/
/**********************************************************/
index3 = (SHORT) WinSendMsg ( hwndCombo3, LM_INSERTITEM,
MPFROMSHORT ( LIT_END ),
MPFROMP ( ppmid[i].name ) );
} else
{
/**********************************************************/
/* Mark the input device variable as not active. */
/**********************************************************/
ppmid[i].active = 0;
} /* endif */
} /* endfor */
if ( cbox == 0 )
{
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtlc03 )), FALSE );
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtelc03 )), FALSE );
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtlc04 )), FALSE );
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtelc04 )), FALSE );
sprintf(cbuffer,"No active variables Drv[%s] Name[%s]",
szDriverName[index1], aDeviceName[index2] );
WinMessageBox( HWND_DESKTOP,
hwnd,
cbuffer,
NULL, 1, MB_OK );
} else
{
/************************************************************/
/*Find the first active input device variable to gets */
/* its name */
/************************************************************/
for ( i= 0; i < (PPMIDSIZE - 1); i++)
{
if ( ppmid[i].active )
{
break;
} /* endif */
} /* endfor */
/************************************************************/
/* Set the first item on the list at the top. */
/************************************************************/
index3 = 0; /* intialize the index to zeror */
WinSendMsg ( hwndCombo3, LM_SETTOPINDEX,
MPFROMSHORT ( index3 ), 0 );
comboprams.fsStatus = WPM_TEXT; /* change window text */
comboprams.cchText = sizeof ( ppmid[i].name ); /* text size */
comboprams.pszText = ppmid[i].name; /* text to display */
WinSendMsg ( hwndCombo3, WM_SETWINDOWPARAMS,
&comboprams, 0 );
if ( q_s )
{ /* q_s == 1 then query */
sprintf ( cbuffer, "%li", ppmid[i].value );
WinSendDlgItemMsg(hwnd,
wrtelc04,
LM_INSERTITEM,
MPFROM2SHORT(LIT_END, 0),
MPFROMP( cbuffer ) );
} else
{ /* q_s == 0 then set */
/************************************************************/
/* check to see if the value can be set to 0 (disabled) */
/************************************************************/
if (ppmid[i].disable == 1 )
{
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc04 ),
SPBM_SETLIMITS,
MPFROMLONG ( ppmid[i].maxval ),/* MAX*/
MPFROMLONG ( 0L ) /* MIN*/
);
} else
{
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc04 ),
SPBM_SETLIMITS,
MPFROMLONG ( ppmid[i].maxval ),/* MAX*/
MPFROMLONG ( ppmid[i].minval ) /* MIN*/
);
} /* endif */
/************************************************************/
/* Set the spin button value to the value that was query */
/* from the system. */
/************************************************************/
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc04 ),
SPBM_SETCURRENTVALUE,
MPFROMLONG ( ppmid[i].value ),
0L
);
/************************************************************/
/* set the spin button's maximum and minimum values for the */
/* users to choose from. */
/************************************************************/
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc04 ),
SPBM_OVERRIDESETLIMITS,
MPFROMLONG ( ppmid[i].maxval ),/* MAX*/
MPFROMLONG ( ppmid[i].minval ) /* MIN*/
);
} /* endif */
} /* endif */
if ( q_s )
{ /* q_s == 1 then query */
/**************************************************************/
/* Find out if the "Driver" is supported. */
/* If it is set "Driver as a choice in combo 2 */
/**************************************************************/
ulDatalen = 512;
irc = WrtQueryInputDeviceVariable ( szDriverName[index1],
"Driver",
ppmid[ PPMIDSIZE - 1 ].ValueID,
&ppmid[ PPMIDSIZE - 1 ].value,
&ulDatalen,
Data
);
if ( irc == WRT_NO_ERROR )
{
ppmid[ PPMIDSIZE - 1 ].active = 1;
WinSendMsg ( hwndCombo2, LM_INSERTITEM,
MPFROMSHORT ( LIT_END ),
MPFROMP ( "Driver" ) );
} else
{
ppmid[ PPMIDSIZE - 1 ].active = 0;
} /* endif */
} /* endif */
} /* endif */
} /* endif */
} /* endif */
} /* endif */
} /* endif */
} /* endif */
} /* endif */
}
VOID updatecntrl ( HWND hwnd, INT q_s, HWND hwnd_temp )
{
APIRET irc;
CHAR szDrvName[32];
ULONG aDeviceType[10];
ULONG aDeviceID[10];
ULONG ulDatalen;
CHAR Data[512];
WNDPARAMS comboprams;
INT i;
INT cbox;
CHAR cbuffer[MAXCBUFFER];
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtlc04 )), TRUE );
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtelc04 )), TRUE );
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtlc03 )), TRUE );
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtelc03 )), TRUE );
if ( hwnd_temp == hwndCombo1 )
{
/*******************************************************************/
/* Get the Driver selected and find: */
/* 1: devices supported by the driver */
/* 2: ValueID supported by the 1st device */
/* 3: Value of the 1st ValueID */
/*******************************************************************/
/*******************************************************************/
/* find the index of the selected item */
/*******************************************************************/
index1 = (SHORT)WinSendMsg ( hwndCombo1, LM_QUERYSELECTION, 0L, 0L );
if ( index1 != LIT_NONE )
{
/*****************************************************************/
/* get the name of the driver choosen. */
/*****************************************************************/
WinSendMsg ( hwndCombo1, LM_QUERYITEMTEXT,
MPFROM2SHORT ( index1, 32 ),
MPFROMP ( szDriverName[index1] ) );
/*****************************************************************/
/* Clear out the Devices list box and get the devices for the */
/* driver. */
/*****************************************************************/
WinSendMsg ( hwndCombo2, EM_CLEAR,
0L,
0L );
WinSendMsg ( hwndCombo2, LM_DELETEALL,
0L,
0L );
WinSendMsg ( hwndCombo3, EM_CLEAR,
0L,
0L );
WinSendMsg ( hwndCombo3, LM_DELETEALL,
0L,
0L );
index3 = 0; /* intialize the index to zero */
WinSendMsg ( hwndCombo3, LM_SETTOPINDEX,
MPFROMSHORT ( index3 ), 0 );
comboprams.fsStatus = WPM_TEXT; /* change window text */
comboprams.cchText = sizeof ( " " );/*text size*/
comboprams.pszText = " "; /* text to display */
WinSendMsg ( hwndCombo3, WM_SETWINDOWPARAMS,
&comboprams, 0 );
WinSendDlgItemMsg(hwnd,
wrtelc04,
LM_DELETEALL,
0L,
0L );
/*****************************************************************/
/* Find out how many input device there are */
/*****************************************************************/
ulNumDevices = 0L;
irc = WrtQueryInputDeviceNames ( szDriverName[index1],
&ulNumDevices,
NULL, NULL, NULL );
if ( irc != WRT_NO_ERROR )
{
DisplayError ( hwnd, irc );
} else
{
if ( ulNumDevices > 10L )
{
sprintf(cbuffer,"Too many devices[%ld] Driver[%s] for my ARRAY",
ulNumDevices, szDriverName[index1] );
WinMessageBox( HWND_DESKTOP,
hwnd,
cbuffer,
NULL, 1, MB_OK );
} else
{
/*************************************************************/
/* Get array of device names */
/*************************************************************/
irc = WrtQueryInputDeviceNames ( szDriverName[index1],
&ulNumDevices, aDeviceName,
aDeviceType, aDeviceID );
if ( irc != WRT_NO_ERROR )
{
DisplayError ( hwnd, irc );
} else
{
/***********************************************************/
/* initialize the entries in the list box */
/***********************************************************/
hwndCombo2 = WinWindowFromID ( hwnd , wrtelc02 );
for ( i= 0; i < ulNumDevices ; i++ )
{
index2 = (SHORT) WinSendMsg ( hwndCombo2, LM_INSERTITEM,
MPFROMSHORT ( LIT_END ),
MPFROMP ( aDeviceName[i] ) );
} /* endfor */
/***********************************************************/
/* Set the first item on the list at the top. */
/***********************************************************/
index2 = 0; /* intialize the index to zeror */
WinSendMsg ( hwndCombo2, LM_SETTOPINDEX,
MPFROMSHORT ( index2 ), 0 );
comboprams.fsStatus = WPM_TEXT; /* change window text */
comboprams.cchText = sizeof ( aDeviceName[index2] );
/*text size*/
comboprams.pszText = aDeviceName[index2]; /*text to display*/
WinSendMsg ( hwndCombo2, WM_SETWINDOWPARAMS,
&comboprams, 0 );
/*************************************************************/
/* initialize the entries in the Value ID list box */
/*************************************************************/
hwndCombo3 = WinWindowFromID ( hwnd , wrtelc03 );
update3 ( hwnd, q_s );
if ( q_s )
{ /* q_s == 1 is a query */
/***********************************************************/
/* Find out if the "Driver" is supported. */
/* If it is set "Driver as a choice in combo 2 */
/***********************************************************/
ulDatalen = 512;
irc = WrtQueryInputDeviceVariable ( szDriverName[index1],
"Driver",
ppmid[ PPMIDSIZE - 1 ].ValueID,
&ppmid[ PPMIDSIZE - 1 ].value,
&ulDatalen,
Data
);
if ( irc == WRT_NO_ERROR )
{
ppmid[ PPMIDSIZE - 1 ].active = 1;
WinSendMsg ( hwndCombo2, LM_INSERTITEM,
MPFROMSHORT ( LIT_END ),
MPFROMP ( "Driver" ) );
} else
{
ppmid[ PPMIDSIZE - 1 ].active = 0;
} /* endif */
} /* endif */
} /* endif */
} /* endif */
} /* endif */
} /* endif */
} else
{
if ( hwnd_temp == hwndCombo2 )
{
/*****************************************************************/
/* Get the Device selected and find: */
/* 1: ValueID supported by the 1st device */
/* 2: Value of the 1st ValueID */
/*******************************************************************/
/*****************************************************************/
/* get the name of the driver choosen. */
/*****************************************************************/
comboprams.fsStatus = WPM_TEXT; /* get window text */
comboprams.cchText = sizeof ( szDrvName ); /* text size */
comboprams.pszText = szDrvName; /* buffer to put text */
WinSendMsg ( hwndCombo1, WM_QUERYWINDOWPARAMS, &comboprams, 0 );
/*****************************************************************/
/* find the index of the selected item */
/*****************************************************************/
index2 = (SHORT)WinSendMsg( hwndCombo2, LM_QUERYSELECTION, 0L, 0L);
if ( index2 != LIT_NONE )
{
/***************************************************************/
/* get the name of the device choosen. */
/***************************************************************/
WinSendMsg ( hwndCombo2, LM_QUERYITEMTEXT,
MPFROM2SHORT ( index2, 32 ),
MPFROMP ( aDeviceName[index2] ) );
/***************************************************************/
/* Clear out the ValueID list box and get the devices for the */
/* driver. */
/***************************************************************/
WinSendMsg ( hwndCombo3, EM_CLEAR,
0L,
0L );
WinSendMsg ( hwndCombo3, LM_DELETEALL,
0L,
0L );
index3 = 0; /* intialize the index to zero */
WinSendMsg ( hwndCombo3, LM_SETTOPINDEX,
MPFROMSHORT ( index3 ), 0 );
comboprams.fsStatus = WPM_TEXT; /* change window text */
comboprams.cchText = sizeof ( " " );/*text size */
comboprams.pszText = " "; /* text to display */
WinSendMsg ( hwndCombo3, WM_SETWINDOWPARAMS,
&comboprams, 0 );
if ( q_s )
{
WinSendDlgItemMsg(hwnd,
wrtelc04,
LM_DELETEALL,
0L,
0L );
} else
{
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc04 ),
SPBM_SETLIMITS,
MPFROMLONG ( 0L ),/* MAX*/
MPFROMLONG ( 0L ) /* MIN*/
);
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc04 ),
SPBM_SETCURRENTVALUE,
MPFROMLONG ( 0L ),
0L
);
} /* endif */
/***************************************************************/
/* if the device name is "Driver" then only do driver */
/* else do all variables */
/***************************************************************/
if ( strcmp ( "Driver", aDeviceName[index2] ) == 0 )
{
ulDatalen = 512;
for ( i=0; i < ulDatalen ; i++)
{
Data[i] = 0; /* clear out old data */
} /* endfor */
irc = WrtQueryInputDeviceVariable ( szDrvName,
"Driver",
ppmid[ PPMIDSIZE - 1 ].ValueID,
&ppmid[ PPMIDSIZE - 1 ].value,
&ulDatalen,
Data
);
if ( irc == WRT_NO_ERROR )
{
sprintf ( cbuffer, "Data length is %i", ulDatalen );
WinSendDlgItemMsg(hwnd,
wrtelc04,
LM_INSERTITEM,
MPFROM2SHORT(LIT_END, 0),
MPFROMP( cbuffer ) );
for ( i= 0; i < ulDatalen ; i++ )
{
sprintf ( cbuffer, "Data[%i] =%i", i, Data[i] );
WinSendDlgItemMsg(hwnd,
wrtelc04,
LM_INSERTITEM,
MPFROM2SHORT(LIT_END, 0),
MPFROMP( cbuffer ) );
} /* endfor */
if ( ulDatalen == 0L)
{
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtlc03 )),
FALSE );
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtelc03 )),
FALSE );
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtlc04 )),
FALSE );
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtelc04 )),
FALSE );
} /* endif */
} else
{
sprintf(cbuffer,"WrtQueryInputDeviceVariable with Driver Failed");
WinMessageBox( HWND_DESKTOP,
hwnd,
cbuffer,
NULL, 1, MB_OK );
} /* endif */
} else
{
update3 ( hwnd, q_s );
} /* endif */
} /* endif */
} else
{
if ( hwnd_temp == hwndCombo3 )
{
/***************************************************************/
/* Get the valueID selected and find: */
/* 2: Value of the ValueID */
/***************************************************************/
/***************************************************************/
/* find the index of the selected item */
/***************************************************************/
index3 = (SHORT)WinSendMsg( hwndCombo3,
LM_QUERYSELECTION, 0L, 0L);
if ( index3 != LIT_NONE )
{
if ( q_s )
{
/*************************************************************/
/* Clear out the Value list box */
/*************************************************************/
WinSendDlgItemMsg(hwnd,
wrtelc04,
LM_DELETEALL,
0L,
0L );
} else
{
/*************************************************************/
/* Clear out the Value list box */
/*************************************************************/
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc04 ),
SPBM_SETLIMITS,
MPFROMLONG ( 0L ),/* MAX*/
MPFROMLONG ( 0L ) /* MIN*/
);
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc04 ),
SPBM_SETCURRENTVALUE,
MPFROMLONG ( 0L ),
0L
);
} /* endif */
/*************************************************************/
/*Find the ID coresponding to the index */
/*************************************************************/
cbox = -1;
for ( i= 0; i< (PPMIDSIZE - 1); i++)
{
if ( ppmid[i].active )
{
if ( ++cbox == index3 )
{
break;
} /* endif */
} /* endif */
} /* endfor */
if ( q_s )
{
sprintf ( cbuffer, "%li", ppmid[i].value );
WinSendDlgItemMsg(hwnd,
wrtelc04,
LM_INSERTITEM,
MPFROM2SHORT(LIT_END, 0),
MPFROMP( cbuffer ) );
} else
{
/************************************************************/
/* check to see if the value can be set to 0 (disabled) */
/************************************************************/
if (ppmid[i].disable == 1 )
{
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc04 ),
SPBM_SETLIMITS,
MPFROMLONG ( ppmid[i].maxval ),/* MAX*/
MPFROMLONG ( 0L ) /* MIN*/
);
} else
{
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc04 ),
SPBM_SETLIMITS,
MPFROMLONG ( ppmid[i].maxval ),/* MAX*/
MPFROMLONG ( ppmid[i].minval ) /* MIN*/
);
} /* endif */
/*************************************************************/
/* Set the spin button value to the value that was query */
/* from the system. */
/*************************************************************/
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc04 ),
SPBM_SETCURRENTVALUE,
MPFROMLONG ( ppmid[i].value ),
0L
);
/*************************************************************/
/* set the spin button's maximum and minimum values for */
/* the users to choose from. */
/*************************************************************/
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc04 ),
SPBM_OVERRIDESETLIMITS,
MPFROMLONG ( ppmid[i].maxval ),/* MAX */
MPFROMLONG ( ppmid[i].minval ) /* MIN */
);
} /* endif */
} /* endif */
} else
{
sprintf(cbuffer,"No MATCH mp2[%ld] 1[%ld]2[%ld]3[%ld]",
hwnd_temp, hwndCombo1, hwndCombo2, hwndCombo3 );
WinMessageBox( HWND_DESKTOP,
hwnd,
cbuffer,
NULL, 1, MB_OK );
} /* endif */
} /* endif */
} /* endif */
}
VOID update3 (HWND hwnd, INT q_s )
{
APIRET irc;
WNDPARAMS comboprams;
INT i;
INT cbox;
CHAR cbuffer[MAXCBUFFER];
/*************************************************************/
/* initialize the value ID valid for this driver and device */
/*************************************************************/
cbox = 0;
for ( i=0; i < (PPMIDSIZE - 1) ; i++ )
{
irc = WrtQueryInputDeviceVariable ( szDriverName[index1],
aDeviceName[index2],
ppmid[i].ValueID,
&ppmid[i].value,
NULL,
NULL
);
if ( irc == WRT_NO_ERROR )
{
/*******************************************************/
/* Mark the input device variable as suported. */
/*******************************************************/
ppmid[i].active = 1;
cbox++;
/*******************************************************/
/* Set the input device variable in the list to choose */
/* from */
/*******************************************************/
index3 = (SHORT) WinSendMsg ( hwndCombo3, LM_INSERTITEM,
MPFROMSHORT ( LIT_END ),
MPFROMP ( ppmid[i].name ) );
} else
{
/*******************************************************/
/* Mark the input device variable as not active. */
/*******************************************************/
ppmid[i].active = 0;
} /* endif */
} /* endfor */
if ( cbox == 0)
{
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtlc03 )), FALSE );
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtelc03 )), FALSE );
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtlc04 )), FALSE );
WinEnableWindow ( (WinWindowFromID ( hwnd , wrtelc04 )), FALSE );
sprintf(cbuffer,"No active variables Drv[%s] Name[%s]",
szDriverName[index1], aDeviceName[index2] );
WinMessageBox( HWND_DESKTOP,
hwnd,
cbuffer,
NULL, 1, MB_OK );
} else
{
/*********************************************************/
/* Find the first active input device variable to gets */
/* its name */
/*********************************************************/
for ( i= 0; i < (PPMIDSIZE - 1); i++)
{
if ( ppmid[i].active )
{
break;
} /* endif */
} /* endfor */
/*********************************************************/
/* Set the first item on the list at the top. */
/*********************************************************/
index3 = 0; /* intialize the index to zero */
WinSendMsg ( hwndCombo3, LM_SETTOPINDEX,
MPFROMSHORT ( index3 ), 0 );
comboprams.fsStatus = WPM_TEXT; /* change window text */
comboprams.cchText = sizeof ( ppmid[i].name );/*text size*/
comboprams.pszText = ppmid[i].name; /* text to display */
WinSendMsg ( hwndCombo3, WM_SETWINDOWPARAMS,
&comboprams, 0 );
if ( q_s )
{
sprintf ( cbuffer, "%li", ppmid[i].value );
WinSendDlgItemMsg(hwnd,
wrtelc04,
LM_INSERTITEM,
MPFROM2SHORT(LIT_END, 0),
MPFROMP( cbuffer ) );
} else
{
/************************************************************/
/* check to see if the value can be set to 0 (disabled) */
/************************************************************/
if (ppmid[i].disable == 1 )
{
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc04 ),
SPBM_SETLIMITS,
MPFROMLONG ( ppmid[i].maxval ),/* MAX*/
MPFROMLONG ( 0L ) /* MIN*/
);
} else
{
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc04 ),
SPBM_SETLIMITS,
MPFROMLONG ( ppmid[i].maxval ),/* MAX*/
MPFROMLONG ( ppmid[i].minval ) /* MIN*/
);
} /* endif */
/*********************************************************/
/* Set the spin button value to the value that was query */
/* from the system. */
/*********************************************************/
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc04 ),
SPBM_SETCURRENTVALUE,
MPFROMLONG ( ppmid[i].value ),
0L
);
/*********************************************************/
/* set the spin button's maximum and minimum values for */
/* the users to choose from. */
/*********************************************************/
WinSendMsg ( WinWindowFromID ( hwnd, wrtelc04 ),
SPBM_OVERRIDESETLIMITS,
MPFROMLONG ( ppmid[i].maxval ),/* MAX*/
MPFROMLONG ( ppmid[i].minval ) /* MIN*/
);
} /* endif */
} /* endif */
}