1391 lines
33 KiB
C++
1391 lines
33 KiB
C++
// PropEdit.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "WIATest.h"
|
|
#include "PropEdit.h"
|
|
|
|
#include "wtdb.h" // WIATEST Database of flags and constants
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CPropEdit dialog
|
|
/**************************************************************************\
|
|
* CPropEdit::CPropEdit()
|
|
*
|
|
* Constructor for Property Edit dialog - Default type
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* pParent - Parent Window
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
CPropEdit::CPropEdit(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CPropEdit::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CPropEdit)
|
|
m_EditString = _T("");
|
|
m_strPropName = _T("");
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
/**************************************************************************\
|
|
* CPropEdit::DoDataExchange()
|
|
*
|
|
* Handles control message maps to the correct member variables
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* pDX - DataExchange object
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CPropEdit::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CPropEdit)
|
|
DDX_Control(pDX, IDOK, m_ButtonOk);
|
|
DDX_Control(pDX, IDCANCEL, m_ButtonCancel);
|
|
DDX_Text(pDX, IDC_EDITPROP, m_EditString);
|
|
DDX_Text(pDX, IDC_PROP_NAME, m_strPropName);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CPropEdit, CDialog)
|
|
//{{AFX_MSG_MAP(CPropEdit)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CPropEdit message handlers
|
|
/**************************************************************************\
|
|
* CPropEdit::SetPropertyName()
|
|
*
|
|
* Sets the property name string
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* PropName - Property Name
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CPropEdit::SetPropertyName(CString PropName)
|
|
{
|
|
m_strPropName = PropName;
|
|
}
|
|
/**************************************************************************\
|
|
* CPropEdit::SetPropertyValue()
|
|
*
|
|
* Sets the property value string
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* PropValue - Property Value
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CPropEdit::SetPropertyValue(CString PropValue)
|
|
{
|
|
m_EditString = PropValue;
|
|
}
|
|
/**************************************************************************\
|
|
* CPropEdit::SetPropertyType()
|
|
*
|
|
* Sets the property Type
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* PropType - Property type
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CPropEdit::SetPropertyType(USHORT PropType)
|
|
{
|
|
m_VT = PropType;
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CPropEditRange dialog
|
|
/**************************************************************************\
|
|
* CPropEditRange::CPropEditRange()
|
|
*
|
|
* Constructor for Property Edit dialog - RANGE type
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* pParent - Parent Window
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
CPropEditRange::CPropEditRange(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CPropEditRange::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CPropEditRange)
|
|
m_EditString = _T("");
|
|
m_strPropName = _T("");
|
|
m_Increment = _T("none");
|
|
m_Maximum = _T("none");
|
|
m_Minimum = _T("none");
|
|
m_Nominal = _T("none");
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
/**************************************************************************\
|
|
* CPropEditRange::DoDataExchange()
|
|
*
|
|
* Handles control message maps to the correct member variables
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* pDX - DataExchange object
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CPropEditRange::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CPropEditRange)
|
|
DDX_Control(pDX, IDOK, m_ButtonOk);
|
|
DDX_Control(pDX, IDCANCEL, m_ButtonCancel);
|
|
DDX_Text(pDX, IDC_EDITPROP, m_EditString);
|
|
DDX_Text(pDX, IDC_PROP_NAME, m_strPropName);
|
|
DDX_Text(pDX, IDC_INC, m_Increment);
|
|
DDX_Text(pDX, IDC_MAX, m_Maximum);
|
|
DDX_Text(pDX, IDC_MIN, m_Minimum);
|
|
DDX_Text(pDX, IDC_NOM, m_Nominal);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CPropEditRange, CDialog)
|
|
//{{AFX_MSG_MAP(CPropEditRange)
|
|
ON_WM_CLOSE()
|
|
ON_WM_DESTROY()
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CPropEditRange message handlers
|
|
/**************************************************************************\
|
|
* CPropEdit::SetRangeValues()
|
|
*
|
|
* Sets the property Range Values
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* Min - Minimum value
|
|
* Max - Maximum value
|
|
* Nom - Nominal value
|
|
* Inc - Increment Value
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
BOOL CPropEditRange::SetRangeValues(int Min, int Max, int Nom, int Inc)
|
|
{
|
|
m_Minimum.Format("%d",Min);
|
|
m_Maximum.Format("%d",Max);
|
|
m_Nominal.Format("%d",Nom);
|
|
m_Increment.Format("%d",Inc);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/**************************************************************************\
|
|
* CPropEdit::SetRangeValues()
|
|
*
|
|
* Sets the property Range Values
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* Min - Minimum value
|
|
* Max - Maximum value
|
|
* Nom - Nominal value
|
|
* Inc - Increment Value
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
BOOL CPropEditRange::SetRangeValues(float Min, float Max, float Nom, float Inc)
|
|
{
|
|
m_Minimum.Format("%3.5f",Min);
|
|
m_Maximum.Format("%3.5f",Max);
|
|
m_Nominal.Format("%3.5f",Nom);
|
|
m_Increment.Format("%3.5f",Inc);
|
|
|
|
return TRUE;
|
|
}
|
|
/**************************************************************************\
|
|
* CPropEditRange::SetPropertyName()
|
|
*
|
|
* Sets the property name string
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* PropName - Property Name
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CPropEditRange::SetPropertyName(CString PropName)
|
|
{
|
|
m_strPropName = PropName;
|
|
}
|
|
/**************************************************************************\
|
|
* CPropEditRange::SetPropertyValue()
|
|
*
|
|
* Sets the property value string
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* PropValue - Property Value
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CPropEditRange::SetPropertyValue(CString PropValue)
|
|
{
|
|
m_EditString = PropValue;
|
|
}
|
|
/**************************************************************************\
|
|
* CPropEditRange::SetPropertyType()
|
|
*
|
|
* Sets the property Type
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* PropType - Property type
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CPropEditRange::SetPropertyType(USHORT PropType)
|
|
{
|
|
m_VT = PropType;
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CPropEditList dialog
|
|
|
|
/**************************************************************************\
|
|
* CPropEditList::CPropEditList()
|
|
*
|
|
* Constructor for Property Edit dialog - LIST type
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* pParent - Parent Window
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
CPropEditList::CPropEditList(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CPropEditList::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CPropEditList)
|
|
m_EditString = _T("");
|
|
m_strPropName = _T("");
|
|
m_CurrentElementNum = 0;
|
|
m_nElements = 0;
|
|
m_pArray = NULL;
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
/**************************************************************************\
|
|
* CPropEditList::DoDataExchange()
|
|
*
|
|
* Handles control message maps to the correct member variables
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* pDX - DataExchange object
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CPropEditList::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CPropEditList)
|
|
DDX_Control(pDX, IDC_LIST_LISTCTRL, m_ListValueListBox);
|
|
DDX_Control(pDX, IDC_NUMLISTVALUES, m_NumListValueDisplay);
|
|
DDX_Control(pDX, IDOK, m_ButtonOk);
|
|
DDX_Control(pDX, IDCANCEL, m_ButtonCancel);
|
|
DDX_Text(pDX, IDC_EDITPROP, m_EditString);
|
|
DDX_Text(pDX, IDC_PROP_NAME, m_strPropName);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CPropEditList, CDialog)
|
|
//{{AFX_MSG_MAP(CPropEditList)
|
|
ON_WM_CLOSE()
|
|
ON_WM_DESTROY()
|
|
ON_NOTIFY(NM_DBLCLK, IDC_LIST_LISTCTRL, OnDblclkListListctrl)
|
|
ON_NOTIFY(NM_CLICK, IDC_LIST_LISTCTRL, OnClickListListctrl)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CPropEditList message handlers
|
|
/**************************************************************************\
|
|
* CPropEditList::SetListValue()
|
|
*
|
|
* Sets the current list value in UINT array
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* ListValue - List value to enter into UINT array
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
BOOL CPropEditList::SetListValue(int ListValue)
|
|
{
|
|
//m_pUINTArray[m_CurrentElementNum] = ListValue;
|
|
//m_CurrentElementNum++;
|
|
return TRUE;
|
|
}
|
|
/**************************************************************************\
|
|
* CPropEditList::SetArray()
|
|
*
|
|
* Sets the array bounds for the list data
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* pArray - pointer to Array
|
|
* nElements - Number of elements in the array
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
BOOL CPropEditList::SetArray(BYTE *pArray, int nElements)
|
|
{
|
|
m_nElements = nElements;
|
|
m_pArray = pArray;
|
|
return TRUE;
|
|
}
|
|
/**************************************************************************\
|
|
* CPropEditList::DisplayListValues()
|
|
*
|
|
* Displays list values to dialog listbox
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* none
|
|
*
|
|
* Return Value:
|
|
*
|
|
* status
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
BOOL CPropEditList::DisplayListValues()
|
|
{
|
|
CString Value = "";
|
|
Value.Format("Total List Values = %d",m_nElements);
|
|
m_NumListValueDisplay.SetWindowText(Value);
|
|
|
|
int NumEntries = WiatestDatabase[0].nItems;
|
|
BOOL bFoundName = FALSE;
|
|
|
|
//
|
|
// Search for known property in data base
|
|
//
|
|
|
|
for (int CurrentEntry = 1;CurrentEntry <= NumEntries;CurrentEntry++) {
|
|
if (m_strPropName == (CString)(WiatestDatabase[CurrentEntry].pName)) {
|
|
bFoundName = TRUE;
|
|
int Index = 0;
|
|
CString outStr = "";
|
|
m_CurrentEntry = CurrentEntry;
|
|
}
|
|
}
|
|
if (!bFoundName) {
|
|
|
|
//
|
|
// Name was not found..so display the actual values in the list
|
|
//
|
|
|
|
// AfxMessageBox(m_strPropName + " was not found in wtdb.h data base file...");
|
|
for (UINT nElem = 0;nElem < (UINT)m_nElements; nElem++) {
|
|
Value = "";
|
|
|
|
switch (m_VT) {
|
|
case VT_I1:
|
|
case VT_I2:
|
|
case VT_I4:
|
|
case VT_I8:
|
|
case VT_UI1:
|
|
case VT_UI2:
|
|
case VT_UI4:
|
|
case VT_UI8:
|
|
case VT_INT:
|
|
Value.Format("%d",((INT*)m_pArray)[WIA_LIST_VALUES + nElem]);
|
|
break;
|
|
case VT_R4:
|
|
case VT_R8:
|
|
Value.Format("%3.3f",((float*)m_pArray)[WIA_LIST_VALUES + nElem]);
|
|
break;
|
|
case VT_BSTR:
|
|
Value.Format("%ws",((BSTR*)m_pArray)[WIA_LIST_VALUES + nElem]);
|
|
break;
|
|
case VT_CLSID:
|
|
{
|
|
/*UCHAR *pwszUUID = NULL;
|
|
UuidToStringA(&((GUID*)(m_pArray))[WIA_LIST_VALUES + nElem],&pwszUUID);
|
|
Value.Format(ConvertGUIDListValueToCString(((GUID*)(m_pArray))[WIA_LIST_VALUES + nElem])+" %s",pwszUUID);
|
|
RpcStringFree(&pwszUUID);*/
|
|
//_asm int 3;
|
|
//Value = ConvertGUIDListValueToCString((GUID*)(m_pArray)[WIA_LIST_VALUES + nElem]);
|
|
Value = ConvertGUIDListValueToCString(((GUID*)(m_pArray))[WIA_LIST_VALUES + nElem]);
|
|
}
|
|
break;
|
|
case VT_UINT:
|
|
default:
|
|
Value.Format("%d",((UINT*)m_pArray)[WIA_LIST_VALUES + nElem]);
|
|
break;
|
|
}
|
|
|
|
LV_ITEM lvitem;
|
|
|
|
lvitem.mask = LVIF_TEXT | LVIF_PARAM;
|
|
lvitem.iItem = nElem;
|
|
lvitem.iSubItem = 0;
|
|
lvitem.pszText = Value.GetBuffer(Value.GetLength());
|
|
lvitem.iImage = NULL;
|
|
lvitem.lParam = 0;
|
|
|
|
m_ListValueListBox.InsertItem(&lvitem);
|
|
}
|
|
} else {
|
|
Value = "";
|
|
for (UINT nElem = 0;nElem < (UINT)m_nElements; nElem++) {
|
|
Value = "";
|
|
Value.Format("%d",((UINT*)m_pArray)[WIA_LIST_VALUES + nElem]);
|
|
LV_ITEM lvitem;
|
|
CString InValue = ConvertListValueToCString(((UINT*)m_pArray)[WIA_LIST_VALUES + nElem]);
|
|
lvitem.mask = LVIF_TEXT | LVIF_PARAM;
|
|
lvitem.iItem = nElem;
|
|
lvitem.iSubItem = 0;
|
|
lvitem.pszText = InValue.GetBuffer(InValue.GetLength());
|
|
lvitem.iImage = NULL;
|
|
lvitem.lParam = 0;
|
|
|
|
m_ListValueListBox.InsertItem(&lvitem);
|
|
|
|
lvitem.iSubItem = 1;
|
|
lvitem.mask = LVIF_TEXT;
|
|
lvitem.pszText = Value.GetBuffer(Value.GetLength());
|
|
m_ListValueListBox.SetItem(&lvitem);
|
|
}
|
|
}
|
|
m_ListValueListBox.SetColumnWidth(0, LVSCW_AUTOSIZE);
|
|
return TRUE;
|
|
}
|
|
/**************************************************************************\
|
|
* CPropEditList::OnInitDialog()
|
|
*
|
|
* Initializes the Command dialog's controls/display
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* none
|
|
*
|
|
* Return Value:
|
|
*
|
|
* status
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
BOOL CPropEditList::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
LVCOLUMN lv;
|
|
int i = 0;
|
|
// initialize item property list control column headers
|
|
|
|
// Property name
|
|
lv.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;
|
|
lv.fmt = LVCFMT_LEFT ;
|
|
lv.cx = 100;
|
|
lv.pszText = "Constant";
|
|
lv.cchTextMax = 0;
|
|
lv.iSubItem = 0;
|
|
lv.iImage = 0;
|
|
lv.iOrder = 0;
|
|
i = m_ListValueListBox.InsertColumn(0,&lv);
|
|
|
|
// Property Value (current)
|
|
lv.cx = 125;
|
|
lv.iOrder = 1;
|
|
lv.iSubItem = 1;
|
|
lv.pszText = "Value";
|
|
i = m_ListValueListBox.InsertColumn(1,&lv);
|
|
|
|
HFONT hFixedFont = (HFONT)GetStockObject(ANSI_FIXED_FONT);
|
|
if (hFixedFont != NULL)
|
|
m_ListValueListBox.SendMessage(WM_SETFONT,(WPARAM)hFixedFont,0);
|
|
|
|
if (m_nElements > 0)
|
|
DisplayListValues();
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
/**************************************************************************\
|
|
* CPropEditList::OnClose()
|
|
*
|
|
* Handles closing of the Property LIST edit dialog
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* none
|
|
*
|
|
* Return Value:
|
|
*
|
|
* void
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CPropEditList::OnClose()
|
|
{
|
|
CDialog::OnClose();
|
|
}
|
|
/**************************************************************************\
|
|
* CPropEditList::OnDestroy()
|
|
*
|
|
* Handles the destruction of the dialog data arrays
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* none
|
|
*
|
|
* Return Value:
|
|
*
|
|
* void
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CPropEditList::OnDestroy()
|
|
{
|
|
CDialog::OnDestroy();
|
|
}
|
|
/**************************************************************************\
|
|
* CPropEditList::OnDblclkListListctrl()
|
|
*
|
|
* Handles Double click message from List control
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* pNMHDR - Header info
|
|
* pResult - Operation result
|
|
*
|
|
* Return Value:
|
|
*
|
|
* void
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CPropEditList::OnDblclkListListctrl(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
int SelIndex = m_ListValueListBox.GetNextItem( -1, LVNI_ALL | LVNI_SELECTED);
|
|
if ( SelIndex != -1 ) {
|
|
|
|
switch (m_VT) {
|
|
case VT_I1:
|
|
case VT_I2:
|
|
case VT_I4:
|
|
case VT_I8:
|
|
case VT_UI1:
|
|
case VT_UI2:
|
|
case VT_UI4:
|
|
case VT_UI8:
|
|
case VT_INT:
|
|
m_EditString.Format("%d",((INT*)m_pArray)[WIA_LIST_VALUES + SelIndex]);
|
|
break;
|
|
case VT_R4:
|
|
case VT_R8:
|
|
m_EditString.Format("%3.3f",((float*)m_pArray)[WIA_LIST_VALUES + SelIndex]);
|
|
break;
|
|
case VT_BSTR:
|
|
m_EditString.Format("%ws",((BSTR*)m_pArray)[WIA_LIST_VALUES + SelIndex]);
|
|
break;
|
|
case VT_CLSID:
|
|
{
|
|
UCHAR *pwszUUID = NULL;
|
|
UuidToStringA(&((GUID*)(m_pArray))[WIA_LIST_VALUES + SelIndex],&pwszUUID);
|
|
m_EditString.Format("%s",pwszUUID);
|
|
RpcStringFree(&pwszUUID);
|
|
}
|
|
break;
|
|
case VT_UINT:
|
|
default:
|
|
m_EditString.Format("%d",((UINT*)m_pArray)[WIA_LIST_VALUES + SelIndex]);
|
|
break;
|
|
}
|
|
|
|
//m_EditString.Format("%d",m_pUINTArray[SelIndex]);
|
|
UpdateData(FALSE);
|
|
}
|
|
OnOK();
|
|
*pResult = 0;
|
|
}
|
|
/**************************************************************************\
|
|
* CPropEditList::OnClickListListctrl()
|
|
*
|
|
* Handles Double click message from List control
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* pNMHDR - Header info
|
|
* pResult - Operation result
|
|
*
|
|
* Return Value:
|
|
*
|
|
* void
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CPropEditList::OnClickListListctrl(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
int SelIndex = m_ListValueListBox.GetNextItem( -1, LVNI_ALL | LVNI_SELECTED);
|
|
if ( SelIndex != -1 ) {
|
|
switch (m_VT) {
|
|
case VT_I1:
|
|
case VT_I2:
|
|
case VT_I4:
|
|
case VT_I8:
|
|
case VT_UI1:
|
|
case VT_UI2:
|
|
case VT_UI4:
|
|
case VT_UI8:
|
|
case VT_INT:
|
|
m_EditString.Format("%d",((INT*)m_pArray)[WIA_LIST_VALUES + SelIndex]);
|
|
break;
|
|
case VT_R4:
|
|
case VT_R8:
|
|
m_EditString.Format("%3.3f",((float*)m_pArray)[WIA_LIST_VALUES + SelIndex]);
|
|
break;
|
|
case VT_BSTR:
|
|
m_EditString.Format("%ws",((BSTR*)m_pArray)[WIA_LIST_VALUES + SelIndex]);
|
|
break;
|
|
case VT_CLSID:
|
|
{
|
|
UCHAR *pwszUUID = NULL;
|
|
UuidToStringA(&((GUID*)(m_pArray))[WIA_LIST_VALUES + SelIndex],&pwszUUID);
|
|
m_EditString.Format("%s",pwszUUID);
|
|
RpcStringFree(&pwszUUID);
|
|
}
|
|
break;
|
|
case VT_UINT:
|
|
default:
|
|
m_EditString.Format("%d",((UINT*)m_pArray)[WIA_LIST_VALUES + SelIndex]);
|
|
break;
|
|
}
|
|
//m_EditString.Format("%d",m_pUINTArray[SelIndex]);
|
|
UpdateData(FALSE);
|
|
}
|
|
*pResult = 0;
|
|
}
|
|
|
|
/**************************************************************************\
|
|
* CPropEditList::SetPropertyName()
|
|
*
|
|
* Sets the property name string
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* PropName - Property Name
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CPropEditList::SetPropertyName(CString PropName)
|
|
{
|
|
m_strPropName = PropName;
|
|
}
|
|
/**************************************************************************\
|
|
* CPropEditList::SetPropertyValue()
|
|
*
|
|
* Sets the property value string
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* PropValue - Property Value
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CPropEditList::SetPropertyValue(CString PropValue)
|
|
{
|
|
m_EditString = PropValue;
|
|
}
|
|
/**************************************************************************\
|
|
* CPropEditList::SetPropertyType()
|
|
*
|
|
* Sets the property Type
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* PropType - Property type
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CPropEditList::SetPropertyType(USHORT PropType)
|
|
{
|
|
m_VT = PropType;
|
|
}
|
|
/**************************************************************************\
|
|
* CPropEditList::ConvertListValueToCString()
|
|
*
|
|
* Converts a list value to a CString for display
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* Value - List Value to convert
|
|
*
|
|
* Return Value:
|
|
*
|
|
* CString - converted List value in CString format
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
CString CPropEditList::ConvertListValueToCString(UINT Value)
|
|
{
|
|
CString sFlag = "";
|
|
for (int i = 0;i<WiatestDatabase[m_CurrentEntry].nItems;i++) {
|
|
if (Value == WiatestDatabase[m_CurrentEntry].pData[i])
|
|
sFlag = (CString)WiatestDatabase[m_CurrentEntry].pDataNames[i];
|
|
}
|
|
return sFlag;
|
|
}
|
|
|
|
/**************************************************************************\
|
|
* CPropEditList::ConvertGUIDListValueToCString()
|
|
*
|
|
* Converts a list value to a CString for display
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* Value - List Value to convert
|
|
*
|
|
* Return Value:
|
|
*
|
|
* CString - converted List value in CString format
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
CString CPropEditList::ConvertGUIDListValueToCString(GUID guidValue)
|
|
{
|
|
if (guidValue == WiaImgFmt_UNDEFINED)
|
|
return "WiaImgFmt_UNDEFINED";
|
|
else if (guidValue == WiaImgFmt_MEMORYBMP)
|
|
return "WiaImgFmt_MEMORYBMP";
|
|
else if (guidValue == WiaImgFmt_BMP)
|
|
return "WiaImgFmt_BMP";
|
|
else if (guidValue == WiaImgFmt_EMF)
|
|
return "WiaImgFmt_EMF";
|
|
else if (guidValue == WiaImgFmt_WMF)
|
|
return "WiaImgFmt_WMF";
|
|
else if (guidValue == WiaImgFmt_JPEG)
|
|
return "WiaImgFmt_JPEG";
|
|
else if (guidValue == WiaImgFmt_PNG)
|
|
return "WiaImgFmt_PNG";
|
|
else if (guidValue == WiaImgFmt_GIF)
|
|
return "WiaImgFmt_GIF";
|
|
else if (guidValue == WiaImgFmt_TIFF)
|
|
return "WiaImgFmt_TIFF";
|
|
else if (guidValue == WiaImgFmt_EXIF)
|
|
return "WiaImgFmt_EXIF";
|
|
else if (guidValue == WiaImgFmt_PHOTOCD)
|
|
return "WiaImgFmt_PHOTOCD";
|
|
else if (guidValue == WiaImgFmt_FLASHPIX)
|
|
return "WiaImgFmt_FLASHPIX";
|
|
else
|
|
return "** UNKNOWN **";
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CPropEditFlags dialog
|
|
|
|
/**************************************************************************\
|
|
* CPropEditFlags::CPropEditFlags()
|
|
*
|
|
* Constructor for Property Edit dialog - FLAGS type
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* pParent - Parent Window
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
CPropEditFlags::CPropEditFlags(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CPropEditFlags::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CPropEditFlags)
|
|
m_EditString = _T("");
|
|
m_strPropName = _T("");
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
/**************************************************************************\
|
|
* CPropEditFlags::DoDataExchange()
|
|
*
|
|
* Handles control message maps to the correct member variables
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* pDX - DataExchange object
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CPropEditFlags::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CPropEditFlags)
|
|
DDX_Control(pDX, IDC_FLAGS_LISTCTRL, m_FlagValueListBox);
|
|
DDX_Control(pDX, IDC_CURRENTFLAGSTR, m_CurrentFlagValue);
|
|
DDX_Control(pDX, IDOK, m_ButtonOk);
|
|
DDX_Control(pDX, IDCANCEL, m_ButtonCancel);
|
|
DDX_Text(pDX, IDC_EDITPROP, m_EditString);
|
|
DDX_Text(pDX, IDC_PROP_NAME, m_strPropName);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CPropEditFlags, CDialog)
|
|
//{{AFX_MSG_MAP(CPropEditFlags)
|
|
ON_WM_CLOSE()
|
|
ON_WM_DESTROY()
|
|
ON_NOTIFY(NM_CLICK, IDC_FLAGS_LISTCTRL, OnClickFlagsListctrl)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CPropEditFlags message handlers
|
|
/**************************************************************************\
|
|
* CPropEditFlags::OnInitDialog()
|
|
*
|
|
* Initializes the Command dialog's controls/display
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* none
|
|
*
|
|
* Return Value:
|
|
*
|
|
* status
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
BOOL CPropEditFlags::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
LVCOLUMN lv;
|
|
int i = 0;
|
|
// initialize item property list control column headers
|
|
|
|
// Property name
|
|
lv.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;
|
|
lv.fmt = LVCFMT_LEFT ;
|
|
lv.cx = 100;
|
|
lv.pszText = "Constant";
|
|
lv.cchTextMax = 0;
|
|
lv.iSubItem = 0;
|
|
lv.iImage = 0;
|
|
lv.iOrder = 0;
|
|
i = m_FlagValueListBox.InsertColumn(0,&lv);
|
|
|
|
// Property Value (current)
|
|
lv.cx = 125;
|
|
lv.iOrder = 1;
|
|
lv.iSubItem = 1;
|
|
lv.pszText = "Value";
|
|
i = m_FlagValueListBox.InsertColumn(1,&lv);
|
|
|
|
HFONT hFixedFont = (HFONT)GetStockObject(ANSI_FIXED_FONT);
|
|
if (hFixedFont != NULL)
|
|
m_FlagValueListBox.SendMessage(WM_SETFONT,(WPARAM)hFixedFont,0);
|
|
|
|
InitPossibleFlagValues();
|
|
m_CurrentFlagValue.SetWindowText(ConvertFlagToCString(m_CurrentValue));
|
|
m_EditString.Format("0x%08X",m_CurrentValue);
|
|
UpdateData(FALSE);
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
/**************************************************************************\
|
|
* CPropEditFlags::OnClose()
|
|
*
|
|
* Handles closing of the Property FLAGS edit dialog
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* none
|
|
*
|
|
* Return Value:
|
|
*
|
|
* void
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CPropEditFlags::OnClose()
|
|
{
|
|
CDialog::OnClose();
|
|
}
|
|
/**************************************************************************\
|
|
* CPropEditFlags::OnDestroy()
|
|
*
|
|
* Handles the destruction of the dialog data arrays
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* none
|
|
*
|
|
* Return Value:
|
|
*
|
|
* void
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CPropEditFlags::OnDestroy()
|
|
{
|
|
CDialog::OnDestroy();
|
|
}
|
|
/**************************************************************************\
|
|
* CPropEditFlags::SetPropertyName()
|
|
*
|
|
* Sets the property name string
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* PropName - Property Name
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CPropEditFlags::SetPropertyName(CString PropName)
|
|
{
|
|
m_strPropName = PropName;
|
|
}
|
|
/**************************************************************************\
|
|
* CPropEditFlags::SetPropertyValue()
|
|
*
|
|
* Sets the property value string
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* PropValue - Property Value
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CPropEditFlags::SetPropertyValue(CString PropValue)
|
|
{
|
|
m_EditString = PropValue;
|
|
sscanf(m_EditString.GetBuffer(20),"%li",&m_CurrentValue);
|
|
}
|
|
/**************************************************************************\
|
|
* CPropEditFlags::SetPropertyType()
|
|
*
|
|
* Sets the property Type
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* PropType - Property type
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CPropEditFlags::SetPropertyType(USHORT PropType)
|
|
{
|
|
m_VT = PropType;
|
|
}
|
|
/**************************************************************************\
|
|
* CPropEditFlags::SetPropID()
|
|
*
|
|
* Sets the property ID
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* iProp - Property ID
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CPropEditFlags::SetPropID(USHORT iProp)
|
|
{
|
|
m_PropID = iProp;
|
|
}
|
|
/**************************************************************************\
|
|
* CPropEditFlags::InitPossibleFlagsValues()
|
|
*
|
|
* Displays the Possible flag values to be used for setting
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* none
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CPropEditFlags::InitPossibleFlagValues()
|
|
{
|
|
int NumEntries = WiatestDatabase[0].nItems;
|
|
BOOL bFoundName = FALSE;
|
|
for (int CurrentEntry = 1;CurrentEntry <= NumEntries;CurrentEntry++) {
|
|
if (m_strPropName == (CString)(WiatestDatabase[CurrentEntry].pName)) {
|
|
bFoundName = TRUE;
|
|
int Index = 0;
|
|
CString InValue = "";
|
|
CString Value = "";
|
|
m_CurrentEntry = CurrentEntry;
|
|
while (Index <= WiatestDatabase[CurrentEntry].nItems-1) {
|
|
InValue = ConvertFlagToCString(WiatestDatabase[CurrentEntry].pData[Index]);
|
|
Value = "";
|
|
Value.Format("0x%08X",WiatestDatabase[CurrentEntry].pData[Index]);
|
|
LV_ITEM lvitem;
|
|
|
|
lvitem.mask = LVIF_TEXT | LVIF_PARAM;
|
|
lvitem.iItem = Index;
|
|
lvitem.iSubItem = 0;
|
|
lvitem.pszText = InValue.GetBuffer(InValue.GetLength());
|
|
lvitem.iImage = NULL;
|
|
lvitem.lParam = 0;
|
|
|
|
m_FlagValueListBox.InsertItem(&lvitem);
|
|
|
|
lvitem.iSubItem = 1;
|
|
lvitem.mask = LVIF_TEXT;
|
|
lvitem.pszText = Value.GetBuffer(Value.GetLength());
|
|
m_FlagValueListBox.SetItem(&lvitem);
|
|
|
|
Index++;
|
|
}
|
|
}
|
|
}
|
|
if (!bFoundName)
|
|
AfxMessageBox(m_strPropName + " was not found in wtdb.h data base file...");
|
|
m_FlagValueListBox.SetColumnWidth(0, LVSCW_AUTOSIZE);
|
|
}
|
|
/**************************************************************************\
|
|
* CPropEditFlags::ConvertFlagToCString()
|
|
*
|
|
* Converts a Flag value to a CString for display
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* flag - Flag Value to convert
|
|
*
|
|
* Return Value:
|
|
*
|
|
* CString - converted Flag value in CString format
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
CString CPropEditFlags::ConvertFlagToCString(DWORD flag)
|
|
{
|
|
CString sFlag = "";
|
|
for (int i = 0;i<WiatestDatabase[m_CurrentEntry].nItems;i++) {
|
|
if (flag & WiatestDatabase[m_CurrentEntry].pData[i])
|
|
sFlag += (CString)WiatestDatabase[m_CurrentEntry].pDataNames[i] + " | ";
|
|
}
|
|
//
|
|
// check for unknown flags
|
|
//
|
|
if (sFlag.GetLength() == 0) {
|
|
//
|
|
// last check...since 0 can be counted as FALSE causing the
|
|
// if() to fail, this is a check for the first entry (just in case
|
|
// the flag's value is 0)
|
|
//
|
|
if (flag == WiatestDatabase[m_CurrentEntry].pData[0])
|
|
sFlag = (CString)WiatestDatabase[m_CurrentEntry].pDataNames[0] + " | ";
|
|
else
|
|
sFlag.Format("UNKNOWN Flag = %d ",flag);
|
|
}
|
|
|
|
sFlag = sFlag.Left(sFlag.GetLength()-3);
|
|
return sFlag;
|
|
}
|
|
/**************************************************************************\
|
|
* CPropEditFlags::OnClickFlagsListctrl()
|
|
*
|
|
* Handles click message to list control, selecting a flag to be used
|
|
*
|
|
*
|
|
* Arguments:
|
|
*
|
|
* pNMHDR - Header information
|
|
* pResult - Result value
|
|
*
|
|
* Return Value:
|
|
*
|
|
* none
|
|
*
|
|
* History:
|
|
*
|
|
* 2/14/1999 Original Version
|
|
*
|
|
\**************************************************************************/
|
|
void CPropEditFlags::OnClickFlagsListctrl(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
m_CurrentValue = 0;
|
|
int i = m_FlagValueListBox.GetNextItem( -1, LVNI_ALL | LVNI_SELECTED);
|
|
while ( i != -1 ) {
|
|
m_CurrentValue = m_CurrentValue | WiatestDatabase[m_CurrentEntry].pData[i];
|
|
i = m_FlagValueListBox.GetNextItem( i, LVNI_ALL | LVNI_SELECTED);
|
|
}
|
|
m_CurrentFlagValue.SetWindowText(ConvertFlagToCString(m_CurrentValue));
|
|
m_EditString.Format("0x%08X",m_CurrentValue);
|
|
UpdateData(FALSE);
|
|
*pResult = 0;
|
|
}
|
|
|