1488 lines
46 KiB
C
1488 lines
46 KiB
C
/*******************************************************************************
|
|
**
|
|
** MODULE: USER.C
|
|
**
|
|
** DESCRIPTION: Routines for getting user input for the different Entities
|
|
**
|
|
**
|
|
**
|
|
** AUTHOR: John Pierce.
|
|
**
|
|
**
|
|
**
|
|
** CREATED: 02/29/96
|
|
**
|
|
** HISTORY:
|
|
**
|
|
** Date Author Reason
|
|
** ----------------------------------------------------------------------
|
|
** 02/29/96 John Pierce (johnpi) Took over dev from Dan
|
|
**
|
|
**
|
|
** (C) C O P Y R I G H T M I C R O S O F T C O R P 1 9 9 5 - 1 9 9 6.
|
|
**
|
|
** A L L R I G H T S R E S E R V E D .
|
|
**
|
|
*******************************************************************************/
|
|
#include <windows.h>
|
|
#include <string.h>
|
|
#include <stdio.h> // for sscanf()
|
|
#include "..\include\dt.h"
|
|
#include "..\include\dtrc.h"
|
|
|
|
#define MAX_USAGE_PAGES 8
|
|
char szUsagePage[MAX_USAGE_PAGES][20] = {
|
|
"Undefiend", // 0
|
|
"GenericDesktop", // 1
|
|
"Vehicle", // 2
|
|
"VR", // 3
|
|
"Sport", // 4
|
|
"Game", // 5
|
|
"Consumer", // 6
|
|
"Keyboard" }; // 7
|
|
|
|
|
|
/*******************************************************************************
|
|
**
|
|
** UINT AddString( HANDLE hListBox, char * szString, int Index )
|
|
**
|
|
** DESCRIPTION: Add string "string" to list box hListBox. If flag gfInsert
|
|
** is TRUE, insert string at current position in hListBox
|
|
**
|
|
**
|
|
** PARAMETERS: hListBox Handle to the Desc window
|
|
** szString String to add
|
|
** Index Pos. to add string. If = DONT_CARE get Pos. from
|
|
** Current Selection, otherwise insert at Index
|
|
**
|
|
** RETURNS: Index of string that was added to hListbox
|
|
**
|
|
*******************************************************************************/
|
|
LRESULT AddString(HANDLE hListBox,char * szString)
|
|
{
|
|
int Index=-1;
|
|
|
|
if( gfInsert )
|
|
{
|
|
Index = SendMessage(hListBox,LB_GETCURSEL,0,0);
|
|
SendMessage(hListBox,LB_INSERTSTRING,(WPARAM)Index,(LPARAM)szString);
|
|
return Index;
|
|
}
|
|
else
|
|
{
|
|
Index = SendMessage(hListBox,LB_INSERTSTRING,(WPARAM)Index,(LPARAM)szString);
|
|
SendMessage(hListBox,LB_SETCURSEL,Index,0);
|
|
return Index;
|
|
}
|
|
|
|
}
|
|
|
|
/*******************************************************************************
|
|
**
|
|
** void GetBogusVal( HANDLE hDescListBox, int nEntity
|
|
**
|
|
** DESCRIPTION: Get user input for a bogus Item
|
|
**
|
|
** PARAMETERS: hDescListBox Handle to the Desc window
|
|
** hHexListBox Handle to the Hex window
|
|
** nEntity Not used
|
|
**
|
|
** RETURNS:
|
|
**
|
|
*******************************************************************************/
|
|
void GetBogusVal( HANDLE hDescListBox, int nEntity)
|
|
{
|
|
PITEM_INFO pItemInfo;
|
|
char szBuff[128],szTmp[4];
|
|
LRESULT Index,rc;
|
|
BYTE *pb;
|
|
int i,NumBytes;
|
|
|
|
rc = DialogBox( ghInst,"EditBoxDlg",ghWnd , EditBoxDlgProc);
|
|
|
|
if( rc == TRUE )
|
|
{
|
|
if( pItemInfo = (PITEM_INFO) GlobalAlloc(GPTR,sizeof(ITEM_INFO)) )
|
|
{
|
|
pItemInfo->bTag = (BYTE)gEditVal;
|
|
|
|
rc = DialogBox( ghInst,"EditBoxDlg",ghWnd , EditBoxDlgProc);
|
|
if( rc == TRUE )
|
|
{
|
|
pItemInfo->bTag = Entity[nEntity];
|
|
|
|
if( gEditVal < 0 ) // Handle negative numbers differently
|
|
{
|
|
if( gEditVal > -0x100 )
|
|
{
|
|
pItemInfo->bTag |= 0x01;
|
|
NumBytes = 1;
|
|
}
|
|
else if (gEditVal > -0x10000 )
|
|
{
|
|
pItemInfo->bTag |= 0x02;
|
|
NumBytes = 2;
|
|
}
|
|
else
|
|
{
|
|
pItemInfo->bTag |= 0x03;
|
|
NumBytes = 4;
|
|
}
|
|
|
|
}
|
|
|
|
else // Number is not negative
|
|
{
|
|
if( (DWORD)gEditVal < 0x80 )
|
|
{
|
|
pItemInfo->bTag |= 0x01;
|
|
NumBytes = 1;
|
|
}
|
|
else if ( (DWORD)gEditVal < 0x8000 )
|
|
{
|
|
pItemInfo->bTag |= 0x02;
|
|
NumBytes = 2;
|
|
}
|
|
else
|
|
{
|
|
pItemInfo->bTag |= 0x03;
|
|
NumBytes = 4;
|
|
}
|
|
|
|
}
|
|
}
|
|
gwReportDescLen += NumBytes + 1; // +1 for Item tag byte
|
|
|
|
wsprintf(szBuff,"UNDEFINED_TAG\t%02X ",pItemInfo->bTag);
|
|
pb = (BYTE *) &gEditVal;
|
|
for( i=0;i<NumBytes;i++ )
|
|
{
|
|
pItemInfo->bParam[i] = *pb++;
|
|
wsprintf(szTmp,"%02X ",pItemInfo->bParam[i]);
|
|
strcat(szBuff,szTmp);
|
|
}
|
|
Index = AddString(hDescListBox,szBuff);
|
|
rc = SendMessage(hDescListBox,LB_SETITEMDATA,Index,(LPARAM) pItemInfo);
|
|
|
|
}
|
|
else
|
|
MessageBox(NULL,"GlobalAlloc() Failed!","DT Error",MB_OK);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/*******************************************************************************
|
|
**
|
|
** void GetUsagePageVal( HANDLE hDescListBox, int nEntity
|
|
**
|
|
** DESCRIPTION: Get user input for a UsagePage Tag
|
|
**
|
|
** PARAMETERS: hDescListBox Handle to the Desc window
|
|
** hHexListBox Handle to the Hex window
|
|
** nEntity Not used
|
|
**
|
|
** RETURNS:
|
|
**
|
|
*******************************************************************************/
|
|
void GetUsagePageVal( HANDLE hDescListBox, int nEntity)
|
|
{
|
|
PITEM_INFO pItemInfo;
|
|
char szBuff[128];
|
|
LRESULT Index,rc;
|
|
|
|
rc = DialogBox( ghInst,MAKEINTRESOURCE(IDD_USAGEPAGE),ghWnd , UsagePageDlgProc);
|
|
|
|
if( rc == TRUE )
|
|
{
|
|
if( pItemInfo = (PITEM_INFO) GlobalAlloc(GPTR,sizeof(ITEM_INFO)) )
|
|
{
|
|
|
|
pItemInfo->bTag = USAGE_PAGE;
|
|
pItemInfo->bTag |= 0x01; // 1 BYTE of param info
|
|
pItemInfo->bParam[0] = gUsagePageVal;
|
|
|
|
wsprintf(szBuff,"USAGE_PAGE (%s)\t%02X %02X",szUsagePage[gUsagePageVal],
|
|
pItemInfo->bTag,gUsagePageVal);
|
|
|
|
Index = AddString(hDescListBox,szBuff);
|
|
rc = SendMessage(hDescListBox,LB_SETITEMDATA,Index,(LPARAM) pItemInfo);
|
|
|
|
gwReportDescLen += 2; // Tag + Data
|
|
|
|
}
|
|
else
|
|
MessageBox(NULL,"GlobalAlloc() Failed!","DT Error",MB_OK);
|
|
|
|
}
|
|
|
|
}
|
|
/*******************************************************************************
|
|
**
|
|
** void GetInputFromEditBoxSigned( HANDLE hDescListBox, int nEntity
|
|
**
|
|
** DESCRIPTION: Generic routine to get signed numeric user input from an edit field
|
|
**
|
|
**
|
|
** PARAMETERS: hDescListBox Handle to the Desc window
|
|
** hHexListBox Handle to the Hex window
|
|
** nEntity Entity that we are getting value for
|
|
**
|
|
** RETURNS:
|
|
**
|
|
*******************************************************************************/
|
|
void GetInputFromEditBoxSigned( HANDLE hDescListBox, int nEntity)
|
|
{
|
|
PITEM_INFO pItemInfo;
|
|
char szBuff[128],szTmp[3];
|
|
int i;
|
|
LRESULT Index,rc;
|
|
BYTE *pb;
|
|
|
|
rc = DialogBox( ghInst,"EditBoxDlg",ghWnd , EditBoxDlgProc);
|
|
|
|
if( rc == TRUE )
|
|
{
|
|
if( pItemInfo = (PITEM_INFO) GlobalAlloc(GPTR,sizeof(ITEM_INFO)) )
|
|
{
|
|
|
|
int NumBytes=0;
|
|
|
|
pItemInfo->bTag = Entity[nEntity];
|
|
|
|
if( gEditVal < 0 ) // Handle negative numbers differently
|
|
{
|
|
if( gEditVal > 0xffffff01 )
|
|
{
|
|
pItemInfo->bTag |= 0x01;
|
|
NumBytes = 1;
|
|
}
|
|
else if (gEditVal > 0xffff0001 )
|
|
{
|
|
pItemInfo->bTag |= 0x02;
|
|
NumBytes = 2;
|
|
}
|
|
else
|
|
{
|
|
pItemInfo->bTag |= 0x03;
|
|
NumBytes = 4;
|
|
}
|
|
|
|
}
|
|
|
|
else // Number is not negative
|
|
{
|
|
if( (DWORD)gEditVal < 0x80 ) // if the hi bit is set, we must
|
|
{ // add an upper byte of 0 so the
|
|
pItemInfo->bTag |= 0x01; // numbers remain positive
|
|
NumBytes = 1;
|
|
}
|
|
else if ( (DWORD)gEditVal < 0x8000 )
|
|
{
|
|
pItemInfo->bTag |= 0x02;
|
|
NumBytes = 2;
|
|
}
|
|
else
|
|
{
|
|
pItemInfo->bTag |= 0x03;
|
|
NumBytes = 4;
|
|
}
|
|
|
|
}
|
|
gwReportDescLen += NumBytes + 1; // +1 for Item Tag byte
|
|
|
|
wsprintf(szBuff,"%s (%d)\t%02X ",szEntity[nEntity],gEditVal,pItemInfo->bTag);
|
|
pb = (BYTE *) &gEditVal;
|
|
for( i=0;i<NumBytes;i++ )
|
|
{
|
|
pItemInfo->bParam[i] = *pb++;
|
|
wsprintf(szTmp,"%02X ",pItemInfo->bParam[i]);
|
|
strcat(szBuff,szTmp);
|
|
}
|
|
|
|
Index = AddString(hDescListBox,szBuff);
|
|
rc = SendMessage(hDescListBox,LB_SETITEMDATA,Index,(LPARAM) pItemInfo);
|
|
|
|
}
|
|
else
|
|
MessageBox(NULL,"GlobalAlloc() Failed!","DT Error",MB_OK);
|
|
|
|
}//end if(rc == TRUE)
|
|
|
|
|
|
}
|
|
|
|
/*******************************************************************************
|
|
**
|
|
** void GetInputFromEditBoxUnSigned( HANDLE hDescListBox, int nEntity
|
|
**
|
|
** DESCRIPTION: Generic routine to get unsigned numeric user input from
|
|
** an edit field
|
|
**
|
|
**
|
|
** PARAMETERS: hDescListBox Handle to the Desc window
|
|
** hHexListBox Handle to the Hex window
|
|
** nEntity Entity that we are getting value for
|
|
**
|
|
** RETURNS:
|
|
**
|
|
*******************************************************************************/
|
|
void GetInputFromEditBoxUnSigned( HANDLE hDescListBox, int nEntity)
|
|
{
|
|
PITEM_INFO pItemInfo;
|
|
char szBuff[128],szTmp[3];
|
|
int i;
|
|
LRESULT Index,rc;
|
|
BYTE *pb;
|
|
|
|
rc = DialogBox( ghInst,"EditBoxDlg",ghWnd , EditBoxDlgProc);
|
|
|
|
if( rc == TRUE )
|
|
{
|
|
if( pItemInfo = (PITEM_INFO) GlobalAlloc(GPTR,sizeof(ITEM_INFO)) )
|
|
{
|
|
|
|
int NumBytes=0;
|
|
|
|
pItemInfo->bTag = Entity[nEntity];
|
|
|
|
if( (DWORD)gEditVal < 0x100 )
|
|
{
|
|
pItemInfo->bTag |= 0x01;
|
|
NumBytes = 1;
|
|
}
|
|
else if ( (DWORD)gEditVal < 0x10000 )
|
|
{
|
|
pItemInfo->bTag |= 0x02;
|
|
NumBytes = 2;
|
|
}
|
|
else
|
|
{
|
|
pItemInfo->bTag |= 0x03;
|
|
NumBytes = 4;
|
|
}
|
|
|
|
gwReportDescLen += NumBytes + 1; // +1 for Item Tag byte
|
|
|
|
wsprintf(szBuff,"%s (%d)\t%02X ",szEntity[nEntity],gEditVal,pItemInfo->bTag);
|
|
pb = (BYTE *) &gEditVal;
|
|
for( i=0;i<NumBytes;i++ )
|
|
{
|
|
pItemInfo->bParam[i] = *pb++;
|
|
wsprintf(szTmp,"%02X ",pItemInfo->bParam[i]);
|
|
strcat(szBuff,szTmp);
|
|
}
|
|
|
|
Index = AddString(hDescListBox,szBuff);
|
|
rc = SendMessage(hDescListBox,LB_SETITEMDATA,Index,(LPARAM) pItemInfo);
|
|
|
|
}
|
|
else
|
|
MessageBox(NULL,"GlobalAlloc() Failed!","DT Error",MB_OK);
|
|
|
|
}//end if(rc == TRUE)
|
|
|
|
|
|
}
|
|
|
|
/*******************************************************************************
|
|
**
|
|
** void GetCollectionVal( HANDLE hDescListBox,int nEntity)
|
|
**
|
|
** DESCRIPTION: Get user input for a Collection Tag
|
|
**
|
|
**
|
|
** PARAMETERS: hDescListBox Handle to the Desc window
|
|
** hHexListBox Handle to the Hex window
|
|
** nEntity Not used
|
|
**
|
|
** RETURNS:
|
|
**
|
|
*******************************************************************************/
|
|
void GetCollectionVal( HANDLE hDescListBox, int nEntity)
|
|
{
|
|
PITEM_INFO pItemInfo;
|
|
char szBuff[128];
|
|
LRESULT Index,rc;
|
|
|
|
rc = DialogBox( ghInst,MAKEINTRESOURCE(IDD_COLLECTION),ghWnd , CollectionDlgProc);
|
|
|
|
if( rc == TRUE )
|
|
{
|
|
if( pItemInfo = (PITEM_INFO) GlobalAlloc(GPTR,sizeof(ITEM_INFO)) )
|
|
{
|
|
pItemInfo->bTag = COLLECTION;
|
|
pItemInfo->bTag |= 0x01; // Collection has 1 parm
|
|
pItemInfo->bParam[0] = gCollectionVal;
|
|
|
|
wsprintf(szBuff,"COLLECTION (%s)\t%02X %02X",(pItemInfo->bParam[0]) ? "Application" : "Linked",
|
|
pItemInfo->bTag,pItemInfo->bParam[0]);
|
|
Index = AddString(hDescListBox,szBuff);
|
|
rc = SendMessage(hDescListBox,LB_SETITEMDATA,Index,(LPARAM) pItemInfo);
|
|
|
|
gwReportDescLen += 2; // Tag + Data
|
|
|
|
|
|
}
|
|
else
|
|
MessageBox(NULL,"GlobalAlloc() Failed!","DT Error",MB_OK);
|
|
|
|
|
|
|
|
|
|
}//end if(rc == TRUE)
|
|
|
|
|
|
}
|
|
/*******************************************************************************
|
|
**
|
|
** void GetEndCollectionVal( HANDLE hDescListBox, int nEntity)
|
|
**
|
|
** DESCRIPTION: Fills in the PITEM_INFO struct with a EndCollection tag value
|
|
**
|
|
**
|
|
** PARAMETERS: hDescListBox Handle to the Desc window
|
|
** hHexListBox Handle to the Hex window
|
|
** nEntity Not used
|
|
**
|
|
** RETURNS:
|
|
**
|
|
*******************************************************************************/
|
|
void GetEndCollectionVal( HANDLE hDescListBox, int nEntity)
|
|
{
|
|
PITEM_INFO pItemInfo;
|
|
char szBuff[128];
|
|
LRESULT Index,rc;
|
|
|
|
if( pItemInfo = (PITEM_INFO) GlobalAlloc(GPTR,sizeof(ITEM_INFO)) )
|
|
{
|
|
pItemInfo->bTag = END_COLLECTION;
|
|
|
|
wsprintf(szBuff,"END_COLLECTION\t%02X",END_COLLECTION);
|
|
Index = AddString(hDescListBox,szBuff);
|
|
rc = SendMessage(hDescListBox,LB_SETITEMDATA,Index,(LPARAM) pItemInfo);
|
|
|
|
gwReportDescLen++; // +1 for Item Tag byte
|
|
}
|
|
else
|
|
MessageBox(NULL,"GlobalAlloc() Failed!","DT Error",MB_OK);
|
|
|
|
|
|
|
|
|
|
}
|
|
/*******************************************************************************
|
|
**
|
|
** void GetInputVal( HANDLE hDescListBox, int nEntity)
|
|
**
|
|
** DESCRIPTION: Get user input for a Input tag
|
|
**
|
|
**
|
|
** PARAMETERS: hDescListBox Handle to the Desc window
|
|
** hHexListBox Handle to the Hex window
|
|
** nEntity Not used
|
|
**
|
|
** RETURNS:
|
|
**
|
|
*******************************************************************************/
|
|
void GetInputVal( HANDLE hDescListBox, int nEntity)
|
|
{
|
|
|
|
PITEM_INFO pItemInfo;
|
|
char szBuff[128];
|
|
LRESULT Index,rc;
|
|
|
|
rc = DialogBox( ghInst,MAKEINTRESOURCE(IDD_OUTPUT),ghWnd , MainItemDlgProc);
|
|
|
|
if( rc == TRUE )
|
|
{
|
|
if( pItemInfo = (PITEM_INFO) GlobalAlloc(GPTR,sizeof(ITEM_INFO)) )
|
|
{
|
|
|
|
pItemInfo->bTag = INPUT;
|
|
|
|
if( HIBYTE(gMainItemVal) )
|
|
pItemInfo->bTag |= 0x02;
|
|
else
|
|
pItemInfo->bTag |= 0x01;
|
|
|
|
pItemInfo->bParam[0] = LOBYTE(gMainItemVal);
|
|
pItemInfo->bParam[1] = HIBYTE(gMainItemVal);
|
|
|
|
if( HIBYTE(gMainItemVal))
|
|
{
|
|
wsprintf(szBuff,"INPUT (%d)\t%02X %02X %02X",gMainItemVal,pItemInfo->bTag,pItemInfo->bParam[1],
|
|
pItemInfo->bParam[0] );
|
|
gwReportDescLen += 3;
|
|
}
|
|
else
|
|
{
|
|
wsprintf(szBuff,"INPUT (%d)\t%02X %02X",gMainItemVal,pItemInfo->bTag,pItemInfo->bParam[0]);
|
|
gwReportDescLen += 2;
|
|
}
|
|
|
|
Index = AddString(hDescListBox,szBuff);
|
|
rc = SendMessage(hDescListBox,LB_SETITEMDATA,Index,(LPARAM) pItemInfo);
|
|
|
|
}
|
|
else
|
|
MessageBox(NULL,"GlobalAlloc() Failed!","DT Error",MB_OK);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
/*******************************************************************************
|
|
**
|
|
** void GetOutputVal( HANDLE hDescListBox, int nEntity)
|
|
**
|
|
** DESCRIPTION: Get user input for a Output Tag
|
|
**
|
|
**
|
|
** PARAMETERS: hDescListBox Handle to the Desc window
|
|
** hHexListBox Handle to the Hex window
|
|
** nEntity Not used
|
|
**
|
|
** RETURNS:
|
|
**
|
|
*******************************************************************************/
|
|
void GetOutputVal( HANDLE hDescListBox, int nEntity)
|
|
{
|
|
PITEM_INFO pItemInfo;
|
|
char szBuff[128];
|
|
LRESULT Index,rc;
|
|
|
|
rc = DialogBox( ghInst,MAKEINTRESOURCE(IDD_OUTPUT),ghWnd , MainItemDlgProc);
|
|
|
|
if( rc == TRUE )
|
|
{
|
|
if( pItemInfo = (PITEM_INFO) GlobalAlloc(GPTR,sizeof(ITEM_INFO)) )
|
|
{
|
|
|
|
pItemInfo->bTag = OUTPUT;
|
|
|
|
if( HIBYTE(gMainItemVal) )
|
|
pItemInfo->bTag |= 0x02;
|
|
else
|
|
pItemInfo->bTag |= 0x01;
|
|
|
|
pItemInfo->bParam[0] = LOBYTE(gMainItemVal);
|
|
pItemInfo->bParam[1] = HIBYTE(gMainItemVal);
|
|
|
|
if( HIBYTE(gMainItemVal))
|
|
{
|
|
wsprintf(szBuff,"OUTPUT (%d)\t%02X %02X %02X",gMainItemVal,pItemInfo->bTag,pItemInfo->bParam[1],
|
|
pItemInfo->bParam[0] );
|
|
gwReportDescLen += 3;
|
|
}
|
|
|
|
else
|
|
{
|
|
wsprintf(szBuff,"OUTPUT (%d)\t%02X %02X",gMainItemVal,pItemInfo->bTag,pItemInfo->bParam[0]);
|
|
gwReportDescLen += 2;
|
|
}
|
|
|
|
|
|
Index = AddString(hDescListBox,szBuff);
|
|
rc = SendMessage(hDescListBox,LB_SETITEMDATA,Index,(LPARAM) pItemInfo);
|
|
|
|
}
|
|
else
|
|
MessageBox(NULL,"GlobalAlloc() Failed!","DT Error",MB_OK);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
/*******************************************************************************
|
|
**
|
|
** void GetFeatVal( HANDLE hDescListBox, int nEntity)
|
|
**
|
|
** DESCRIPTION: Get user input for a Feature Tag
|
|
**
|
|
**
|
|
** PARAMETERS: hDescListBox Handle to the Desc window
|
|
** hHexListBox Handle to the Hex window
|
|
** nEntity Not used
|
|
**
|
|
** RETURNS:
|
|
**
|
|
*******************************************************************************/
|
|
void GetFeatVal( HANDLE hDescListBox, int nEntity)
|
|
{
|
|
PITEM_INFO pItemInfo;
|
|
char szBuff[128];
|
|
LRESULT Index,rc;
|
|
|
|
rc = DialogBox( ghInst,MAKEINTRESOURCE(IDD_OUTPUT),ghWnd , MainItemDlgProc);
|
|
|
|
if( rc == TRUE )
|
|
{
|
|
if( pItemInfo = (PITEM_INFO) GlobalAlloc(GPTR,sizeof(ITEM_INFO)) )
|
|
{
|
|
|
|
pItemInfo->bTag = FEATURE;
|
|
|
|
if( HIBYTE(gMainItemVal) )
|
|
pItemInfo->bTag |= 0x02;
|
|
else
|
|
pItemInfo->bTag |= 0x01;
|
|
|
|
pItemInfo->bParam[0] = LOBYTE(gMainItemVal);
|
|
pItemInfo->bParam[1] = HIBYTE(gMainItemVal);
|
|
|
|
if( HIBYTE(gMainItemVal))
|
|
{
|
|
wsprintf(szBuff,"FEATURE (%d)\t%02X %02X %02X",gMainItemVal,pItemInfo->bTag,pItemInfo->bParam[1],
|
|
pItemInfo->bParam[0] );
|
|
gwReportDescLen += 3;
|
|
}
|
|
else
|
|
{
|
|
wsprintf(szBuff,"FEATURE (%d)\t%02X %02X",gMainItemVal,pItemInfo->bTag,pItemInfo->bParam[0]);
|
|
gwReportDescLen += 2;
|
|
}
|
|
|
|
Index = AddString(hDescListBox,szBuff);
|
|
rc = SendMessage(hDescListBox,LB_SETITEMDATA,Index,(LPARAM) pItemInfo);
|
|
|
|
}
|
|
else
|
|
MessageBox(NULL,"GlobalAlloc() Failed!","DT Error",MB_OK);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
/*******************************************************************************
|
|
**
|
|
** void GetExponentVal( HANDLE hDescListBox, HANDLE hHexListBox int nEntity)
|
|
**
|
|
** DESCRIPTION: Get user input for a Exponent Tag
|
|
**
|
|
**
|
|
** PARAMETERS: hDescListBox Handle to the Desc window
|
|
** hHexListBox Handle to the Hex window
|
|
** nEntity Not used
|
|
**
|
|
** RETURNS:
|
|
**
|
|
*******************************************************************************/
|
|
void GetExponentVal( HANDLE hDescListBox, int nEntity)
|
|
{
|
|
PITEM_INFO pItemInfo;
|
|
char szBuff[128];
|
|
LRESULT Index,rc;
|
|
|
|
rc = DialogBox( ghInst,MAKEINTRESOURCE(IDD_EXPONENT),ghWnd , ExponentDlgProc);
|
|
|
|
if( rc == TRUE )
|
|
{
|
|
if( pItemInfo = (PITEM_INFO) GlobalAlloc(GPTR,sizeof(ITEM_INFO)) )
|
|
{
|
|
|
|
pItemInfo->bTag = UNIT_EXPONENT;
|
|
pItemInfo->bTag |= 0x01; // 1 BYTE of param info
|
|
pItemInfo->bParam[0] = gExpVal;
|
|
|
|
wsprintf(szBuff,"UNIT_EXPONENT (%d)\t%02X %02X",gExpVal,pItemInfo->bTag,pItemInfo->bParam[0]);
|
|
Index = AddString(hDescListBox,szBuff);
|
|
rc = SendMessage(hDescListBox,LB_SETITEMDATA,Index,(LPARAM) pItemInfo);
|
|
|
|
gwReportDescLen += 2;
|
|
}
|
|
else
|
|
MessageBox(NULL,"GlobalAlloc() Failed!","DT Error",MB_OK);
|
|
|
|
|
|
}
|
|
|
|
}
|
|
/*******************************************************************************
|
|
**
|
|
** void GetUnitsVal( HANDLE hDescListBox, int nEntity)
|
|
**
|
|
** DESCRIPTION: Get user input for a Units Tag
|
|
**
|
|
**
|
|
** PARAMETERS: hDescListBox Handle to the Desc window
|
|
** hHexListBox Handle to the Hex window
|
|
** nEntity Not used
|
|
**
|
|
** RETURNS:
|
|
**
|
|
*******************************************************************************/
|
|
void GetUnitsVal( HANDLE hDescListBox, int nEntity)
|
|
{
|
|
PITEM_INFO pItemInfo;
|
|
char szBuff[128];
|
|
LRESULT Index,rc;
|
|
|
|
rc = DialogBox( ghInst,MAKEINTRESOURCE(IDD_UNIT),ghWnd , UnitDlgProc);
|
|
|
|
if( rc == TRUE )
|
|
{
|
|
if( pItemInfo = (PITEM_INFO) GlobalAlloc(GPTR,sizeof(ITEM_INFO)) )
|
|
{
|
|
|
|
pItemInfo->bTag = UNIT;
|
|
pItemInfo->bTag |= 0x02; // 2 BYTE of param info
|
|
pItemInfo->bParam[0] = LOBYTE(gUnitVal);
|
|
pItemInfo->bParam[1] = HIBYTE(gUnitVal);
|
|
|
|
|
|
wsprintf(szBuff,"UNIT (%d)\t%02X %02X %02X",gExpVal,pItemInfo->bTag,pItemInfo->bParam[0],
|
|
pItemInfo->bParam[1] );
|
|
Index = AddString(hDescListBox,szBuff);
|
|
rc = SendMessage(hDescListBox,LB_SETITEMDATA,Index,(LPARAM) pItemInfo);
|
|
|
|
gwReportDescLen += 2;
|
|
}
|
|
else
|
|
MessageBox(NULL,"GlobalAlloc() Failed!","DT Error",MB_OK);
|
|
|
|
}
|
|
|
|
}
|
|
/*******************************************************************************
|
|
**
|
|
** void GetPushVal( HANDLE hDescListBox, HANDLE hHexListBox int nEntity)
|
|
**
|
|
** DESCRIPTION: Creates a ITEM_INFO struct, fills it with a tag value for
|
|
** PUSH, Send a textual representation to the Desc Window, and
|
|
** and a Hex representation to the Hex Window. Store the pointer
|
|
** to the structure in column 2 of the Hex Window.
|
|
**
|
|
** PARAMETERS: hDescListBox Handle to the Desc window
|
|
** hHexListBox Handle to the Hex window
|
|
** nEntity Not used
|
|
**
|
|
**
|
|
** RETURNS:
|
|
**
|
|
*******************************************************************************/
|
|
void GetPushVal( HANDLE hDescListBox, int nEntity)
|
|
{
|
|
PITEM_INFO pItemInfo;
|
|
char szBuff[128];
|
|
LRESULT Index,rc;
|
|
|
|
if( pItemInfo = (PITEM_INFO) GlobalAlloc(GPTR,sizeof(ITEM_INFO)) )
|
|
{
|
|
pItemInfo->bTag = PUSH;
|
|
|
|
wsprintf(szBuff,"PUSH\t%02X",PUSH);
|
|
Index = AddString(hDescListBox,szBuff);
|
|
rc = SendMessage(hDescListBox,LB_SETITEMDATA,Index,(LPARAM) pItemInfo);
|
|
gwReportDescLen++;
|
|
}
|
|
else
|
|
MessageBox(NULL,"GlobalAlloc() Failed!","DT Error",MB_OK);
|
|
|
|
|
|
}
|
|
/*******************************************************************************
|
|
**
|
|
** void GetPopVal( HANDLE hDescListBox, int nEntity)
|
|
**
|
|
** DESCRIPTION: Creates a ITEM_INFO struct, fills it with a tag value for
|
|
** POP, Send a textual representation to the Desc Window, and
|
|
** and a Hex representation to the Hex Window. Store the pointer
|
|
** to the structure in the ItemData for the item.
|
|
**
|
|
** PARAMETERS: hDescListBox Handle to the Desc window
|
|
** hHexListBox Handle to the Hex window
|
|
** nEntity Not used
|
|
**
|
|
** RETURNS:
|
|
**
|
|
*******************************************************************************/
|
|
void GetPopVal( HANDLE hDescListBox, int Entity )
|
|
{
|
|
PITEM_INFO pItemInfo;
|
|
char szBuff[128];
|
|
LRESULT Index,rc;
|
|
|
|
if( pItemInfo = (PITEM_INFO) GlobalAlloc(GPTR,sizeof(ITEM_INFO)) )
|
|
{
|
|
pItemInfo->bTag = POP;
|
|
|
|
wsprintf(szBuff,"POP\t%02X",POP);
|
|
Index = AddString(hDescListBox,szBuff);
|
|
rc = SendMessage(hDescListBox,LB_SETITEMDATA,Index,(LPARAM) pItemInfo);
|
|
gwReportDescLen++;
|
|
}
|
|
else
|
|
MessageBox(NULL,"GlobalAlloc() Failed!","DT Error",MB_OK);
|
|
|
|
|
|
|
|
}
|
|
|
|
/*******************************************************************************
|
|
**
|
|
** void GetSetDelimiterVal( HANDLE hDescListBox,int nEntity)
|
|
**
|
|
** DESCRIPTION: Get user input for a SetDelimiter Tag
|
|
**
|
|
**
|
|
** PARAMETERS: hDescListBox Handle to the Desc window
|
|
** nEntity Not used
|
|
**
|
|
** RETURNS:
|
|
**
|
|
*******************************************************************************/
|
|
void GetSetDelimiterVal( HANDLE hDescListBox, int nEntity)
|
|
{
|
|
PITEM_INFO pItemInfo;
|
|
char szBuff[128];
|
|
LRESULT Index,rc;
|
|
|
|
rc = DialogBox( ghInst,MAKEINTRESOURCE(IDD_SETDELIMITER),ghWnd , SetDelimiterDlgProc);
|
|
|
|
if( rc == TRUE )
|
|
{
|
|
if( pItemInfo = (PITEM_INFO) GlobalAlloc(GPTR,sizeof(ITEM_INFO)) )
|
|
{
|
|
pItemInfo->bTag = SET_DELIMITER;
|
|
pItemInfo->bTag |= 0x01; // SetDelimiter has 1 param
|
|
pItemInfo->bParam[0] = gSetDelimiterVal;
|
|
|
|
wsprintf(szBuff,"SET_DELIMITER (%s)\t%02X %02X",(pItemInfo->bParam[0]) ? "Close" : "Open",
|
|
pItemInfo->bTag,pItemInfo->bParam[0]);
|
|
Index = AddString(hDescListBox,szBuff);
|
|
rc = SendMessage(hDescListBox,LB_SETITEMDATA,Index,(LPARAM) pItemInfo);
|
|
|
|
gwReportDescLen += 2;
|
|
}
|
|
else
|
|
MessageBox(NULL,"GlobalAlloc() Failed!","DT Error",MB_OK);
|
|
|
|
}//end if(rc == TRUE)
|
|
|
|
|
|
}
|
|
|
|
|
|
/********************************************************************************
|
|
** D I A L O G B O X P R O C's **
|
|
********************************************************************************/
|
|
|
|
|
|
/*******************************************************************************
|
|
**
|
|
** BOOL APIENTRY SetDelimiterDlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARM lPram)
|
|
**
|
|
** DESCRIPTION: Dialog box proc for SetDelimiter items
|
|
**
|
|
**
|
|
** PARAMETERS: Your standard Dialog box proc parms, plus....
|
|
**
|
|
**
|
|
** RETURNS:
|
|
**
|
|
*******************************************************************************/
|
|
BOOL CALLBACK SetDelimiterDlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
|
{
|
|
switch(msg)
|
|
{
|
|
case WM_INITDIALOG:
|
|
gSetDelimiterVal = 0;
|
|
SendMessage(GetDlgItem(hDlg,IDC_DELIMITOPEN),BM_SETCHECK,TRUE,0);
|
|
return TRUE;
|
|
|
|
case WM_COMMAND:
|
|
switch( wParam )
|
|
{
|
|
case IDC_DELIMITOPEN:
|
|
gSetDelimiterVal = 0x00;
|
|
return TRUE;
|
|
|
|
case IDC_DELIMITCLOSE:
|
|
gSetDelimiterVal = 0x01;
|
|
return TRUE;
|
|
|
|
case IDOK:
|
|
EndDialog(hDlg,TRUE);
|
|
return TRUE;
|
|
|
|
case IDCANCEL:
|
|
EndDialog(hDlg,FALSE);
|
|
return TRUE;
|
|
}
|
|
default:
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
/*******************************************************************************
|
|
**
|
|
** BOOL APIENTRY EditBoxDlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARM lPram)
|
|
**
|
|
** DESCRIPTION: Dialog box proc for Edit box input
|
|
**
|
|
**
|
|
**
|
|
**
|
|
** PARAMETERS: Your standard Dialog box proc parms, plus....
|
|
**
|
|
**
|
|
** RETURNS:
|
|
**
|
|
*******************************************************************************/
|
|
#define MAX_INTEGER 12 //"-2147483648\0"
|
|
#define MAX_HEX 9 // Number bits in a DWORD + \0
|
|
|
|
int INT_MAX = 2147483647;
|
|
int INT_MIN = -2147483647;
|
|
|
|
BOOL CALLBACK EditBoxDlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
|
{
|
|
BOOL Status;
|
|
static HWND hwndEdit;
|
|
char szNumber[MAX_INTEGER];
|
|
static int nBase = IDC_BASE10;
|
|
static int nStringLen = MAX_INTEGER;
|
|
|
|
switch(msg)
|
|
{
|
|
case WM_INITDIALOG:
|
|
gEditVal = 0;
|
|
hwndEdit = GetDlgItem(hDlg,IDC_EDIT1);
|
|
SendDlgItemMessage(hDlg,nBase,BM_SETCHECK,TRUE,0);
|
|
SetFocus(hwndEdit);
|
|
return FALSE;
|
|
|
|
|
|
case WM_COMMAND:
|
|
switch( wParam )
|
|
{
|
|
case IDOK:
|
|
Status = GetDlgItemText(hDlg,IDC_EDIT1,szNumber,nStringLen);
|
|
if( Status <= nStringLen - 1 )
|
|
{
|
|
if( nBase == IDC_BASE10 )
|
|
gEditVal = atoi(szNumber);
|
|
else
|
|
sscanf(szNumber,"%8x",&gEditVal);
|
|
|
|
if( (gEditVal <= INT_MAX) && (gEditVal >= INT_MIN) )
|
|
{
|
|
EndDialog(hDlg,TRUE);
|
|
return TRUE;
|
|
}
|
|
}
|
|
SetFocus(hwndEdit);
|
|
SendMessage(hwndEdit,EM_SETSEL,0,-1);
|
|
return TRUE;
|
|
|
|
case IDC_BASE10:
|
|
nBase = IDC_BASE10;
|
|
SetFocus(hwndEdit);
|
|
nStringLen = MAX_INTEGER;
|
|
return TRUE;
|
|
|
|
case IDC_BASE16:
|
|
nBase = IDC_BASE16;
|
|
SetFocus(hwndEdit);
|
|
nStringLen = MAX_HEX;
|
|
return TRUE;
|
|
|
|
case IDCANCEL:
|
|
EndDialog(hDlg,FALSE);
|
|
return TRUE;
|
|
}
|
|
default:
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
/*******************************************************************************
|
|
**
|
|
** BOOL APIENTRY CollectionDlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARM lPram)
|
|
**
|
|
** DESCRIPTION: Dialog box proc for Collection entities
|
|
**
|
|
**
|
|
** PARAMETERS: Your standard Dialog box proc parms, plus....
|
|
**
|
|
**
|
|
** RETURNS:
|
|
**
|
|
*******************************************************************************/
|
|
BOOL CALLBACK CollectionDlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
|
{
|
|
switch(msg)
|
|
{
|
|
case WM_INITDIALOG:
|
|
gCollectionVal = 0;
|
|
SendMessage(GetDlgItem(hDlg,IDC_LINKED),BM_SETCHECK,TRUE,0);
|
|
return TRUE;
|
|
|
|
case WM_COMMAND:
|
|
switch( wParam )
|
|
{
|
|
case IDC_LINKED:
|
|
gCollectionVal = 0x00;
|
|
return TRUE;
|
|
|
|
case IDC_APPLICATION:
|
|
gCollectionVal = 0x01;
|
|
return TRUE;
|
|
|
|
case IDC_DATALINK:
|
|
gCollectionVal = 0x02;
|
|
return TRUE;
|
|
|
|
case IDOK:
|
|
EndDialog(hDlg,TRUE);
|
|
return TRUE;
|
|
|
|
case IDCANCEL:
|
|
EndDialog(hDlg,FALSE);
|
|
return TRUE;
|
|
}
|
|
default:
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
}
|
|
|
|
/*******************************************************************************
|
|
**
|
|
** BOOL CALLBACK InputDlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARM lPram)
|
|
**
|
|
** DESCRIPTION: Dialog box proc for Input entities
|
|
**
|
|
**
|
|
** PARAMETERS: Your standard Dialog box proc parms, plus....
|
|
**
|
|
**
|
|
** RETURNS:
|
|
**
|
|
*******************************************************************************/
|
|
/****
|
|
BOOL CALLBACK InputDlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
|
{
|
|
switch(msg)
|
|
{
|
|
case WM_INITDIALOG:
|
|
gInputVal = 0;
|
|
SendMessage(GetDlgItem(hDlg,IDC_DATA), BM_SETCHECK,TRUE,0);
|
|
SendMessage(GetDlgItem(hDlg,IDC_ARRAY), BM_SETCHECK,TRUE,0);
|
|
SendMessage(GetDlgItem(hDlg,IDC_ABSOLUTE), BM_SETCHECK,TRUE,0);
|
|
SendMessage(GetDlgItem(hDlg,IDC_NOWRAP), BM_SETCHECK,TRUE,0);
|
|
SendMessage(GetDlgItem(hDlg,IDC_LINEAR), BM_SETCHECK,TRUE,0);
|
|
SendMessage(GetDlgItem(hDlg,IDC_PREFSTATE), BM_SETCHECK,TRUE,0);
|
|
SendMessage(GetDlgItem(hDlg,IDC_NULL), BM_SETCHECK,TRUE,0);
|
|
SendMessage(GetDlgItem(hDlg,IDC_NONVOL), BM_SETCHECK,TRUE,0);
|
|
SendMessage(GetDlgItem(hDlg,IDC_BITFIELD), BM_SETCHECK,TRUE,0);
|
|
return TRUE;
|
|
|
|
case WM_COMMAND:
|
|
switch( LOWORD(wParam) )
|
|
{
|
|
|
|
// These represent bit values of 0, so clear
|
|
// the bit which corresponds to the number in wParam
|
|
// after subtracting 0x1000
|
|
case IDC_DATA:
|
|
case IDC_ARRAY:
|
|
case IDC_ABSOLUTE:
|
|
case IDC_NOWRAP:
|
|
case IDC_LINEAR:
|
|
case IDC_PREFSTATE:
|
|
case IDC_NULL:
|
|
case IDC_NONVOL:
|
|
case IDC_BITFIELD:
|
|
gInputVal &= (wParam - 0x1000);
|
|
return TRUE;
|
|
|
|
|
|
// These represent bit values of 1, so set
|
|
// the bit which corresponds to the number in wParam
|
|
// after subtracting 0x1000
|
|
case IDC_CONST:
|
|
case IDC_VARIABLE:
|
|
case IDC_RELATIVE:
|
|
case IDC_WRAP:
|
|
case IDC_NONLINEAR:
|
|
case IDC_NOPREF:
|
|
case IDC_NONULL:
|
|
case IDC_BUFFERED:
|
|
gInputVal |= (wParam - 0x1000);
|
|
return TRUE;
|
|
|
|
case IDOK:
|
|
EndDialog(hDlg,TRUE);
|
|
return TRUE;
|
|
|
|
case IDCANCEL:
|
|
EndDialog(hDlg,FALSE);
|
|
return TRUE;
|
|
}
|
|
default:
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
***/
|
|
|
|
/*******************************************************************************
|
|
**
|
|
** BOOL CALLBACK MainItemDlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARM lPram)
|
|
**
|
|
** DESCRIPTION: Dialog box proc for Input entities
|
|
**
|
|
**
|
|
** PARAMETERS: Your standard Dialog box proc parms, plus....
|
|
**
|
|
**
|
|
** RETURNS:
|
|
**
|
|
*******************************************************************************/
|
|
BOOL CALLBACK MainItemDlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
|
{
|
|
switch(msg)
|
|
{
|
|
case WM_INITDIALOG:
|
|
gMainItemVal = 0;
|
|
SendMessage(GetDlgItem(hDlg,IDC_DATA), BM_SETCHECK,TRUE,0);
|
|
SendMessage(GetDlgItem(hDlg,IDC_ARRAY), BM_SETCHECK,TRUE,0);
|
|
SendMessage(GetDlgItem(hDlg,IDC_ABSOLUTE), BM_SETCHECK,TRUE,0);
|
|
SendMessage(GetDlgItem(hDlg,IDC_NOWRAP), BM_SETCHECK,TRUE,0);
|
|
SendMessage(GetDlgItem(hDlg,IDC_LINEAR), BM_SETCHECK,TRUE,0);
|
|
SendMessage(GetDlgItem(hDlg,IDC_PREFSTATE), BM_SETCHECK,TRUE,0);
|
|
SendMessage(GetDlgItem(hDlg,IDC_NULL), BM_SETCHECK,TRUE,0);
|
|
SendMessage(GetDlgItem(hDlg,IDC_NONVOL), BM_SETCHECK,TRUE,0);
|
|
SendMessage(GetDlgItem(hDlg,IDC_BITFIELD), BM_SETCHECK,TRUE,0);
|
|
return TRUE;
|
|
|
|
case WM_COMMAND:
|
|
switch( LOWORD(wParam) )
|
|
{
|
|
|
|
// These represent bit values of 0, so clear
|
|
// the bit which corresponds to the number in wParam
|
|
// after subtracting 0x1000
|
|
case IDC_DATA:
|
|
case IDC_ARRAY:
|
|
case IDC_ABSOLUTE:
|
|
case IDC_NOWRAP:
|
|
case IDC_LINEAR:
|
|
case IDC_PREFSTATE:
|
|
case IDC_NULL:
|
|
case IDC_NONVOL:
|
|
case IDC_BITFIELD:
|
|
gMainItemVal &= (wParam - 0x1000);
|
|
return TRUE;
|
|
|
|
|
|
// These represent bit values of 1, so set
|
|
// the bit which corresponds to the number in wParam
|
|
// after subtracting 0x1000
|
|
case IDC_CONST:
|
|
case IDC_VARIABLE:
|
|
case IDC_RELATIVE:
|
|
case IDC_WRAP:
|
|
case IDC_NONLINEAR:
|
|
case IDC_NOPREF:
|
|
case IDC_NONULL:
|
|
case IDC_VOL:
|
|
case IDC_BUFFERED:
|
|
gMainItemVal |= (wParam - 0x1000);
|
|
return TRUE;
|
|
|
|
case IDOK:
|
|
EndDialog(hDlg,TRUE);
|
|
return TRUE;
|
|
|
|
case IDCANCEL:
|
|
EndDialog(hDlg,FALSE);
|
|
return TRUE;
|
|
}
|
|
default:
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
/*******************************************************************************
|
|
**
|
|
** BOOL CALLBACK UnitDlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARM lPram)
|
|
**
|
|
** DESCRIPTION: Dialog box proc for Unit entities
|
|
**
|
|
**
|
|
** PARAMETERS: Your standard Dialog box proc parms, plus....
|
|
**
|
|
**
|
|
** RETURNS:
|
|
**
|
|
*******************************************************************************/
|
|
BOOL CALLBACK UnitDlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
|
{
|
|
switch(msg)
|
|
{
|
|
case WM_INITDIALOG:
|
|
gUnitVal = 0;
|
|
SendMessage(GetDlgItem(hDlg,IDC_SYSNONE),BM_SETCHECK,TRUE,0);
|
|
SendMessage(GetDlgItem(hDlg,IDC_ZERO1),BM_SETCHECK,TRUE,0);
|
|
SendMessage(GetDlgItem(hDlg,IDC_ZERO2),BM_SETCHECK,TRUE,0);
|
|
SendMessage(GetDlgItem(hDlg,IDC_ZERO3),BM_SETCHECK,TRUE,0);
|
|
|
|
return TRUE;
|
|
|
|
case WM_COMMAND:
|
|
switch( LOWORD(wParam) )
|
|
{
|
|
case IDC_SYSNONE:
|
|
case IDC_SILIN:
|
|
case IDC_SIROT:
|
|
case IDC_ENGLIN:
|
|
case IDC_ENGROT:
|
|
case IDC_ELECTRIC:
|
|
case IDC_TEMP:
|
|
case IDC_LUMINOSITY:
|
|
case IDC_TBD:
|
|
case IDC_VENDOR:
|
|
case IDC_TBD1:
|
|
case IDC_TBD2:
|
|
case IDC_TBD3:
|
|
case IDC_TBD4:
|
|
case IDC_TBD5:
|
|
case IDC_TBD6:
|
|
gUnitVal |= (LOWORD(wParam) - IDC_SYSNONE);
|
|
return TRUE;
|
|
|
|
// Length Nibble
|
|
case IDC_ZERO1:
|
|
case IDC_ONE1:
|
|
case IDC_TWO1:
|
|
case IDC_THREE1:
|
|
case IDC_FOUR1:
|
|
case IDC_FIVE1:
|
|
case IDC_SIX1:
|
|
case IDC_SEVEN1:
|
|
case IDC_NEGEIGHT1:
|
|
case IDC_NEGSEVEN1:
|
|
case IDC_NEGSIX1:
|
|
case IDC_NEGFIVE1:
|
|
case IDC_NEGFOUR1:
|
|
case IDC_NEGTHREE1:
|
|
case IDC_NEGTWO1:
|
|
case IDC_NEGONE1:
|
|
gUnitVal |= ((LOWORD(wParam) - IDC_ZERO3) << 4);
|
|
return TRUE;
|
|
// Mass - Nibble2
|
|
case IDC_ZERO2:
|
|
case IDC_ONE2:
|
|
case IDC_TWO2:
|
|
case IDC_THREE2:
|
|
case IDC_FOUR2:
|
|
case IDC_FIVE2:
|
|
case IDC_SIX2:
|
|
case IDC_SEVEN2:
|
|
case IDC_NEGEIGHT2:
|
|
case IDC_NEGSEVEN2:
|
|
case IDC_NEGSIX2:
|
|
case IDC_NEGFIVE2:
|
|
case IDC_NEGFOUR2:
|
|
case IDC_NEGTHREE2:
|
|
case IDC_NEGTWO2:
|
|
case IDC_NEGONE2:
|
|
gUnitVal |= ((LOWORD(wParam) - IDC_ZERO3) << 8);
|
|
return TRUE;
|
|
// Time - Nibble3
|
|
case IDC_ZERO3:
|
|
case IDC_ONE3:
|
|
case IDC_TWO3:
|
|
case IDC_THREE3:
|
|
case IDC_FOUR3:
|
|
case IDC_FIVE3:
|
|
case IDC_SIX3:
|
|
case IDC_SEVEN3:
|
|
case IDC_NEGEIGHT3:
|
|
case IDC_NEGSEVEN3:
|
|
case IDC_NEGSIX3:
|
|
case IDC_NEGFIVE3:
|
|
case IDC_NEGFOUR3:
|
|
case IDC_NEGTHREE3:
|
|
case IDC_NEGTWO3:
|
|
case IDC_NEGONE3:
|
|
gUnitVal |= ((LOWORD(wParam) - IDC_ZERO3) << 12);
|
|
return TRUE;
|
|
|
|
|
|
|
|
case IDOK:
|
|
EndDialog(hDlg,TRUE);
|
|
return TRUE;
|
|
|
|
case IDCANCEL:
|
|
EndDialog(hDlg,FALSE);
|
|
return TRUE;
|
|
}
|
|
default:
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
/*******************************************************************************
|
|
**
|
|
** BOOL CALLBACK ExponentDlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARM lPram)
|
|
**
|
|
** DESCRIPTION: Dialog box proc for Exponent entities
|
|
**
|
|
**
|
|
** PARAMETERS: Your standard Dialog box proc parms, plus....
|
|
**
|
|
**
|
|
** RETURNS:
|
|
**
|
|
*******************************************************************************/
|
|
BOOL CALLBACK ExponentDlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
|
{
|
|
switch(msg)
|
|
{
|
|
case WM_INITDIALOG:
|
|
gExpVal = 0;
|
|
SendMessage(GetDlgItem(hDlg,IDC_ZERO),BM_SETCHECK,TRUE,0);
|
|
return TRUE;
|
|
|
|
case WM_COMMAND:
|
|
switch( LOWORD(wParam) )
|
|
{
|
|
|
|
//
|
|
// Exponent. Lower byte represents code
|
|
case IDC_ZERO:
|
|
case IDC_ONE:
|
|
case IDC_TWO:
|
|
case IDC_THREE:
|
|
case IDC_FOUR:
|
|
case IDC_FIVE:
|
|
case IDC_SIX:
|
|
case IDC_SEVEN:
|
|
case IDC_NEGEIGHT:
|
|
case IDC_NEGSEVEN:
|
|
case IDC_NEGSIX:
|
|
case IDC_NEGFIVE:
|
|
case IDC_NEGFOUR:
|
|
case IDC_NEGTHREE:
|
|
case IDC_NEGTWO:
|
|
case IDC_NEGONE:
|
|
gExpVal = (wParam - 0x4000);
|
|
return TRUE;
|
|
|
|
case IDOK:
|
|
EndDialog(hDlg,TRUE);
|
|
return TRUE;
|
|
|
|
case IDCANCEL:
|
|
EndDialog(hDlg,FALSE);
|
|
return TRUE;
|
|
}
|
|
default:
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
/*******************************************************************************
|
|
**
|
|
** BOOL CALLBACK UsagePageDlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARM lPram)
|
|
**
|
|
** DESCRIPTION: Dialog box proc for UsagePage entities
|
|
**
|
|
**
|
|
** PARAMETERS: Your standard Dialog box proc parms, plus....
|
|
**
|
|
**
|
|
** RETURNS:
|
|
**
|
|
*******************************************************************************/
|
|
BOOL CALLBACK UsagePageDlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
|
{
|
|
static HWND hwndListBox;
|
|
int i;
|
|
|
|
switch(msg)
|
|
{
|
|
case WM_INITDIALOG:
|
|
hwndListBox = GetDlgItem(hDlg,IDC_LIST1);
|
|
gUsagePageVal = 0;
|
|
for(i=0;i<MAX_USAGE_PAGES;i++)
|
|
SendMessage(hwndListBox,LB_ADDSTRING,0,(LPARAM)szUsagePage[i]);
|
|
SendMessage(hwndListBox,LB_SETCURSEL,0,0);
|
|
SetFocus(hwndListBox);
|
|
return TRUE;
|
|
|
|
case WM_COMMAND:
|
|
switch( LOWORD(wParam) )
|
|
{
|
|
|
|
case IDC_LIST1:
|
|
if( HIWORD(wParam) == LBN_DBLCLK )
|
|
{
|
|
gUsagePageVal = (BYTE) SendMessage(hwndListBox,LB_GETCURSEL,0,0);
|
|
EndDialog(hDlg,TRUE);
|
|
}
|
|
if( HIWORD(wParam) == LBN_SELCHANGE )
|
|
gUsagePageVal = (BYTE) SendMessage(hwndListBox,LB_GETCURSEL,0,0);
|
|
return TRUE;
|
|
|
|
case IDOK:
|
|
EndDialog(hDlg,TRUE);
|
|
return TRUE;
|
|
|
|
case IDCANCEL:
|
|
EndDialog(hDlg,FALSE);
|
|
return TRUE;
|
|
}
|
|
default:
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
}
|
|
|
|
|