NewNode.cpp
上传用户:shgx688
上传日期:2009-12-27
资源大小:855k
文件大小:4k
源码类别:

SNMP编程

开发平台:

MultiPlatform

  1. // NewNode.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "snmp_cwdm.h"
  5. #include "NewNode.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CNewNode dialog
  13. CNewNode::CNewNode(CWnd* pParent /*=NULL*/)
  14. : CDialog(CNewNode::IDD, pParent)
  15. {
  16. //{{AFX_DATA_INIT(CNewNode)
  17. m_text = _T("");
  18. m_data = 0;
  19. m_nButtonMode = -1;
  20. //}}AFX_DATA_INIT
  21. }
  22. void CNewNode::DoDataExchange(CDataExchange* pDX)
  23. {
  24. CDialog::DoDataExchange(pDX);
  25. //{{AFX_DATA_MAP(CNewNode)
  26. DDX_Text(pDX, IDC_NEW, m_text);
  27. DDX_Text(pDX, IDC_DATA, m_data);
  28. DDX_Radio(pDX, IDC_BEFORE, m_nButtonMode);
  29. //}}AFX_DATA_MAP
  30. }
  31. BEGIN_MESSAGE_MAP(CNewNode, CDialog)
  32. //{{AFX_MSG_MAP(CNewNode)
  33. ON_EN_CHANGE(IDC_NEW, OnChangeNew)
  34. //}}AFX_MSG_MAP
  35. END_MESSAGE_MAP()
  36. /////////////////////////////////////////////////////////////////////////////
  37. // CNewNode message handlers
  38. void CNewNode::OnChangeNew() 
  39. {
  40. //SAMPLE: if the IDC_NEW becomes empty, disable the OK button
  41. CEdit* pEdit = (CEdit*) GetDlgItem(IDC_NEW);
  42. // ASSERT(pEdit != NULL);
  43. int n = pEdit->GetWindowTextLength();
  44. GetDlgItem(IDOK)->EnableWindow((n != 0));
  45. }
  46. void CNewNode::OnOK() 
  47. {
  48. //SAMPLE: when the user presses OK, decide what to do
  49. UpdateData(TRUE);
  50. // ASSERT(m_pTreeCtrl != NULL);
  51. HTREEITEM hSelected = m_pTreeCtrl->GetSelectedItem();
  52. CString str;
  53. GetDlgItemText(IDC_NEW, str);
  54. HTREEITEM hParent = m_pTreeCtrl->GetParentItem(hSelected);
  55. if (hParent == NULL)
  56. hParent = TVI_ROOT;
  57. //SAMPLE: insert at root
  58. if (m_nButtonMode == 3)
  59. {
  60. m_pTreeCtrl->InsertItem(TVIF_HANDLE ,str,1,1,0,0,m_data,TVI_ROOT, m_nInsertMethod);
  61. }
  62. //HTREEITEM InsertItem(UINT nMask, LPCTSTR lpszItem, int nImage, int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam, HTREEITEM hParent, HTREEITEM hInsertAfter );
  63. //SAMPLE: insert after this item
  64. else if (m_nButtonMode == 1)
  65. {
  66. HTREEITEM temp;
  67. temp=m_pTreeCtrl->InsertItem(str,hParent, hSelected);
  68. m_pTreeCtrl->SetItemData(temp,m_data);
  69. }
  70. //SAMPLE: insert before the selected item
  71. else if (m_nButtonMode == 0)
  72. {
  73. HTREEITEM hAfter = m_pTreeCtrl->GetPrevSiblingItem(hSelected);
  74. if (hAfter == NULL)
  75. hAfter = TVI_FIRST;
  76.         HTREEITEM temp;
  77. temp=m_pTreeCtrl->InsertItem(str,hParent, hAfter);
  78.         m_pTreeCtrl->SetItemData(temp,m_data);
  79. }
  80. //SAMPLE: insert as child of the selected item
  81. else
  82. {
  83. HTREEITEM temp;
  84. temp= m_pTreeCtrl->InsertItem(str,hSelected, TVI_FIRST);
  85. m_pTreeCtrl->SetItemData(temp,m_data);
  86. }
  87. CDialog::OnOK();
  88. }
  89. BOOL CNewNode::OnInitDialog() 
  90. {
  91. //SAMPLE: we'd better have an associated tree control!
  92. // ASSERT(m_pTreeCtrl != NULL);
  93. //SAMPLE: what's selected in our control?
  94. HTREEITEM hSelected = m_pTreeCtrl->GetSelectedItem();
  95. //SAMPLE: if nothing, must insert at root
  96. // otherwise, it's the user's choice.
  97. if (hSelected == NULL)
  98. {
  99. m_nInsertMethod = TVI_ROOT;
  100. GetDlgItem(IDC_BEFORE)->EnableWindow(FALSE);
  101. GetDlgItem(IDC_AFTER)->EnableWindow(FALSE);
  102. GetDlgItem(IDC_CHILD)->EnableWindow(FALSE);
  103. SetDlgItemText(IDC_CURRENT, _T("No current item; must insert as root item!"));
  104. m_nButtonMode = 3;
  105. }
  106. else
  107. {
  108. char sz[1024];
  109. TVITEM item;
  110. item.mask = TVIF_TEXT;
  111. item.pszText = sz;
  112. item.cchTextMax = 1024;
  113. item.hItem = hSelected;
  114. if (m_pTreeCtrl->GetItem(&item))
  115. SetDlgItemText(IDC_CURRENT, item.pszText);
  116. else
  117. {
  118. MessageBox(_T("Error retieving current text!"));
  119. EndDialog(IDCANCEL);
  120. }
  121. }
  122. //SAMPLE: initialize the rest of the controls
  123. CEdit* pEdit = (CEdit*) GetDlgItem(IDC_NEW);
  124. // ASSERT(pEdit != NULL);
  125. pEdit->SetLimitText(1024);
  126. pEdit->SetWindowText(_T("New Item"));
  127. //SAMPLE: don't forget to call the base class!
  128. CDialog::OnInitDialog();
  129. //SAMPLE: we set focus for ourselves, so return FALSE
  130. pEdit->SetFocus();
  131. return FALSE;
  132. }