Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

112 lines
3.8 KiB

  1. // WiaeditpropDlg.cpp: implementation of the CWiaeditpropDlg class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "wiatest.h"
  6. #include "WiaeditpropDlg.h"
  7. #ifdef _DEBUG
  8. #undef THIS_FILE
  9. static char THIS_FILE[]=__FILE__;
  10. #define new DEBUG_NEW
  11. #endif
  12. //////////////////////////////////////////////////////////////////////
  13. // Construction/Destruction
  14. //////////////////////////////////////////////////////////////////////
  15. CWiaeditpropDlg::CWiaeditpropDlg()
  16. {
  17. }
  18. CWiaeditpropDlg::~CWiaeditpropDlg()
  19. {
  20. }
  21. UINT CWiaeditpropDlg::DoModal(TCHAR *szPropertyName, TCHAR *szPropertyValue)
  22. {
  23. UINT nResponse = 0;
  24. if(m_ulAttributes & WIA_PROP_NONE){
  25. CWiaeditpropnone EditPropDlg;
  26. EditPropDlg.SetPropertyName(szPropertyName);
  27. EditPropDlg.SetPropertyValue(szPropertyValue);
  28. TCHAR szFormatting[MAX_PATH];
  29. memset(szFormatting,0,sizeof(szFormatting));
  30. if(lstrcmp(szPropertyName,TEXT("Device Time")) == 0){
  31. RC2TSTR(IDS_WIATESTINFO_SYSTEMTIME_FORMATTING,szFormatting,sizeof(szFormatting));
  32. }
  33. EditPropDlg.SetPropertyFormattingInstructions(szFormatting);
  34. nResponse = (UINT)EditPropDlg.DoModal();
  35. m_szPropertyValue = EditPropDlg.m_szPropertyValue;
  36. } else if(m_ulAttributes & WIA_PROP_LIST){
  37. CWiaeditproplist EditPropDlg;
  38. EditPropDlg.SetPropertyName(szPropertyName);
  39. EditPropDlg.SetPropertyValue(szPropertyValue);
  40. VALID_LIST_VALUES ValidValues;
  41. ValidValues.vt = m_vt;
  42. ValidValues.lNumElements = WIA_PROP_LIST_COUNT(m_pPropVar);
  43. if(ValidValues.vt == VT_CLSID){
  44. ValidValues.pList = (BYTE*)m_pPropVar->cauuid.pElems;
  45. } else {
  46. ValidValues.pList = (BYTE*)m_pPropVar->caul.pElems;
  47. }
  48. EditPropDlg.SetPropertyValidValues(&ValidValues);
  49. nResponse = (UINT)EditPropDlg.DoModal();
  50. m_szPropertyValue = EditPropDlg.m_szPropertyValue;
  51. } else if(m_ulAttributes & WIA_PROP_FLAG){
  52. CWiaeditpropflags EditPropDlg;
  53. EditPropDlg.SetPropertyName(szPropertyName);
  54. EditPropDlg.SetPropertyValue(szPropertyValue);
  55. if(m_ulAttributes & WIA_PROP_WRITE){
  56. EditPropDlg.SetPropertyValidValues(m_pPropVar->caul.pElems[WIA_FLAG_VALUES]);
  57. } else {
  58. LONG lCurrentValue = 0;
  59. int iError = TSSCANF(szPropertyValue,"%d",&lCurrentValue);
  60. EditPropDlg.SetPropertyValidValues(lCurrentValue);
  61. }
  62. nResponse = (UINT)EditPropDlg.DoModal();
  63. m_szPropertyValue = EditPropDlg.m_szPropertyValue;
  64. } else if(m_ulAttributes & WIA_PROP_RANGE){
  65. CWiaeditproprange EditPropDlg;
  66. EditPropDlg.SetPropertyName(szPropertyName);
  67. EditPropDlg.SetPropertyValue(szPropertyValue);
  68. VALID_RANGE_VALUES ValidValues;
  69. ValidValues.lMin = m_pPropVar->caul.pElems[WIA_RANGE_MIN];
  70. ValidValues.lMax = m_pPropVar->caul.pElems[WIA_RANGE_MAX];
  71. ValidValues.lNom = m_pPropVar->caul.pElems[WIA_RANGE_NOM];
  72. ValidValues.lInc = m_pPropVar->caul.pElems[WIA_RANGE_STEP];
  73. EditPropDlg.SetPropertyValidValues(&ValidValues);
  74. nResponse = (UINT)EditPropDlg.DoModal();
  75. m_szPropertyValue = EditPropDlg.m_szPropertyValue;
  76. }
  77. return nResponse;
  78. }
  79. void CWiaeditpropDlg::SetAttributes(ULONG ulAttributes, PROPVARIANT *pPropVar)
  80. {
  81. m_pPropVar = pPropVar;
  82. m_ulAttributes = ulAttributes;
  83. }
  84. void CWiaeditpropDlg::GetPropertyValue(TCHAR *szPropertyValue)
  85. {
  86. lstrcpy(szPropertyValue,m_szPropertyValue.GetBuffer(MAX_PATH));
  87. }
  88. void CWiaeditpropDlg::SetVarType(VARTYPE vt)
  89. {
  90. m_vt = vt;
  91. }
  92. VARTYPE CWiaeditpropDlg::GetVarType()
  93. {
  94. return m_vt;
  95. }