ItemStatusDlg.cpp
上传用户:fuyouda
上传日期:2015-08-19
资源大小:6876k
文件大小:2k
源码类别:

家庭/个人应用

开发平台:

Visual C++

  1. // ItemStatusDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "DAC_VCDEMO.h"
  5. #include "ItemStatusDlg.h"
  6. #include "DACLTSDK.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // ItemStatusDlg dialog
  14. ItemStatusDlg::ItemStatusDlg(CWnd* pParent /*=NULL*/)
  15. : CDialog(ItemStatusDlg::IDD, pParent)
  16. {
  17. //{{AFX_DATA_INIT(ItemStatusDlg)
  18. // NOTE: the ClassWizard will add member initialization here
  19. //}}AFX_DATA_INIT
  20. }
  21. void ItemStatusDlg::DoDataExchange(CDataExchange* pDX)
  22. {
  23. CDialog::DoDataExchange(pDX);
  24. //{{AFX_DATA_MAP(ItemStatusDlg)
  25. DDX_Control(pDX, IDC_LIST, m_List);
  26. //}}AFX_DATA_MAP
  27. }
  28. BEGIN_MESSAGE_MAP(ItemStatusDlg, CDialog)
  29. //{{AFX_MSG_MAP(ItemStatusDlg)
  30. ON_BN_CLICKED(IDRefresh, OnRefresh)
  31. ON_WM_SHOWWINDOW()
  32. //}}AFX_MSG_MAP
  33. END_MESSAGE_MAP()
  34. /////////////////////////////////////////////////////////////////////////////
  35. // ItemStatusDlg message handlers
  36. void ItemStatusDlg::OnRefresh() 
  37. {
  38. int Count,I;
  39. VARIANT IDList, DatatypeList, DescList;
  40. m_List.DeleteAllItems();
  41. VariantInit(&IDList);
  42. VariantInit(&DatatypeList);
  43. VariantInit(&DescList);
  44. Count=ASDAC_GetItemProperties(ServerHandle, ItemName, &IDList, &DatatypeList, &DescList);
  45. if(Count>0)
  46. {
  47. COleSafeArray ID, DESC;
  48. BSTR *pbDesc;
  49. DWORD *pbID;
  50. ID.Attach(IDList);
  51. ID.AccessData((LPVOID*)&pbID);
  52. DESC.Attach(DescList);
  53. DESC.AccessData((LPVOID*)&pbDesc);
  54. for(I=0;I<Count;I++)
  55. {
  56. VARIANT v;
  57. VariantInit(&v);
  58. if(ASDAC_GetItemPropertyValue(ServerHandle, ItemName, pbID[I], &v))
  59. {
  60. CString strText=pbDesc[I];
  61. int nIndex=m_List.InsertItem(0xFFFF, strText);
  62. if(nIndex>-1)
  63. {
  64. m_List.SetItemText(nIndex,1,VariantToString(v));
  65. }
  66. }
  67. }
  68. ID.Detach();
  69. DESC.Detach();
  70. }
  71. }
  72. void ItemStatusDlg::OnShowWindow(BOOL bShow, UINT nStatus) 
  73. {
  74. CDialog::OnShowWindow(bShow, nStatus);
  75. m_List.InsertColumn(0,"Name",LVCFMT_LEFT,200,-1);
  76. m_List.InsertColumn(1,"Value",LVCFMT_LEFT,120,-1);
  77. OnRefresh();
  78. }