windows-nt/Source/XPSP1/NT/printscan/wia/test/wiatest/propedit.cpp
2020-09-26 16:20:57 +08:00

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;
}